]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/statusbr.cpp
mac cleanup, pure cgcolor
[wxWidgets.git] / src / generic / statusbr.cpp
index 958d61a5d992e1d2bcf2dde0c4183a352c4d0d84..96b845a3bb97dc1082c9b722a1c8afcda52eaa70 100644 (file)
 #ifndef WX_PRECOMP
     #include "wx/settings.h"
     #include "wx/dcclient.h"
+    #include "wx/toplevel.h"
 #endif
 
 #ifdef __WXGTK20__
     #include <gtk/gtk.h>
-    #include "wx/gtk/win_gtk.h"
 #endif
 
 // we only have to do it here when we use wxStatusBarGeneric in addition to the
@@ -81,13 +81,14 @@ bool wxStatusBarGeneric::Create(wxWindow *parent,
     SetFont(*wxSMALL_FONT);
 #endif
 
-    // Set the height according to the font and the border size
-    wxClientDC dc(this);
-    dc.SetFont(GetFont());
-
     wxCoord y;
-    dc.GetTextExtent(_T("X"), NULL, &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,21 +190,31 @@ 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,
-                               GTK_PIZZA(m_wxwindow)->bin_window,
+                               GTKGetDrawingWindow(),
                                (GtkStateType) GTK_WIDGET_STATE (m_widget),
                                NULL,
                                m_widget,
@@ -214,7 +225,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
         else
         {
             gtk_paint_resize_grip( m_widget->style,
-                               GTK_PIZZA(m_wxwindow)->bin_window,
+                               GTKGetDrawingWindow(),
                                (GtkStateType) GTK_WIDGET_STATE (m_widget),
                                NULL,
                                m_widget,
@@ -223,7 +234,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
                                width-height-2, 2, height-2, height-4 );
         }
     }
-#endif
+#endif // __WXGTK20__
 
     if (GetFont().Ok())
         dc.SetFont(GetFont());
@@ -250,7 +261,7 @@ void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i)
 
     wxString text(GetStatusText(i));
 
-    long x = 0, y = 0;
+    wxCoord x = 0, y = 0;
 
     dc.GetTextExtent(text, &x, &y);
 
@@ -415,14 +426,14 @@ 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 );
 
         if (!GTK_IS_WINDOW (ancestor))
             return;
 
-        GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
+        GdkWindow *source = GTKGetDrawingWindow();
 
         int org_x = 0;
         int org_y = 0;
@@ -462,14 +473,14 @@ 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 );
 
         if (!GTK_IS_WINDOW (ancestor))
             return;
 
-        GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window;
+        GdkWindow *source = GTKGetDrawingWindow();
 
         int org_x = 0;
         int org_y = 0;