summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_wm.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk_wm.c')
-rw-r--r--mixgtk/mixgtk_wm.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/mixgtk/mixgtk_wm.c b/mixgtk/mixgtk_wm.c
index 5d4f287..ec7c247 100644
--- a/mixgtk/mixgtk_wm.c
+++ b/mixgtk/mixgtk_wm.c
@@ -1,7 +1,7 @@
/* -*-c-*- -------------- mixgtk_wm.c :
* Implementation of the functions declared in mixgtk_wm.h
* ------------------------------------------------------------------
- * $Id: mixgtk_wm.c,v 1.8 2004/06/30 14:50:43 jao Exp $
+ * $Id: mixgtk_wm.c,v 1.9 2004/06/30 22:46:15 jao Exp $
* ------------------------------------------------------------------
* Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
*
@@ -73,7 +73,6 @@ static void init_visibility_ (void);
static void init_tb_ (void);
static void init_about_ (void);
static void init_autosave_ (void);
-static void remove_page_ (gint page);
static void add_page_ (GtkWidget *w, mixgtk_window_id_t id);
static void mixvm_attach_ (void);
static void mixvm_detach_ (void);
@@ -86,7 +85,7 @@ static void on_nb_switch_ (GtkNotebook *notebook, GtkWidget *page,
static window_info_t_ infos_[] = {
{MIXGTK_MIXVM_DIALOG, NULL, NULL, "detach_vm", "MIX.detach",
- FALSE, NULL, mixvm_detach_, mixvm_attach_},
+ FALSE, "mixvm_toolbar", mixvm_detach_, mixvm_attach_},
{MIXGTK_MIXAL_DIALOG, NULL, NULL, "detach_source", "MIXAL.detach",
FALSE, "mixal_toolbar", mixal_detach_, mixal_attach_},
{MIXGTK_DEVICES_DIALOG, NULL, NULL, "detach_dev", "Devices.detach",
@@ -157,6 +156,7 @@ mixgtk_wm_attach_window (mixgtk_window_id_t w)
mixgtk_config_update (infos_[w].config_key, DETACH_NO_);
if (gtk_notebook_get_n_pages (notebook_) == 1)
gtk_widget_show (GTK_WIDGET (notebook_));
+ gtk_notebook_set_current_page (notebook_, -1);
}
}
@@ -237,6 +237,13 @@ on_show_toolbars_toggled (GtkCheckMenuItem *item)
mixgtk_wm_show_toolbars (item->active);
}
+void
+on_widget_attach (GtkWidget *ign, gpointer id)
+{
+ mixgtk_wm_attach_window (GPOINTER_TO_INT (id));
+}
+
+
/* about box */
void
on_about_activate (GtkWidget *w, gpointer data)
@@ -299,19 +306,6 @@ add_page_ (GtkWidget *page, mixgtk_window_id_t id)
}
static void
-remove_page_ (gint page)
-{
- gint pages;
-
- g_assert (notebook_ != NULL);
- gtk_notebook_remove_page (notebook_, page);
-
- pages = gtk_notebook_get_n_pages (notebook_);
- if (pages < 1) gtk_widget_hide (GTK_WIDGET (notebook_));
- else gtk_notebook_set_show_tabs (notebook_, pages > 1);
-}
-
-static void
init_signals_ (void)
{
gint k;
@@ -320,8 +314,15 @@ init_signals_ (void)
GObject *dialog =
G_OBJECT (mixgtk_widget_factory_get_dialog (infos_[k].dialog));
- g_assert (dialog);
+ GObject *button =
+ G_OBJECT (mixgtk_widget_factory_get (infos_[k].dialog,
+ MIXGTK_WIDGET_ATTACH_BUTTON));
+ g_assert (dialog != NULL);
+ g_assert (button != NULL);
+
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (on_widget_attach), GINT_TO_POINTER (k));
g_signal_connect (dialog, "destroy",
G_CALLBACK (on_window_hide), NULL);
g_signal_connect (dialog, "destroy_event",
@@ -341,6 +342,10 @@ init_visibility_ (void)
for (k = 0; k < INF_NO_; ++k)
if (infos_[k].detached)
gtk_widget_show (mixgtk_widget_factory_get_dialog (infos_[k].dialog));
+
+ if (gtk_notebook_get_n_pages (notebook_) > 0)
+ gtk_notebook_set_current_page (notebook_, 0);
+
gtk_widget_show (mixgtk_widget_factory_get_dialog (MIXGTK_MAIN));
}