summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorJens Finke <jens@triq.net>2003-03-03 11:50:31 +0000
committerJens Finke <jens@src.gnome.org>2003-03-03 11:50:31 +0000
commit68037f53f325f0ffca4b36e30f96cc8307635355 (patch)
treeca7226b91257618ff8ed52c73f79a1a2a8b52cc8 /shell
parent7f41fab654649ca281232d4bfbdde8ff59c48bec (diff)
downloadeog-68037f53f325f0ffca4b36e30f96cc8307635355.tar.gz
Check for ctrl_frame != NULL. (eog_window_construct): Don't create
2003-03-03 Jens Finke <jens@triq.net> * shell/eog-window.c (eog_window_has_contents): Check for ctrl_frame != NULL. (eog_window_construct): Don't create BonoboControlFrame here ... (eog_window_open_list): ... but here. So we get a fresh control frame for each new BonoboControl.
Diffstat (limited to 'shell')
-rw-r--r--shell/eog-window.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/shell/eog-window.c b/shell/eog-window.c
index d5eed2c6..aa661b0b 100644
--- a/shell/eog-window.c
+++ b/shell/eog-window.c
@@ -543,7 +543,7 @@ eog_window_has_contents (EogWindow *window)
{
g_return_val_if_fail (EOG_IS_WINDOW (window), FALSE);
- return (bonobo_control_frame_get_control (window->priv->ctrl_frame) != CORBA_OBJECT_NIL);
+ return (window->priv->ctrl_frame != NULL);
}
/* Drag_data_received handler for windows */
@@ -654,10 +654,7 @@ eog_window_construct (EogWindow *window)
gtk_widget_show (GTK_WIDGET (priv->statusbar));
/* add control frame interface */
- priv->ctrl_frame = bonobo_control_frame_new (BONOBO_OBJREF (ui_container));
- bonobo_control_frame_set_autoactivate (priv->ctrl_frame, FALSE);
- g_signal_connect (G_OBJECT (priv->ctrl_frame), "activate_uri",
- (GtkSignalFunc) activate_uri_cb, NULL);
+ priv->ctrl_frame = NULL;
set_drag_dest (window);
@@ -907,6 +904,7 @@ eog_window_open (EogWindow *win, const char *iid, const char *text_uri, GError *
gboolean
eog_window_open_list (EogWindow *window, const char *iid, GList *text_uri_list, GError **error)
{
+ BonoboUIContainer *ui_container;
Bonobo_Control control;
Bonobo_PersistFile pfile;
CORBA_Environment ev;
@@ -923,12 +921,23 @@ eog_window_open_list (EogWindow *window, const char *iid, GList *text_uri_list,
CORBA_exception_init (&ev);
/* remove previously loaded control */
- if (priv->ctrl_widget != NULL) {
+ if (priv->ctrl_frame != NULL) {
gtk_container_remove (GTK_CONTAINER (priv->box),
GTK_WIDGET (priv->ctrl_widget));
+ bonobo_object_unref (priv->ctrl_frame);
+ gtk_widget_destroy (priv->ctrl_widget);
priv->ctrl_widget = NULL;
- bonobo_control_frame_bind_to_control (priv->ctrl_frame, CORBA_OBJECT_NIL, &ev);
+ priv->ctrl_frame = NULL;
}
+ g_assert (priv->ctrl_frame == NULL);
+
+ /* create control frame */
+ ui_container = bonobo_window_get_ui_container (BONOBO_WINDOW (window));
+ priv->ctrl_frame = bonobo_control_frame_new (BONOBO_OBJREF (ui_container));
+ bonobo_control_frame_set_autoactivate (priv->ctrl_frame, FALSE);
+ g_signal_connect (G_OBJECT (priv->ctrl_frame), "activate_uri",
+ (GtkSignalFunc) activate_uri_cb, NULL);
+
priv->desired_width = -1;
priv->desired_height = -1;