From c8956a1eb4c2297685e85df4be3efa176acbc929 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Mon, 18 May 2015 17:07:09 +0100 Subject: gtk3: implement tree header bar area Change-Id: I9f4ef42eb35524714a170e9f4a4d5ef13e198efd --- vcl/inc/unx/gtk/gtkgdi.hxx | 1 + vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 35 ++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'vcl') diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx index c89116be1df9..087ad54fd533 100644 --- a/vcl/inc/unx/gtk/gtkgdi.hxx +++ b/vcl/inc/unx/gtk/gtkgdi.hxx @@ -88,6 +88,7 @@ private: static GtkStyleContext *mpFrameOutStyle; static GtkStyleContext *mpFixedHoriLineStyle; static GtkStyleContext *mpFixedVertLineStyle; + static GtkStyleContext *mpTreeHeaderButtonStyle; static Rectangle NWGetScrollButtonRect( ControlPart nPart, Rectangle aAreaRect ); static Rectangle NWGetSpinButtonRect( ControlPart nPart, Rectangle aAreaRect); diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx index 6e12ca251050..c64aa6e34ecf 100644 --- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx @@ -44,6 +44,7 @@ GtkStyleContext* GtkSalGraphics::mpFrameInStyle = NULL; GtkStyleContext* GtkSalGraphics::mpFrameOutStyle = NULL; GtkStyleContext* GtkSalGraphics::mpFixedHoriLineStyle = NULL; GtkStyleContext* GtkSalGraphics::mpFixedVertLineStyle = NULL; +GtkStyleContext* GtkSalGraphics::mpTreeHeaderButtonStyle = NULL; bool GtkSalGraphics::style_loaded = false; /************************************************************************ @@ -814,6 +815,7 @@ static GtkWidget* gFrameIn; static GtkWidget* gFrameOut; static GtkWidget* gMenuBarWidget; static GtkWidget* gMenuItemMenuBarWidget; +static GtkWidget* gTreeViewWidget; bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState nState, const ImplControlValue& rValue, @@ -987,6 +989,10 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co case CTRL_FIXEDLINE: context = nPart == PART_SEPARATOR_HORZ ? mpFixedHoriLineStyle : mpFixedVertLineStyle; renderType = RENDER_SEPERATOR; + break; + case CTRL_LISTHEADER: + context = mpTreeHeaderButtonStyle; + break; default: return false; } @@ -1789,10 +1795,10 @@ bool GtkSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nP return true; break; -// case CTRL_LISTHEADER: -// if(nPart == PART_BUTTON || nPart == PART_ARROW) -// return true; -// break; + case CTRL_LISTHEADER: + if (nPart == PART_BUTTON /*|| nPart == PART_ARROW*/) + return true; + break; } printf( "Unhandled is native supported for Type: %d, Part %d\n", @@ -1984,6 +1990,27 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow ) getStyleContext(&mpFixedHoriLineStyle, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)); getStyleContext(&mpFixedVertLineStyle, gtk_separator_new(GTK_ORIENTATION_VERTICAL)); + + /* Tree List */ + gTreeViewWidget = gtk_tree_view_new(); + gtk_container_add(GTK_CONTAINER(gDumbContainer), gTreeViewWidget); + + GtkTreeViewColumn* firstTreeViewColumn = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(firstTreeViewColumn, "M"); + gtk_tree_view_append_column(GTK_TREE_VIEW(gTreeViewWidget), firstTreeViewColumn); + + GtkTreeViewColumn* middleTreeViewColumn = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(middleTreeViewColumn, "M"); + gtk_tree_view_append_column(GTK_TREE_VIEW(gTreeViewWidget), middleTreeViewColumn); + + GtkTreeViewColumn* lastTreeViewColumn = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(lastTreeViewColumn, "M"); + gtk_tree_view_append_column(GTK_TREE_VIEW(gTreeViewWidget), lastTreeViewColumn); + + /* Use the middle column's header for our button */ + GtkWidget* pTreeHeaderCellWidget = gtk_tree_view_column_get_button(middleTreeViewColumn); + mpTreeHeaderButtonStyle = gtk_widget_get_style_context(pTreeHeaderCellWidget); + gtk_widget_show_all(gDumbContainer); } -- cgit