~hikiko/nux/arb-srgba-shader

« back to all changes in this revision

Viewing changes to Nux/MenuBar.cpp

  • Committer: Travis Watkins
  • Date: 2011-08-03 10:34:36 UTC
  • mfrom: (409 nux-logger-fix)
  • mto: (454.5.1 nux-gles)
  • mto: This revision was merged to the branch mainline in revision 501.
  • Revision ID: travis.watkins@linaro.org-20110803103436-biz9c9930l2refsi
merge with lp:nux

Show diffs side-by-side

added added

removed removed

Lines of Context:
267
267
      menubar_item->area->SetMinMaxSize (MENUBAR_ICON_WIDTH, MENUBAR_ICON_HEIGHT);
268
268
    }
269
269
 
270
 
    menubar_item->area->OnMouseEnter.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseEnter), menubar_item) );
271
 
    menubar_item->area->OnMouseLeave.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseLeave), menubar_item) );
272
 
    menubar_item->area->OnMouseDown.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseDown), menubar_item) );
273
 
    menubar_item->area->OnMouseDrag.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::RecvItemMouseDrag), menubar_item) );
274
 
    menubar_item->area->OnMouseUp.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseUp), menubar_item) );
 
270
    menubar_item->area->mouse_enter.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseEnter), menubar_item) );
 
271
    menubar_item->area->mouse_leave.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseLeave), menubar_item) );
 
272
    menubar_item->area->mouse_down.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseDown), menubar_item) );
 
273
    menubar_item->area->mouse_drag.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::RecvItemMouseDrag), menubar_item) );
 
274
    menubar_item->area->mouse_up.connect (sigc::bind ( sigc::mem_fun (this, &MenuBar::EmitItemMouseUp), menubar_item) );
275
275
 
276
276
    menubar_item->menu->SetParentMenu (0);
277
277
    menubar_item->menu->sigActionTriggered.connect (sigc::mem_fun (this, &MenuBar::RecvSigActionTriggered) );
299
299
      m_IsOpeningMenu = true;
300
300
    }
301
301
 
302
 
    NeedRedraw();
 
302
    QueueDraw();
303
303
  }
304
304
 
305
305
  void MenuBar::EmitItemMouseLeave (int x, int y, unsigned long button_flags, unsigned long key_flags, MenuBarItem *menubar_item)
306
306
  {
307
 
    NeedRedraw();
 
307
    QueueDraw();
308
308
  }
309
309
  void MenuBar::EmitItemMouseDown (int x, int y, unsigned long button_flags, unsigned long key_flags, MenuBarItem *menubar_item)
310
310
  {
335
335
      m_IsOpeningMenu = false;
336
336
    }
337
337
 
338
 
    NeedRedraw ();
 
338
    QueueDraw ();
339
339
  }
340
340
 
341
341
  void MenuBar::EmitItemMouseUp (int x, int y, unsigned long button_flags, unsigned long key_flags, MenuBarItem *menubar_item)
372
372
      }
373
373
    }
374
374
 
375
 
    NeedRedraw();
 
375
    QueueDraw();
376
376
  }
377
377
 
378
378
  void MenuBar::RecvItemMouseDrag (int x, int y, int dx, int dy, unsigned long button_flags, unsigned long key_flags, MenuBarItem *menubar_item)
379
379
  {
380
 
    // Transition between one menu bar item to another
381
 
    if (GetWindowCompositor().GetMouseFocusArea() == menubar_item->area)
382
 
    {
383
 
      if (!menubar_item->area->IsMouseInside() ) // can also test GetWindowCompositor().GetMouseOverArea() != &menubar_item->area
384
 
      {
385
 
        std::list< MenuBarItem * >::iterator it;
386
 
        // compute window coordinates x and y;
387
 
        int winx = menubar_item->area->GetBaseX() + x;
388
 
        int winy = menubar_item->area->GetBaseY() + y;
389
 
 
390
 
        for (it = m_MenuBarItemList.begin(); it != m_MenuBarItemList.end(); it++)
391
 
        {
392
 
          InputArea *area = (*it)->area;
393
 
          Geometry geometry = area->GetGeometry();
394
 
 
395
 
          if (geometry.IsPointInside (winx, winy) )
396
 
          {
397
 
            // Close the menu below menubar_item (the one that has the focus
398
 
            menubar_item->area->ForceStopFocus (0, 0);
399
 
 
400
 
            // EmitItemMouseEnter is going to open the menu below (*it)
401
 
            {
402
 
              EmitItemMouseEnter (winx, winy, button_flags, key_flags, (*it) );
403
 
              m_IsOpeningMenu = true;
404
 
              area->ForceStartFocus (0, 0);
405
 
 
406
 
              GetWindowCompositor().SetMouseFocusArea (area);
407
 
              GetWindowCompositor().SetMouseOverArea (area);
408
 
            }
409
 
 
410
 
            break;
411
 
          }
412
 
        }
413
 
      }
414
 
    }
 
380
    // TODO: Port to new event architecture
 
381
//     // Transition between one menu bar item to another
 
382
//     if (GetWindowCompositor().GetMouseFocusArea() == menubar_item->area)
 
383
//     {
 
384
//       if (!menubar_item->area->IsMouseInside() ) // can also test GetWindowCompositor().GetMouseOverArea() != &menubar_item->area
 
385
//       {
 
386
//         std::list< MenuBarItem * >::iterator it;
 
387
//         // compute window coordinates x and y;
 
388
//         int winx = menubar_item->area->GetBaseX() + x;
 
389
//         int winy = menubar_item->area->GetBaseY() + y;
 
390
// 
 
391
//         for (it = m_MenuBarItemList.begin(); it != m_MenuBarItemList.end(); it++)
 
392
//         {
 
393
//           InputArea *area = (*it)->area;
 
394
//           Geometry geometry = area->GetGeometry();
 
395
// 
 
396
//           if (geometry.IsPointInside (winx, winy) )
 
397
//           {
 
398
//             // Close the menu below menubar_item (the one that has the focus
 
399
//             menubar_item->area->ForceStopFocus (0, 0);
 
400
// 
 
401
//             // EmitItemMouseEnter is going to open the menu below (*it)
 
402
//             {
 
403
//               EmitItemMouseEnter (winx, winy, button_flags, key_flags, (*it) );
 
404
//               m_IsOpeningMenu = true;
 
405
//               area->ForceStartFocus (0, 0);
 
406
// 
 
407
//               GetWindowCompositor().SetMouseFocusArea (area);
 
408
//               GetWindowCompositor().SetMouseOverArea (area);
 
409
//             }
 
410
// 
 
411
//             break;
 
412
//           }
 
413
//         }
 
414
//       }
 
415
//     }
415
416
  }
416
417
 
417
418
  void MenuBar::RecvSigActionTriggered (MenuPage *menu, ActionItem *action)
421
422
    if (m_CurrentMenu)
422
423
    {
423
424
      m_CurrentMenu->menu->StopMenu();
424
 
      NeedRedraw();
 
425
      QueueDraw();
425
426
    }
426
427
 
427
428
    m_CurrentMenu = 0;
443
444
    m_CurrentMenu = 0;
444
445
    m_IsOpeningMenu = false;
445
446
 
446
 
    NeedRedraw();
 
447
    QueueDraw();
447
448
  }
448
449
 
449
450
  void MenuBar::RecvSigMouseDownOutsideMenuCascade (MenuPage *menu, int x, int y)