]> git.saurik.com Git - wxWidgets.git/commitdiff
added state image support (patch 530155)
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 10 Jul 2003 12:46:48 +0000 (12:46 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 10 Jul 2003 12:46:48 +0000 (12:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/treebase.h
samples/treectrl/treetest.cpp
samples/treectrl/treetest.h
src/common/treebase.cpp

index fb1734ba783e0d221f2cca5a7bbc7c6e60990de2..e0d73998cdc97e43f37be82d24f310622d5e2a6e 100644 (file)
@@ -294,6 +294,7 @@ BEGIN_DECLARE_EVENT_TYPES()
     DECLARE_EVENT_TYPE(wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK, 615)
     DECLARE_EVENT_TYPE(wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK, 616)
     DECLARE_EVENT_TYPE(wxEVT_COMMAND_TREE_END_DRAG, 617)
+    DECLARE_EVENT_TYPE(wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK, 618)
 END_DECLARE_EVENT_TYPES()
 
 // GetItem() returns the item being dragged, GetPoint() the mouse coords
@@ -346,6 +347,9 @@ END_DECLARE_EVENT_TYPES()
 #define EVT_TREE_ITEM_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ),
 #define EVT_TREE_ITEM_MIDDLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ),
 
+// GetItem() returns the item whose state image was clicked on
+#define EVT_TREE_STATE_IMAGE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ),
+
 #endif // wxUSE_TREECTRL
 
 #endif // _WX_TREEBASE_H_
index 351c59f045840d93e1c0141dbe0289de52d5ea57..a485998fb453a5277b175da977731460636131dd 100644 (file)
@@ -131,9 +131,9 @@ BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
     EVT_TREE_ITEM_EXPANDING(TreeTest_Ctrl, MyTreeCtrl::OnItemExpanding)
     EVT_TREE_ITEM_COLLAPSED(TreeTest_Ctrl, MyTreeCtrl::OnItemCollapsed)
     EVT_TREE_ITEM_COLLAPSING(TreeTest_Ctrl, MyTreeCtrl::OnItemCollapsing)
-    EVT_TREE_ITEM_RIGHT_CLICK(TreeTest_Ctrl, MyTreeCtrl::OnItemRightClick)
+    //EVT_TREE_ITEM_RIGHT_CLICK(TreeTest_Ctrl, MyTreeCtrl::OnItemRightClick)
 
-    EVT_RIGHT_UP(MyTreeCtrl::OnRMouseUp)
+    EVT_CONTEXT_MENU(MyTreeCtrl::OnContextMenu)
     EVT_TREE_SEL_CHANGED(TreeTest_Ctrl, MyTreeCtrl::OnSelChanged)
     EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging)
     EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown)
@@ -1102,10 +1102,35 @@ void MyTreeCtrl::OnItemRightClick(wxTreeEvent& event)
     ShowMenu(event.GetItem(), event.GetPoint());
 }
 
-void MyTreeCtrl::OnRMouseUp(wxMouseEvent& event)
+void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event)
 {
     wxPoint pt = event.GetPosition();
-    ShowMenu(HitTest(pt), pt);
+    wxTreeItemId item = GetSelection();
+    wxLogMessage("OnContextMenu at screen coords (%i, %i)", pt.x, pt.y);
+
+    //check if event was generated by keyboard (MSW-specific?)
+    if (pt.x==-1 && pt.y==-1) //(this is how MSW indicates it)
+    {
+        //attempt to guess where to show the menu
+        if (item.IsOk())
+        {   
+            //if an item was clicked, show menu to the right of it
+            wxRect rect;
+            GetBoundingRect(item, rect, true); //true = only the label
+            pt = wxPoint(rect.GetRight(), rect.GetTop());
+        }
+        else
+        {
+            pt = wxPoint(0, 0);
+        }
+    }
+    else
+    {
+        //event was generated by mouse, use supplied coords
+        pt = ScreenToClient(pt);
+    }
+    
+    ShowMenu(item, pt);
 }
 
 void MyTreeCtrl::ShowMenu(wxTreeItemId id, const wxPoint& pt)
index 39aa38955aa6a86ca1c78893db94816509f67447..78d1a73fe4791ef369e23022e1864f9bf0d9524c 100644 (file)
@@ -73,7 +73,7 @@ public:
     void OnBeginLabelEdit(wxTreeEvent& event);
     void OnEndLabelEdit(wxTreeEvent& event);
     void OnDeleteItem(wxTreeEvent& event);
-    void OnRMouseUp(wxMouseEvent& event);
+    void OnContextMenu(wxContextMenuEvent& event);
     void OnGetInfo(wxTreeEvent& event);
     void OnTreeRMouseClick(wxTreeEvent& event);
     void OnItemRightClick(wxTreeEvent& event);
index 656da196ac33832e7294e9dc444cc5f0a3cdf671..73bd16e5fbfb314360ceef15fe12f1ac2f772462 100644 (file)
@@ -61,6 +61,7 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_TREE_ITEM_ACTIVATED)
 DEFINE_EVENT_TYPE(wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK)
 DEFINE_EVENT_TYPE(wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK)
 DEFINE_EVENT_TYPE(wxEVT_COMMAND_TREE_END_DRAG)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK)
 
 // ----------------------------------------------------------------------------
 // Tree event