- Add expand/collapse button to wxRibbonBar (rakeshthp).
- Fix item data access in wxDataViewListCtrl (Kry).
- Fix problem with floating maximized AUI panes (Laurent Poujoulat).
+- Add wxBitmapButton::NewCloseButton().
wxGTK:
#define wxHAS_BUTTON_BITMAP
#endif
+class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
+
// ----------------------------------------------------------------------------
// wxBitmapButton: a button which shows bitmaps instead of the usual string.
// It has different bitmaps for different states (focused/disabled/pressed)
validator, name);
}
+ // Special creation function for a standard "Close" bitmap. It allows to
+ // simply create a close button with the image appropriate for the common
+ // platform.
+ static wxBitmapButton* NewCloseButton(wxWindow* parent, wxWindowID winid);
+
+
// set/get the margins around the button
virtual void SetMargins(int x, int y)
{
long style = wxBU_AUTODRAW,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxButtonNameStr);
+
+ /**
+ Helper function creating a standard-looking "Close" button.
+
+ To get the best results, platform-specific code may need to be used to
+ create a small, title bar-like "Close" button. This function is
+ provided to avoid the need to test for the current platform and creates
+ the button with as native look as possible.
+
+ @param parent The button parent window, must be non-@NULL.
+ @param winid The identifier for the new button.
+ @return The new button.
+
+ @since 2.9.5
+ */
+ static wxBitmapButton* NewCloseButton(wxWindow* parent, wxWindowID winid);
};
#include "wx/image.h"
#endif
+#include "wx/artprov.h"
+#include "wx/renderer.h"
+
// ----------------------------------------------------------------------------
// XTI
// ----------------------------------------------------------------------------
bitmap "disabled" ,
*/
+namespace
+{
+
+#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
+
+wxBitmap
+GetCloseButtonBitmap(wxWindow *win,
+ const wxSize& size,
+ const wxColour& colBg,
+ int flags = 0)
+{
+ wxBitmap bmp(size);
+ wxMemoryDC dc(bmp);
+ dc.SetBackground(colBg);
+ dc.Clear();
+ wxRendererNative::Get().
+ DrawTitleBarBitmap(win, dc, size, wxTITLEBAR_BUTTON_CLOSE, flags);
+ return bmp;
+}
+
+#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
+
+} // anonymous namespace
+
+/* static */
+wxBitmapButton*
+wxBitmapButtonBase::NewCloseButton(wxWindow* parent, wxWindowID winid)
+{
+ wxCHECK_MSG( parent, NULL, wxS("Must have a valid parent") );
+
+ const wxColour colBg = parent->GetBackgroundColour();
+
+#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
+ const wxSize sizeBmp = wxArtProvider::GetSizeHint(wxART_BUTTON);
+ wxBitmap bmp = GetCloseButtonBitmap(parent, sizeBmp, colBg);
+#else // !wxHAS_DRAW_TITLE_BAR_BITMAP
+ wxBitmap bmp = wxArtProvider::GetBitmap(wxART_CLOSE, wxART_BUTTON);
+#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
+
+ wxBitmapButton* const button = new wxBitmapButton
+ (
+ parent,
+ winid,
+ bmp,
+ wxDefaultPosition,
+ wxDefaultSize,
+ wxBORDER_NONE
+ );
+
+#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
+ button->SetBitmapPressed(
+ GetCloseButtonBitmap(parent, sizeBmp, colBg, wxCONTROL_PRESSED));
+
+ button->SetBitmapCurrent(
+ GetCloseButtonBitmap(parent, sizeBmp, colBg, wxCONTROL_CURRENT));
+#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
+
+ // The button should blend with its parent background.
+ button->SetBackgroundColour(colBg);
+
+ return button;
+}
+
#endif // wxUSE_BMPBUTTON
#endif // WX_PRECOMP
#include "wx/artprov.h"
-#include "wx/renderer.h"
#include "wx/scopeguard.h"
BEGIN_EVENT_TABLE(wxInfoBarGeneric, wxInfoBarBase)
EVT_BUTTON(wxID_ANY, wxInfoBarGeneric::OnButton)
END_EVENT_TABLE()
-// ----------------------------------------------------------------------------
-// local helpers
-// ----------------------------------------------------------------------------
-
-namespace
-{
-
-#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
-
-wxBitmap
-GetCloseButtonBitmap(wxWindow *win,
- const wxSize& size,
- const wxColour& colBg,
- int flags = 0)
-{
- wxBitmap bmp(size);
- wxMemoryDC dc(bmp);
- dc.SetBackground(colBg);
- dc.Clear();
- wxRendererNative::Get().
- DrawTitleBarBitmap(win, dc, size, wxTITLEBAR_BUTTON_CLOSE, flags);
- return bmp;
-}
-
-#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
-
-} // anonymous namespace
-
// ============================================================================
// implementation
// ============================================================================
m_text = new wxStaticText(this, wxID_ANY, "");
-#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
- const wxSize sizeBmp = wxArtProvider::GetSizeHint(wxART_BUTTON);
- wxBitmap bmp = GetCloseButtonBitmap(this, sizeBmp, colBg);
-#else // !wxHAS_DRAW_TITLE_BAR_BITMAP
- wxBitmap bmp = wxArtProvider::GetBitmap(wxART_CLOSE, wxART_BUTTON);
-#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
- m_button = new wxBitmapButton
- (
- this,
- wxID_ANY,
- bmp,
- wxDefaultPosition,
- wxDefaultSize,
- wxBORDER_NONE
- );
-
-#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
- m_button->SetBitmapPressed(
- GetCloseButtonBitmap(this, sizeBmp, colBg, wxCONTROL_PRESSED));
-
- m_button->SetBitmapCurrent(
- GetCloseButtonBitmap(this, sizeBmp, colBg, wxCONTROL_CURRENT));
-#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
-
- m_button->SetBackgroundColour(colBg);
+ m_button = wxBitmapButton::NewCloseButton(parent, wxID_ANY);
m_button->SetToolTip(_("Hide this notification message."));
// center the text inside the sizer with an icon to the left of it and a