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
This commit is contained in:
Vadim Zeitlin
2007-11-18 23:31:48 +00:00
parent 72cb72bf82
commit 7422d7c442
2 changed files with 27 additions and 12 deletions

View File

@@ -78,6 +78,11 @@ public:
// Responds to colour changes // Responds to colour changes
void OnSysColourChanged(wxSysColourChangedEvent& event); 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: protected:
// common part of all ctors // common part of all ctors
void Init(); void Init();

View File

@@ -80,14 +80,14 @@ bool wxStatusBarGeneric::Create(wxWindow *parent,
SetFont(*wxSMALL_FONT); SetFont(*wxSMALL_FONT);
#endif #endif
wxCoord y; wxCoord y;
{ {
// Set the height according to the font and the border size // Set the height according to the font and the border size
wxClientDC dc(this); wxClientDC dc(this);
dc.SetFont(GetFont()); dc.SetFont(GetFont());
dc.GetTextExtent(_T("X"), NULL, &y ); dc.GetTextExtent(_T("X"), NULL, &y );
} }
int height = (int)( (11*y)/10 + 2*GetBorderY()); int height = (int)( (11*y)/10 + 2*GetBorderY());
SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height); SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height);
@@ -189,17 +189,27 @@ void wxStatusBarGeneric::SetStatusWidths(int n, const int widths_field[])
wxStatusBarBase::SetStatusWidths(n, 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) ) void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
{ {
wxPaintDC dc(this); wxPaintDC dc(this);
#ifdef __WXGTK20__ #ifdef __WXGTK20__
// Draw grip first // Draw grip first
if (HasFlag( wxST_SIZEGRIP )) if ( ShowsSizeGrip() )
{ {
int width, height; int width, height;
GetClientSize(&width, &height); GetClientSize(&width, &height);
if (GetLayoutDirection() == wxLayout_RightToLeft) if (GetLayoutDirection() == wxLayout_RightToLeft)
{ {
gtk_paint_resize_grip( m_widget->style, 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 ); width-height-2, 2, height-2, height-4 );
} }
} }
#endif #endif // __WXGTK20__
if (GetFont().Ok()) if (GetFont().Ok())
dc.SetFont(GetFont()); dc.SetFont(GetFont());
@@ -415,7 +425,7 @@ void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event)
int width, height; int width, height;
GetClientSize(&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 ); GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );
@@ -462,7 +472,7 @@ void wxStatusBarGeneric::OnRightDown(wxMouseEvent& event)
int width, height; int width, height;
GetClientSize(&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 ); GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget );