X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e8759560f8c3d47d51abca114d3ef475c6b13529..8a31648287be0ef976f133de2786b137f1e98340:/src/gtk/private.cpp?ds=sidebyside diff --git a/src/gtk/private.cpp b/src/gtk/private.cpp index 3f421fbb2c..08ebaae77e 100644 --- a/src/gtk/private.cpp +++ b/src/gtk/private.cpp @@ -6,7 +6,7 @@ // Created: 28.06.2008 // RCS-ID: $Id$ // Copyright: (c) 2008 Marcin Malich -// License: wxWindows licence +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -78,6 +78,24 @@ GtkWidget *GetCheckButtonWidget() return s_button; } +GtkWidget * GetComboBoxWidget() +{ + static GtkWidget *s_button = NULL; + static GtkWidget *s_window = NULL; + + if ( !s_button ) + { + s_window = gtk_window_new( GTK_WINDOW_POPUP ); + gtk_widget_realize( s_window ); + s_button = gtk_combo_box_new(); + gtk_container_add( GTK_CONTAINER(s_window), s_button ); + gtk_widget_realize( s_button ); + } + + return s_button; +} + + GtkWidget *GetEntryWidget() { static GtkWidget *s_entry = NULL; @@ -95,18 +113,65 @@ GtkWidget *GetEntryWidget() // This one just gets the button used by the column header. Although it's // still a gtk_button the themes will typically differentiate and draw them // differently if the button is in a treeview. -GtkWidget *GetHeaderButtonWidget() -{ - static GtkWidget *s_button = NULL; +static GtkWidget *s_first_button = NULL; +static GtkWidget *s_other_button = NULL; +static GtkWidget *s_last_button = NULL; - if ( !s_button ) - { +static void CreateHeaderButtons() +{ // 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_button = column->button; + 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; +} + +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) + CreateHeaderButtons(); + + return s_other_button; +} + +GtkWidget * GetRadioButtonWidget() +{ + static GtkWidget *s_button = NULL; + static GtkWidget *s_window = NULL; + + if ( !s_button ) + { + s_window = gtk_window_new( GTK_WINDOW_POPUP ); + gtk_widget_realize( s_window ); + s_button = gtk_radio_button_new(NULL); + gtk_container_add( GTK_CONTAINER(s_window), s_button ); + gtk_widget_realize( s_button ); } return s_button; @@ -126,6 +191,23 @@ GtkWidget* GetSplitterWidget() return widget; } +GtkWidget * GetTextEntryWidget() +{ + static GtkWidget *s_button = NULL; + static GtkWidget *s_window = NULL; + + if ( !s_button ) + { + s_window = gtk_window_new( GTK_WINDOW_POPUP ); + gtk_widget_realize( s_window ); + s_button = gtk_entry_new(); + gtk_container_add( GTK_CONTAINER(s_window), s_button ); + gtk_widget_realize( s_button ); + } + + return s_button; +} + GtkWidget *GetTreeWidget() { static GtkWidget *s_tree = NULL;