From bc974910ec91c34d8890a6828f9d012f8d40d430 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 11 Oct 2018 14:40:20 +0200 Subject: [PATCH] Implement setting bitmaps for the menu item for wxQt Closes https://github.com/wxWidgets/wxWidgets/pull/975 --- docs/changes.txt | 1 + include/wx/qt/menuitem.h | 7 +++++-- src/qt/menuitem.cpp | 21 ++++++++++----------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3278de9e9d..f35cb268d6 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -166,6 +166,7 @@ wxOSX: wxQt: - Fix menu bar background colour (Naser Buhamad). +- Add support for bitmaps in menu items (Igor Korot). 3.1.1: (released 2018-02-19) diff --git a/include/wx/qt/menuitem.h b/include/wx/qt/menuitem.h index 158007fc4e..769f4a9e8e 100644 --- a/include/wx/qt/menuitem.h +++ b/include/wx/qt/menuitem.h @@ -9,6 +9,8 @@ #define _WX_QT_MENUITEM_H_ #include "wx/menuitem.h" +#include "wx/bitmap.h" + class QAction; class WXDLLIMPEXP_FWD_CORE wxBitmap; @@ -33,14 +35,15 @@ public: virtual void Check(bool check = true); virtual bool IsChecked() const; - void SetBitmap(const wxBitmap& bitmap); - const wxBitmap& GetBitmap() const; + virtual void SetBitmap(const wxBitmap& bitmap); + virtual const wxBitmap& GetBitmap() const { return m_bitmap; }; virtual QAction *GetHandle() const; private: // Qt is using an action instead of a menu item. QAction *m_qtAction; + wxBitmap m_bitmap; wxDECLARE_DYNAMIC_CLASS( wxMenuItem ); }; diff --git a/src/qt/menuitem.cpp b/src/qt/menuitem.cpp index eab049e342..6ce89dc5be 100644 --- a/src/qt/menuitem.cpp +++ b/src/qt/menuitem.cpp @@ -106,18 +106,17 @@ bool wxMenuItem::IsChecked() const } -void wxMenuItem::SetBitmap(const wxBitmap& WXUNUSED(bitmap)) +void wxMenuItem::SetBitmap(const wxBitmap& bitmap) { - wxMISSING_FUNCTION(); -} - -const wxBitmap &wxMenuItem::GetBitmap() const -{ - wxMISSING_FUNCTION(); - - static wxBitmap s_bitmap; - - return s_bitmap; + if ( m_kind == wxITEM_NORMAL ) + { + m_bitmap = bitmap; + m_qtAction->setIcon( QIcon( *m_bitmap.GetHandle() ) ); + } + else + { + wxFAIL_MSG("only normal menu items can have bitmaps"); + } } QAction *wxMenuItem::GetHandle() const