summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tvb@src.gnome.org>2008-03-09 23:43:10 +0000
committerTristan Van Berkom <tvb@src.gnome.org>2008-03-09 23:43:10 +0000
commit0d58cab395de08f7089c736bf79023206fc093bd (patch)
tree1cff68ecfad59ed7423dbbe7697e30f2daa55e59
parent834e1fac491d884b315fbad830e4fb5c002b12de (diff)
downloadglade-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--ChangeLog8
-rw-r--r--gladeui/glade-app.c15
-rw-r--r--gladeui/glade-widget.c13
-rw-r--r--src/glade-window.c4
4 files changed, 37 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 3c368d9d..76badad6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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