GtkWidget *GetComboBoxWidget();
GtkWidget *GetEntryWidget();
GtkWidget *GetHeaderButtonWidgetFirst();
+GtkWidget *GetHeaderButtonWidgetLast();
GtkWidget *GetHeaderButtonWidget();
GtkWidget *GetRadioButtonWidget();
GtkWidget *GetSplitterWidget();
wxSize wxHeaderCtrl::DoGetBestSize() const
{
+ wxWindow *win = GetParent();
+ int height = wxRendererNative::Get().GetHeaderButtonHeight( win );
+
// the vertical size is rather arbitrary but it looks better if we leave
// some space around the text
const wxSize size(IsEmpty() ? wxHeaderCtrlBase::DoGetBestSize().x
: GetColEnd(GetColumnCount() - 1),
- (7*GetCharHeight())/4);
+ height ); // (7*GetCharHeight())/4);
CacheBestSize(size);
return size;
}
{
int w, h;
GetClientSize(&w, &h);
+
+#ifdef __WXGTK__
+ int vw;
+ GetVirtualSize(&vw, NULL);
+#endif
wxAutoBufferedPaintDC dc(this);
if ( col.IsHidden() )
continue;
- const int colWidth = col.GetWidth();
+ int colWidth = col.GetWidth();
wxHeaderSortIconType sortArrow;
if ( col.IsSortKey() )
{
state = wxCONTROL_DISABLED;
}
+
+ if (i == 0)
+ state |= wxCONTROL_SPECIAL;
wxHeaderButtonParams params;
params.m_labelText = col.GetTitle();
params.m_labelBitmap = col.GetBitmap();
params.m_labelAlignment = col.GetAlignment();
+
+#ifdef __WXGTK__
+ if (i == count-1)
+ {
+ colWidth = wxMax( colWidth, vw - xpos );
+ state |= wxCONTROL_EXPANDED;
+ }
+#endif
wxRendererNative::Get().DrawHeaderButton
(
static GtkWidget *s_first_button = NULL;
static GtkWidget *s_other_button = NULL;
static GtkWidget *s_last_button = NULL;
-
-GtkWidget *GetHeaderButtonWidgetFirst()
-{
- if ( !s_first_button )
- {
+static void CreateHeaderButtona()
+{
// Get the dummy tree widget, give it a column, and then use the
// widget in the column header for the rendering code.
GtkWidget* treewidget = GetTreeWidget();
column = gtk_tree_view_column_new();
gtk_tree_view_append_column(GTK_TREE_VIEW(treewidget), column);
s_last_button = column->button;
- }
+}
+
+GtkWidget *GetHeaderButtonWidgetFirst()
+{
+ if (!s_first_button)
+ CreateHeaderButtons();
return s_first_button;
}
+GtkWidget *GetHeaderButtonWidgetLast()
+{
+ if (!s_last_button)
+ CreateHeaderButtons();
+
+ return s_last_button;
+}
+
GtkWidget *GetHeaderButtonWidget()
{
- if ( !s_other_button )
- {
- // Get the dummy tree widget, give it a column, and then use the
- // widget in the column header for the rendering code.
- GtkWidget* treewidget = GetTreeWidget();
-
- GtkTreeViewColumn *column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treewidget), column);
- s_first_button = column->button;
-
- column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treewidget), column);
- s_other_button = column->button;
-
- column = gtk_tree_view_column_new();
- gtk_tree_view_append_column(GTK_TREE_VIEW(treewidget), column);
- s_last_button = column->button;
- }
+ if (!s_other_button)
+ CreateHeaderButtons();
return s_other_button;
}
GtkWidget *button = wxGTKPrivate::GetHeaderButtonWidget();
if (flags & wxCONTROL_SPECIAL)
button = wxGTKPrivate::GetHeaderButtonWidgetFirst();
+ if (flags & wxCONTROL_EXPANDED)
+ button = wxGTKPrivate::GetHeaderButtonWidgetLast();
GdkWindow* gdk_window = wxGetGdkWindowForDC(win, dc);
wxASSERT_MSG( gdk_window,