~ubuntu-branches/ubuntu/oneiric/nux/oneiric

« back to all changes in this revision

Viewing changes to Nux/LayeredLayout.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2011-08-25 13:42:45 UTC
  • mto: This revision was merged to the branch mainline in revision 43.
  • Revision ID: james.westby@ubuntu.com-20110825134245-kfz5nhs15353wcbl
Tags: upstream-1.4.0
ImportĀ upstreamĀ versionĀ 1.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
241
241
    _queued_draw = false;
242
242
  }
243
243
 
244
 
  long LayeredLayout::ProcessOne (Area   *_area,
245
 
                                  IEvent &ievent,
246
 
                                  long    traverse_info,
247
 
                                  long    process_event_info)
248
 
  {
249
 
    long ret = traverse_info;
250
 
 
251
 
    if (_area->IsArea())
252
 
    {
253
 
      InputArea *area = NUX_STATIC_CAST (InputArea *, _area);
254
 
      ret = area->OnEvent (ievent, ret, process_event_info);
255
 
    }
256
 
    else if (_area->IsView())
257
 
    {
258
 
      View *ic = NUX_STATIC_CAST (View *, _area);
259
 
      ret = ic->ProcessEvent (ievent, ret, process_event_info);
260
 
    }
261
 
    else if (_area->IsLayout())
262
 
    {
263
 
      Layout *layout = NUX_STATIC_CAST (Layout *, _area);
264
 
      ret = layout->ProcessEvent (ievent, ret, process_event_info);
265
 
    }
266
 
 
267
 
    return ret;
268
 
  }
269
 
 
270
 
  long LayeredLayout::ProcessEvent (IEvent &ievent, long traverse_info, long process_event_info)
271
 
  {
272
 
    long ret = traverse_info;
273
 
 
274
 
    if (m_input_mode == INPUT_MODE_ACTIVE)
275
 
    {
276
 
      if (m_active_area && m_active_area->IsVisible () && m_active_area->IsSensitive ())
277
 
        ret = ProcessOne (m_active_area, ievent, ret, process_event_info);
278
 
    }
279
 
    else
280
 
    {
281
 
      std::list<Area *>::reverse_iterator it, eit = _layout_element_list.rend ();
282
 
 
283
 
      for (it = _layout_element_list.rbegin (); it != eit; ++it)
284
 
      {
285
 
        Area *area = (*it);
286
 
 
287
 
        if (area->IsVisible () && area->IsSensitive ())
288
 
        {
289
 
          ret = ProcessOne (area, ievent, ret, process_event_info);
290
 
        }
291
 
      }
292
 
    }
293
 
    return ret;
294
 
  }
295
 
  
296
244
  Area* LayeredLayout::FindAreaUnderMouse(const Point& mouse_position, NuxEventType event_type)
297
245
  {
298
246
    if(m_active_area == NULL)