From 6f91f3a333110fd08795ac3c0551725dd61956a1 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Thu, 22 Jan 2009 14:28:07 +0000 Subject: [PATCH] Further header button details git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/headerctrlg.cpp | 2 +- src/generic/renderg.cpp | 3 +++ src/gtk/renderer.cpp | 18 ++++++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/generic/headerctrlg.cpp b/src/generic/headerctrlg.cpp index 48e3117c39..82eedac84c 100644 --- a/src/generic/headerctrlg.cpp +++ b/src/generic/headerctrlg.cpp @@ -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 diff --git a/src/generic/renderg.cpp b/src/generic/renderg.cpp index 906a9b342a..4aa00c7aea 100644 --- a/src/generic/renderg.cpp +++ b/src/generic/renderg.cpp @@ -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; diff --git a/src/gtk/renderer.cpp b/src/gtk/renderer.cpp index fc9c68ba4d..a25541fe4c 100644 --- a/src/gtk/renderer.cpp +++ b/src/gtk/renderer.cpp @@ -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, -- 2.45.2