Further header button details
authorRobert Roebling <robert@roebling.de>
Thu, 22 Jan 2009 14:28:07 +0000 (14:28 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 22 Jan 2009 14:28:07 +0000 (14:28 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/headerctrlg.cpp
src/generic/renderg.cpp
src/gtk/renderer.cpp

index 48e3117c397326d4c61c19b80f4b236028c8b923..82eedac84c98b50aad3caf9cd92943461cc51819 100644 (file)
@@ -554,7 +554,7 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
         if (i == count-1)
         {
             colWidth = wxMax( colWidth, vw - xpos );
-            state |= wxCONTROL_EXPANDED;
+            state |= wxCONTROL_DIRTY;
         }
 #endif
 
index 906a9b342aa5348c83cb67b4c5a9ba1990c0a083..4aa00c7aea74edca2f30cb7c98c01d79aa5ba30d 100644 (file)
@@ -349,6 +349,9 @@ wxRendererGeneric::DrawHeaderButtonContents(wxWindow *win,
         dc.GetTextExtent( label, &tw, &th, &td);
         labelWidth += tw;
         y = rect.y + wxMax(0, (rect.height - (th+td)) / 2);
+#ifdef __WXGTK__
+        y += 2; // No idea why.
+#endif
 
         // truncate and add an ellipsis (...) if the text is too wide.
         int targetWidth = rect.width - arrowSpace - bmpWidth - 2*margin;
index fc9c68ba4d32cafc312bc11e9fc307513e32a988..a25541fe4c118406ac6f619fd009fd2647caaf34 100644 (file)
@@ -54,6 +54,9 @@ public:
                                   wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
                                   wxHeaderButtonParams* params = NULL);
 
+    virtual int GetHeaderButtonHeight(wxWindow *win);
+
+
     // draw the expanded/collapsed icon for a tree control item
     virtual void DrawTreeItemButton(wxWindow *win,
                                     wxDC& dc,
@@ -173,7 +176,7 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win,
     GtkWidget *button = wxGTKPrivate::GetHeaderButtonWidget();
     if (flags & wxCONTROL_SPECIAL)
         button = wxGTKPrivate::GetHeaderButtonWidgetFirst();
-    if (flags & wxCONTROL_EXPANDED)
+    if (flags & wxCONTROL_DIRTY)
         button = wxGTKPrivate::GetHeaderButtonWidgetLast();
 
     GdkWindow* gdk_window = wxGetGdkWindowForDC(win, dc);
@@ -204,10 +207,21 @@ wxRendererGTK::DrawHeaderButton(wxWindow *win,
         "button",
         dc.LogicalToDeviceX(rect.x) - x_diff, rect.y, rect.width, rect.height
     );
-
     return DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params);
 }
 
+int wxRendererGTK::GetHeaderButtonHeight(wxWindow *WXUNUSED(win))
+{
+    GtkWidget *button = wxGTKPrivate::GetHeaderButtonWidget();
+    
+    GtkRequisition req;
+    GTK_WIDGET_GET_CLASS(button)->size_request(button, &req);
+    
+    return req.height;
+}
+
+
 // draw a ">" or "v" button
 void
 wxRendererGTK::DrawTreeItemButton(wxWindow* win,