added support for drop down toolbar buttons (patch 1713470)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45987 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -1862,6 +1862,7 @@ enum wxItemKind | ||||
|     wxITEM_NORMAL, | ||||
|     wxITEM_CHECK, | ||||
|     wxITEM_RADIO, | ||||
|     wxITEM_DROPDOWN, | ||||
|     wxITEM_MAX | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -155,6 +155,9 @@ BEGIN_DECLARE_EVENT_TYPES() | ||||
|     DECLARE_EVENT_TYPE(wxEVT_COMMAND_TOOL_ENTER, 17) | ||||
|     DECLARE_EVENT_TYPE(wxEVT_COMMAND_SPINCTRL_UPDATED, 18) | ||||
|  | ||||
|     // Toolbar dropdown arrows | ||||
|     DECLARE_EVENT_TYPE(wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED, 19) | ||||
|  | ||||
|         // Sockets and timers send events, too | ||||
|     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_SOCKET, 50) | ||||
|     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_TIMER , 80) | ||||
| @@ -2988,6 +2991,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent& | ||||
| #define EVT_VLBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_VLBOX_SELECTED, winid, wxCommandEventHandler(func)) | ||||
| #define EVT_COMBOBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_COMBOBOX_SELECTED, winid, wxCommandEventHandler(func)) | ||||
| #define EVT_TOOL(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TOOL_CLICKED, winid, wxCommandEventHandler(func)) | ||||
| #define EVT_TOOL_DROPDOWN(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED, winid, wxCommandEventHandler(func)) | ||||
| #define EVT_TOOL_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_COMMAND_TOOL_CLICKED, id1, id2, wxCommandEventHandler(func)) | ||||
| #define EVT_TOOL_RCLICKED(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TOOL_RCLICKED, winid, wxCommandEventHandler(func)) | ||||
| #define EVT_TOOL_RCLICKED_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_COMMAND_TOOL_RCLICKED, id1, id2, wxCommandEventHandler(func)) | ||||
|   | ||||
| @@ -71,7 +71,8 @@ public: | ||||
|                       const wxString& longHelpString = wxEmptyString) | ||||
|         : m_label(label), | ||||
|           m_shortHelpString(shortHelpString), | ||||
|           m_longHelpString(longHelpString) | ||||
|           m_longHelpString(longHelpString), | ||||
|           m_dropdownMenu(NULL) | ||||
|     { | ||||
|         m_tbar = tbar; | ||||
|         m_id = toolid; | ||||
| @@ -106,9 +107,11 @@ public: | ||||
|         m_toggled = false; | ||||
|  | ||||
|         m_toolStyle = wxTOOL_STYLE_CONTROL; | ||||
|  | ||||
|         m_dropdownMenu = 0; | ||||
|     } | ||||
|  | ||||
|     virtual ~wxToolBarToolBase(){} | ||||
|     virtual ~wxToolBarToolBase(); | ||||
|  | ||||
|     // accessors | ||||
|     // --------- | ||||
| @@ -197,6 +200,11 @@ public: | ||||
|     virtual void Detach() { m_tbar = (wxToolBarBase *)NULL; } | ||||
|     virtual void Attach(wxToolBarBase *tbar) { m_tbar = tbar; } | ||||
|  | ||||
|     // these methods are only for tools of wxITEM_DROPDOWN kind (but even such | ||||
|     // tools can have a NULL associated menu) | ||||
|     void SetDropdownMenu(wxMenu *menu); | ||||
|     wxMenu *GetDropdownMenu() const { return m_dropdownMenu; } | ||||
|  | ||||
| protected: | ||||
|     wxToolBarBase *m_tbar;  // the toolbar to which we belong (may be NULL) | ||||
|  | ||||
| @@ -227,6 +235,8 @@ protected: | ||||
|     wxString m_shortHelpString; | ||||
|     wxString m_longHelpString; | ||||
|  | ||||
|     wxMenu *m_dropdownMenu; | ||||
|  | ||||
|     DECLARE_DYNAMIC_CLASS_NO_COPY(wxToolBarToolBase) | ||||
| }; | ||||
|  | ||||
| @@ -525,6 +535,9 @@ public: | ||||
|     // don't want toolbars to accept the focus | ||||
|     virtual bool AcceptsFocus() const { return false; } | ||||
|  | ||||
|     // Set dropdown menu | ||||
|     bool SetDropdownMenu(int toolid, wxMenu *menu); | ||||
|  | ||||
| protected: | ||||
|     // to implement in derived classes | ||||
|     // ------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user