]> git.saurik.com Git - wxWidgets.git/commitdiff
don't show size grip if the window the status bar is attached to is maximized or...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 18 Nov 2007 23:31:48 +0000 (23:31 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 18 Nov 2007 23:31:48 +0000 (23:31 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50068 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/statusbr.h
src/generic/statusbr.cpp

index 4cdae345f7c762c73ff798b591ba1f8819d15a0c..d2b134391815a9f370f1ed2ecb8b92252a32a637 100644 (file)
@@ -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();
index d5330414b0963650c7b923093a4bb37cec24b153..9cf8ed9d06a794cf2298f257b0f1898ffa798398 100644 (file)
@@ -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());
-
-               dc.GetTextExtent(_T("X"), NULL, &y );
-       }
+    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 );
+    }
     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 );