From 7b8bb65ceb45e7ca3fa7becbbeca551af14e2dc8 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Wed, 30 Jun 2004 22:46:15 +0000 Subject: small fixes/attach buttons --- mixgtk/mixgtk_wm.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) (limited to 'mixgtk/mixgtk_wm.c') 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) @@ -298,19 +305,6 @@ add_page_ (GtkWidget *page, mixgtk_window_id_t id) gtk_widget_show (GTK_WIDGET (notebook_)); } -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) { @@ -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)); } -- cgit v1.2.3