added wxTaskBarIcon::CreatePopupMenu API
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -99,6 +99,12 @@ OTHER CHANGES
|
|||||||
2.5.3
|
2.5.3
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
All (GUI):
|
||||||
|
|
||||||
|
- added wxTaskBarIcon::CreatePopupMenu which is now recommended way
|
||||||
|
of showing popup menu; calling wxTaskBarIcon::PopupMenu directly
|
||||||
|
is discouraged
|
||||||
|
|
||||||
Unix:
|
Unix:
|
||||||
|
|
||||||
- wxTaskBarIcon now supports freedesktop.org System Tray protocol
|
- wxTaskBarIcon now supports freedesktop.org System Tray protocol
|
||||||
@@ -107,7 +113,7 @@ Unix:
|
|||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
- fixed wrong colour of tooltips under some themes
|
- fixed wrong colour of tooltips under some themes
|
||||||
|
- implemented wxColourDialog as native dialog
|
||||||
|
|
||||||
|
|
||||||
2.5.2
|
2.5.2
|
||||||
|
@@ -33,7 +33,10 @@ be on by default.
|
|||||||
\wxheading{Event handling}
|
\wxheading{Event handling}
|
||||||
|
|
||||||
To process input from a taskbar icon, use the following event handler macros to direct input to member
|
To process input from a taskbar icon, use the following event handler macros to direct input to member
|
||||||
functions that take a wxTaskBarIconEvent argument.
|
functions that take a wxTaskBarIconEvent argument. Note that not all ports are
|
||||||
|
required to send these events and so it's better to override
|
||||||
|
\helpref{CreatePopupMenu}{wxtaskbariconcreatepopupmenu} if all that
|
||||||
|
the application does is that it shows a popup menu in reaction to mouse click.
|
||||||
|
|
||||||
\twocolwidtha{7cm}
|
\twocolwidtha{7cm}
|
||||||
\begin{twocollist}\itemsep=0pt
|
\begin{twocollist}\itemsep=0pt
|
||||||
@@ -67,6 +70,19 @@ Default constructor.
|
|||||||
|
|
||||||
Destroys the wxTaskBarIcon object, removing the icon if not already removed.
|
Destroys the wxTaskBarIcon object, removing the icon if not already removed.
|
||||||
|
|
||||||
|
\membersection{wxTaskBarIcon::CreatePopupMenu}\label{wxtaskbariconcreatepopupmenu}
|
||||||
|
|
||||||
|
\func{virtual wxMenu*}{CreatePopupMenu}{\void}
|
||||||
|
|
||||||
|
This method is called by the library when the user requests popup menu
|
||||||
|
(on Windows and Unix platforms, this is when the user right-clicks the icon).
|
||||||
|
Override this function in order to provide popup menu associated with the icon.
|
||||||
|
|
||||||
|
If CreatePopupIcon returns NULL (this happens by default),
|
||||||
|
no menu is shown, otherwise the menu is
|
||||||
|
displayed and then deleted by the library as soon as the user dismisses it.
|
||||||
|
The events can be handled by a class derived from wxTaskBarIcon.
|
||||||
|
|
||||||
\membersection{wxTaskBarIcon::IsIconInstalled}\label{wxtaskbariconisiconinstalled}
|
\membersection{wxTaskBarIcon::IsIconInstalled}\label{wxtaskbariconisiconinstalled}
|
||||||
|
|
||||||
\func{bool}{IsIconInstalled}{\void}
|
\func{bool}{IsIconInstalled}{\void}
|
||||||
@@ -86,6 +102,13 @@ Returns true if the object initialized successfully.
|
|||||||
Pops up a menu at the current mouse position. The events can be handled by
|
Pops up a menu at the current mouse position. The events can be handled by
|
||||||
a class derived from wxTaskBarIcon.
|
a class derived from wxTaskBarIcon.
|
||||||
|
|
||||||
|
\wxheading{Note}
|
||||||
|
|
||||||
|
It is recommended to override
|
||||||
|
\helpref{CreatePopupIcon}{wxtaskbariconcreatepopupmenu}
|
||||||
|
callback instead of calling this method from event handler, because some
|
||||||
|
ports (e.g. wxCocoa) may not implement PopupMenu and mouse click events at all.
|
||||||
|
|
||||||
\membersection{wxTaskBarIcon::RemoveIcon}\label{wxtaskbariconremoveicon}
|
\membersection{wxTaskBarIcon::RemoveIcon}\label{wxtaskbariconremoveicon}
|
||||||
|
|
||||||
\func{bool}{RemoveIcon}{\void}
|
\func{bool}{RemoveIcon}{\void}
|
||||||
|
@@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
#include "wx/event.h"
|
#include "wx/event.h"
|
||||||
|
|
||||||
|
class WXDLLIMPEXP_ADV wxTaskBarIconEvent;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxTaskBarIconBase: define wxTaskBarIcon interface
|
// wxTaskBarIconBase: define wxTaskBarIcon interface
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -16,7 +18,21 @@ class WXDLLIMPEXP_ADV wxTaskBarIconBase : public wxEvtHandler
|
|||||||
public:
|
public:
|
||||||
wxTaskBarIconBase() { }
|
wxTaskBarIconBase() { }
|
||||||
|
|
||||||
|
// Operations:
|
||||||
|
virtual bool SetIcon(const wxIcon& icon,
|
||||||
|
const wxString& tooltip = wxEmptyString) = 0;
|
||||||
|
virtual bool RemoveIcon() = 0;
|
||||||
|
virtual bool PopupMenu(wxMenu *menu) = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// creates menu to be displayed when user clicks on the icon
|
||||||
|
virtual wxMenu *CreatePopupMenu() { return NULL; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// default events handling, calls CreatePopupMenu:
|
||||||
|
void OnRightButtonDown(wxEvent& event);
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
DECLARE_NO_COPY_CLASS(wxTaskBarIconBase)
|
DECLARE_NO_COPY_CLASS(wxTaskBarIconBase)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -110,7 +110,6 @@ BEGIN_EVENT_TABLE(MyTaskBarIcon, wxTaskBarIcon)
|
|||||||
EVT_MENU(PU_RESTORE, MyTaskBarIcon::OnMenuRestore)
|
EVT_MENU(PU_RESTORE, MyTaskBarIcon::OnMenuRestore)
|
||||||
EVT_MENU(PU_EXIT, MyTaskBarIcon::OnMenuExit)
|
EVT_MENU(PU_EXIT, MyTaskBarIcon::OnMenuExit)
|
||||||
EVT_MENU(PU_NEW_ICON,MyTaskBarIcon::OnMenuSetNewIcon)
|
EVT_MENU(PU_NEW_ICON,MyTaskBarIcon::OnMenuSetNewIcon)
|
||||||
EVT_TASKBAR_RIGHT_DOWN (MyTaskBarIcon::OnRButtonDown)
|
|
||||||
EVT_TASKBAR_LEFT_DCLICK (MyTaskBarIcon::OnLButtonDClick)
|
EVT_TASKBAR_LEFT_DCLICK (MyTaskBarIcon::OnLButtonDClick)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
@@ -138,15 +137,15 @@ void MyTaskBarIcon::OnMenuSetNewIcon(wxCommandEvent&)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Overridables
|
// Overridables
|
||||||
void MyTaskBarIcon::OnRButtonDown(wxEvent&)
|
wxMenu *MyTaskBarIcon::CreatePopupMenu()
|
||||||
{
|
{
|
||||||
wxMenu menu;
|
wxMenu *menu = new wxMenu;
|
||||||
|
|
||||||
menu.Append(PU_RESTORE, _T("&Restore TBTest"));
|
menu->Append(PU_RESTORE, _T("&Restore TBTest"));
|
||||||
menu.Append(PU_NEW_ICON,_T("&Set New Icon"));
|
menu->Append(PU_NEW_ICON,_T("&Set New Icon"));
|
||||||
menu.Append(PU_EXIT, _T("E&xit"));
|
menu->Append(PU_EXIT, _T("E&xit"));
|
||||||
|
|
||||||
PopupMenu(&menu);
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyTaskBarIcon::OnLButtonDClick(wxEvent&)
|
void MyTaskBarIcon::OnLButtonDClick(wxEvent&)
|
||||||
|
@@ -14,12 +14,13 @@ class MyTaskBarIcon: public wxTaskBarIcon
|
|||||||
public:
|
public:
|
||||||
MyTaskBarIcon() {};
|
MyTaskBarIcon() {};
|
||||||
|
|
||||||
void OnRButtonDown(wxEvent&);
|
|
||||||
void OnLButtonDClick(wxEvent&);
|
void OnLButtonDClick(wxEvent&);
|
||||||
void OnMenuRestore(wxCommandEvent&);
|
void OnMenuRestore(wxCommandEvent&);
|
||||||
void OnMenuExit(wxCommandEvent&);
|
void OnMenuExit(wxCommandEvent&);
|
||||||
void OnMenuSetNewIcon(wxCommandEvent&);
|
void OnMenuSetNewIcon(wxCommandEvent&);
|
||||||
|
|
||||||
|
virtual wxMenu *CreatePopupMenu();
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -35,4 +35,19 @@ DEFINE_EVENT_TYPE( wxEVT_TASKBAR_RIGHT_UP )
|
|||||||
DEFINE_EVENT_TYPE( wxEVT_TASKBAR_LEFT_DCLICK )
|
DEFINE_EVENT_TYPE( wxEVT_TASKBAR_LEFT_DCLICK )
|
||||||
DEFINE_EVENT_TYPE( wxEVT_TASKBAR_RIGHT_DCLICK )
|
DEFINE_EVENT_TYPE( wxEVT_TASKBAR_RIGHT_DCLICK )
|
||||||
|
|
||||||
#endif //def wxHAS_TASK_BAR_ICON
|
|
||||||
|
BEGIN_EVENT_TABLE(wxTaskBarIconBase, wxEvtHandler)
|
||||||
|
EVT_TASKBAR_RIGHT_DOWN(wxTaskBarIconBase::OnRightButtonDown)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
void wxTaskBarIconBase::OnRightButtonDown(wxEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxMenu *menu = CreatePopupMenu();
|
||||||
|
if (menu)
|
||||||
|
{
|
||||||
|
PopupMenu(menu);
|
||||||
|
delete menu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // defined(wxHAS_TASK_BAR_ICON)
|
||||||
|
Reference in New Issue
Block a user