From 7422d7c4423b7093c37ea4ceeee556a29fd47ce1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 18 Nov 2007 23:31:48 +0000 Subject: [PATCH] don't show size grip if the window the status bar is attached to is maximized or not resizeable at all git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50068 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/statusbr.h | 5 +++++ src/generic/statusbr.cpp | 34 ++++++++++++++++++++++------------ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/include/wx/generic/statusbr.h b/include/wx/generic/statusbr.h index 4cdae345f7..d2b1343918 100644 --- a/include/wx/generic/statusbr.h +++ b/include/wx/generic/statusbr.h @@ -78,6 +78,11 @@ public: // Responds to colour changes void OnSysColourChanged(wxSysColourChangedEvent& event); + // true if the status bar shows the size grip: for this it must have + // wxST_SIZEGRIP style and the window it is attached to must be resizeable + // and not maximized + bool ShowsSizeGrip() const; + protected: // common part of all ctors void Init(); diff --git a/src/generic/statusbr.cpp b/src/generic/statusbr.cpp index d5330414b0..9cf8ed9d06 100644 --- a/src/generic/statusbr.cpp +++ b/src/generic/statusbr.cpp @@ -80,14 +80,14 @@ bool wxStatusBarGeneric::Create(wxWindow *parent, SetFont(*wxSMALL_FONT); #endif - wxCoord y; - { - // Set the height according to the font and the border size - wxClientDC dc(this); - dc.SetFont(GetFont()); + wxCoord y; + { + // Set the height according to the font and the border size + wxClientDC dc(this); + dc.SetFont(GetFont()); - dc.GetTextExtent(_T("X"), NULL, &y ); - } + dc.GetTextExtent(_T("X"), NULL, &y ); + } int height = (int)( (11*y)/10 + 2*GetBorderY()); SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height); @@ -189,17 +189,27 @@ void wxStatusBarGeneric::SetStatusWidths(int n, const int widths_field[]) wxStatusBarBase::SetStatusWidths(n, widths_field); } +bool wxStatusBarGeneric::ShowsSizeGrip() const +{ + if ( !HasFlag(wxST_SIZEGRIP) ) + return false; + + wxTopLevelWindow * const + tlw = wxDynamicCast(wxGetTopLevelParent(GetParent()), wxTopLevelWindow); + return tlw && !tlw->IsMaximized() && tlw->HasFlag(wxRESIZE_BORDER); +} + void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) { wxPaintDC dc(this); #ifdef __WXGTK20__ // Draw grip first - if (HasFlag( wxST_SIZEGRIP )) + if ( ShowsSizeGrip() ) { int width, height; GetClientSize(&width, &height); - + if (GetLayoutDirection() == wxLayout_RightToLeft) { gtk_paint_resize_grip( m_widget->style, @@ -223,7 +233,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) width-height-2, 2, height-2, height-4 ); } } -#endif +#endif // __WXGTK20__ if (GetFont().Ok()) dc.SetFont(GetFont()); @@ -415,7 +425,7 @@ void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event) int width, height; GetClientSize(&width, &height); - if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height)) + if ( ShowsSizeGrip() && (event.GetX() > width-height) ) { GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget ); @@ -462,7 +472,7 @@ void wxStatusBarGeneric::OnRightDown(wxMouseEvent& event) int width, height; GetClientSize(&width, &height); - if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height)) + if ( ShowsSizeGrip() && (event.GetX() > width-height) ) { GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );