]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/renderer.cpp
remove the vertical scrollbar completely if the control is empty
[wxWidgets.git] / src / gtk / renderer.cpp
index e4a3f236b76a9af070eaf13afa6b6bd3df1cc030..e5e20f03b13cbc2a9b5ea83491e83d2826090d2f 100644 (file)
@@ -82,13 +82,18 @@ public:
                                  wxDC& dc,
                                  const wxRect& rect,
                                  int flags = 0);
-                                 
+
+    virtual void DrawPushButton(wxWindow *win,
+                                wxDC& dc,
+                                const wxRect& rect,
+                                int flags = 0);
+
     virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
 
 private:
     // FIXME: shouldn't we destroy these windows somewhere?
 
-    // used by DrawHeaderButton and DrawComboBoxDropButton
+    // used by DrawHeaderButton and DrawPushButton
     static GtkWidget *GetButtonWidget();
 
     // used by DrawTreeItemButton()
@@ -185,14 +190,14 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win,
     (
         button->style,
         // FIXME: I suppose GTK_PIZZA(win->m_wxwindow)->bin_window doesn't work with wxMemoryDC.
-        //   Maybe use code similar as in DrawComboBoxDropButton below?
+        //   Maybe use code similar as in DrawPushButton below?
         GTK_PIZZA(win->m_wxwindow)->bin_window,
         flags & wxCONTROL_DISABLED ? GTK_STATE_INSENSITIVE : GTK_STATE_NORMAL,
         GTK_SHADOW_OUT,
         NULL,
         button,
         "button",
-        dc.XLOG2DEV(rect.x) -1, rect.y -1, rect.width +2, rect.height +2
+        dc.XLOG2DEV(rect.x), rect.y, rect.width, rect.height
     );
 }
 
@@ -422,13 +427,22 @@ wxRendererGTK::DrawComboBoxDropButton(wxWindow *win,
                                       const wxRect& rect,
                                       int flags)
 {
-    GtkWidget *button = GetButtonWidget();
+    DrawPushButton(win,dc,rect,flags);
+    DrawDropArrow(win,dc,rect);
+}
+
+void 
+wxRendererGTK::DrawCheckButton(wxWindow *win,
+                                 wxDC& dc,
+                                 const wxRect& rect,
+                                 int flags )
+{
+    GtkWidget *button = GetCheckButtonWidget();
 
     // for reason why we do this, see DrawDropArrow
     wxWindowDC& wdc = (wxWindowDC&)dc;
     wxASSERT ( wdc.IsKindOf(CLASSINFO(wxWindowDC)) );
-
-    // draw button
+    
     GtkStateType state;
 
     if ( flags & wxCONTROL_PRESSED )
@@ -439,36 +453,35 @@ wxRendererGTK::DrawComboBoxDropButton(wxWindow *win,
         state = GTK_STATE_PRELIGHT;
     else
         state = GTK_STATE_NORMAL;
-
-    gtk_paint_box
+    
+    gtk_paint_check
     (
         button->style,
         wdc.m_window,
         state,
-        flags & wxCONTROL_PRESSED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
+        flags & wxCONTROL_CHECKED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
         NULL,
         button,
-        "button",
-        rect.x, rect.y, rect.width, rect.height
+        "cellcheck",
+        dc.LogicalToDeviceX(rect.x)+2, 
+        dc.LogicalToDeviceY(rect.y)+3, 
+        13, 13
     );
-
-    // draw arrow on button
-    DrawDropArrow(win,dc,rect,flags);
-
 }
 
-void 
-wxRendererGTK::DrawCheckButton(wxWindow *win,
-                                 wxDC& dc,
-                                 const wxRect& rect,
-                                 int flags )
+void
+wxRendererGTK::DrawPushButton(wxWindow *win,
+                              wxDC& dc,
+                              const wxRect& rect,
+                              int flags)
 {
-    GtkWidget *button = GetCheckButtonWidget();
+    GtkWidget *button = GetButtonWidget();
 
     // for reason why we do this, see DrawDropArrow
     wxWindowDC& wdc = (wxWindowDC&)dc;
     wxASSERT ( wdc.IsKindOf(CLASSINFO(wxWindowDC)) );
-    
+
+    // draw button
     GtkStateType state;
 
     if ( flags & wxCONTROL_PRESSED )
@@ -479,16 +492,16 @@ wxRendererGTK::DrawCheckButton(wxWindow *win,
         state = GTK_STATE_PRELIGHT;
     else
         state = GTK_STATE_NORMAL;
-    
-    gtk_paint_check
+
+    gtk_paint_box
     (
         button->style,
         wdc.m_window,
         state,
-        flags & wxCONTROL_CHECKED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
+        flags & wxCONTROL_PRESSED ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
         NULL,
         button,
-        "cellcheck",
-        rect.x, rect.y, 13, 13
+        "button",
+        rect.x, rect.y, rect.width, rect.height
     );
 }