//---------------------------------------------------------------------------------------------------- CMouseEventResult UIViewCreatorDataSource::dbOnMouseDown (const CPoint& where, const CButtonState& buttons, int32_t row, int32_t column, CDataBrowser* browser) { mouseDownRow = row; if (buttons.isLeftButton ()) { if (!buttons.isDoubleClick ()) return kMouseEventHandled; addViewToCurrentEditView (); } else if (buttons.isRightButton ()) { const std::string& viewName = getStringList ()->at (static_cast<uint32_t> (mouseDownRow)); std::string menuEntryName = "Add a new '" + viewName + "'"; COptionMenu menu; menu.setStyle (kPopupStyle); menu.addEntry (menuEntryName.c_str ()); CPoint menuLocation (where); browser->localToFrame (menuLocation); if (menu.popup (browser->getFrame (), menuLocation)) { if (menu.getEntry (menu.getLastResult ())) addViewToCurrentEditView (); } } mouseDownRow = -1; return kMouseDownEventHandledButDontNeedMovedOrUpEvents; }
#include "../unittests.h" #include "../../../lib/cbuttonstate.h" namespace VSTGUI { TESTCASE(CButtonStateTests, TEST(test, CButtonState s; EXPECT(s.getButtonState () == 0); EXPECT(s.getModifierState () == 0); s = kLButton; EXPECT(s.isLeftButton () == true); s |= kShift; EXPECT(s.isLeftButton () == true); EXPECT(s.getModifierState () == kShift); s = kRButton; EXPECT(s.isRightButton () == true); s |= kDoubleClick; EXPECT(s.isDoubleClick () == true); EXPECT(s & CButtonState (kDoubleClick)); CButtonState s2 (s); EXPECT(s == s2); s2 = ~s; EXPECT(s != s2); ); ); } // VSTGUI