diff options
author | Tristan Van Berkom <tvb@src.gnome.org> | 2008-03-09 23:43:10 +0000 |
---|---|---|
committer | Tristan Van Berkom <tvb@src.gnome.org> | 2008-03-09 23:43:10 +0000 |
commit | 0d58cab395de08f7089c736bf79023206fc093bd (patch) | |
tree | 1cff68ecfad59ed7423dbbe7697e30f2daa55e59 | |
parent | 834e1fac491d884b315fbad830e4fb5c002b12de (diff) | |
download | glade-0d58cab395de08f7089c736bf79023206fc093bd.tar.gz |
When adding a first project, display the first toplevel in the design
* gladeui/glade-app.c: When adding a first project, display the
first toplevel in the design layout.
* gladeui/glade-widget.c: Handle glade_widget_show() with unrealized
design-view, connect-after the design-view's realize and retry.
svn path=/trunk/; revision=1714
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gladeui/glade-app.c | 15 | ||||
-rw-r--r-- | gladeui/glade-widget.c | 13 | ||||
-rw-r--r-- | src/glade-window.c | 4 |
4 files changed, 37 insertions, 3 deletions
@@ -16,7 +16,13 @@ * gladeui/glade-base-editor.c: Made sure idle handlers werent updating treeviews after the object is destroyed (also bug 506713). - + + * gladeui/glade-app.c: When adding a first project, display the + first toplevel in the design layout. + + * gladeui/glade-widget.c: Handle glade_widget_show() with unrealized + design-view, connect-after the design-view's realize and retry. + 2008-02-16 Juan Pablo Ugarte <juanpablougarte@gmail.com> * plugins/gtk+/gtk+.xml.in: ignore GtkWindow::accept-focus. diff --git a/gladeui/glade-app.c b/gladeui/glade-app.c index b3ea9da7..c7eebecf 100644 --- a/gladeui/glade-app.c +++ b/gladeui/glade-app.c @@ -944,6 +944,21 @@ glade_app_add_project (GladeProject *project) glade_app_set_project (project); + /* Select the first window in the project */ + if (g_list_length (app->priv->projects) == 1) + { + GList *node; + for (node = glade_project_get_objects (project); + node != NULL; + node = g_list_next (node)) + { + GObject *obj = G_OBJECT (node->data); + if (GTK_IS_WINDOW (obj)) + glade_widget_show (glade_widget_get_from_gobject (obj)); + break; + } + } + /* XXX I think the palette & editor should detect this by itself */ gtk_widget_set_sensitive (GTK_WIDGET (app->priv->palette), TRUE); gtk_widget_set_sensitive (GTK_WIDGET (app->priv->editor), TRUE); diff --git a/gladeui/glade-widget.c b/gladeui/glade-widget.c index dbac278f..27a3e821 100644 --- a/gladeui/glade-widget.c +++ b/gladeui/glade-widget.c @@ -2168,6 +2168,19 @@ glade_widget_show (GladeWidget *widget) { view = glade_design_view_get_from_project (glade_widget_get_project (widget)); layout = GTK_WIDGET (glade_design_view_get_layout (view)); + + /* This case causes a black window */ + if (layout && !GTK_WIDGET_REALIZED (layout)) + { + /* give her a little kick */ + g_signal_connect_data (G_OBJECT (layout), "realize", + G_CALLBACK (glade_widget_show), widget, + NULL, + G_CONNECT_AFTER|G_CONNECT_SWAPPED); + return; + } + else if (!layout) + return; if (gtk_bin_get_child (GTK_BIN (layout)) != NULL) gtk_container_remove (GTK_CONTAINER (layout), gtk_bin_get_child (GTK_BIN (layout))); diff --git a/src/glade-window.c b/src/glade-window.c index 0c9c209a..0f2b5e93 100644 --- a/src/glade-window.c +++ b/src/glade-window.c @@ -2548,12 +2548,12 @@ add_project (GladeWindow *window, GladeProject *project) view = glade_design_view_new (project); gtk_widget_show (view); - + glade_app_add_project (project); gtk_notebook_append_page (GTK_NOTEBOOK (window->priv->notebook), GTK_WIDGET (view), NULL); gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook), -1); - + } void |