summaryrefslogtreecommitdiff
path: root/mixgtk/mixgtk_wm.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk_wm.c')
-rw-r--r--mixgtk/mixgtk_wm.c81
1 files changed, 40 insertions, 41 deletions
diff --git a/mixgtk/mixgtk_wm.c b/mixgtk/mixgtk_wm.c
index 93f64ca..b442eb9 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
* ------------------------------------------------------------------
- * Copyright (C) 2001, 2002, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2004, 2006, 2007, 2008, 2019, 2020 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,6 +40,8 @@ typedef struct window_info_t_
GtkCheckMenuItem *menu;
const gchar *menu_name;
const gchar *config_key;
+ const gchar *toolbar_name;
+ const gchar *attach_button;
gboolean detached;
void (*detach) (void);
void (*attach) (void);
@@ -82,17 +84,21 @@ static void mixal_attach_ (void);
static void mixal_detach_ (void);
static void dev_attach_ (void);
static void dev_detach_ (void);
+static void reparent_ (GtkWidget *widget, GtkWidget *parent);
static void update_attach_buttons_ (void);
static void on_tb_style_ (GtkMenuItem *w, gpointer style);
static void on_nb_switch_ (GtkNotebook *notebook, GtkWidget *page,
guint page_num, gpointer user_data);
static window_info_t_ infos_[] = {
- {MIXGTK_MIXVM_DIALOG, NULL, NULL, "detach_vm", "MIX.detach",
+ {MIXGTK_MIXVM_DIALOG, NULL, NULL,
+ "detach_vm", "MIX.detach", "mixvm_toolbar", "attach_button_mixvm",
FALSE, mixvm_detach_, mixvm_attach_},
- {MIXGTK_MIXAL_DIALOG, NULL, NULL, "detach_source", "MIXAL.detach",
+ {MIXGTK_MIXAL_DIALOG, NULL, NULL,
+ "detach_source", "MIXAL.detach", "mixal_toolbar", "attach_button_mixal",
FALSE, mixal_detach_, mixal_attach_},
- {MIXGTK_DEVICES_DIALOG, NULL, NULL, "detach_dev", "Devices.detach",
+ {MIXGTK_DEVICES_DIALOG, NULL, NULL,
+ "detach_dev", "Devices.detach", "dev_toolbar", "attach_button_dev",
FALSE, dev_detach_, dev_attach_}
};
@@ -197,10 +203,10 @@ on_attach_toggled (GtkCheckMenuItem *item)
for (k = 0; k < INF_NO_; ++k)
if (item == infos_[k].menu) break;
g_return_if_fail (k < INF_NO_);
- if (item->active) mixgtk_wm_detach_window (k);
+ gboolean active = gtk_check_menu_item_get_active (item);
+ if (active) mixgtk_wm_detach_window (k);
else mixgtk_wm_attach_window (k);
- mixgtk_config_update (infos_[k].config_key,
- (item->active)? DETACH_YES_ : DETACH_NO_);
+ mixgtk_config_update (infos_[k].config_key, active? DETACH_YES_ : DETACH_NO_);
}
void
@@ -216,8 +222,8 @@ on_window_hide (GtkWidget *w)
void
on_show_toolbars_toggled (GtkCheckMenuItem *item)
{
- if (item->active != mixgtk_config_show_toolbars ())
- show_toolbars_ (item->active);
+ gboolean active = gtk_check_menu_item_get_active (item);
+ if (active != mixgtk_config_show_toolbars ()) show_toolbars_ (active);
}
void
@@ -252,8 +258,7 @@ init_info_ (void)
infos_[k].menu =
GTK_CHECK_MENU_ITEM
- (mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN,
- infos_[k].menu_name));
+ (mixgtk_widget_factory_get_by_name (infos_[k].menu_name));
g_assert (infos_[k].menu != NULL);
txt = mixgtk_config_get (infos_[k].config_key);
infos_[k].detached = txt && !g_ascii_strcasecmp (txt, DETACH_YES_);
@@ -309,8 +314,7 @@ init_signals_ (void)
G_OBJECT (mixgtk_widget_factory_get_dialog (infos_[k].dialog));
GObject *button =
- G_OBJECT (mixgtk_widget_factory_get (infos_[k].dialog,
- MIXGTK_WIDGET_ATTACH_BUTTON));
+ G_OBJECT (mixgtk_widget_factory_get_by_name (infos_[k].attach_button));
g_assert (dialog != NULL);
g_assert (button != NULL);
@@ -426,7 +430,7 @@ init_dev_ (void)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (page), devs);
+ gtk_container_add (GTK_CONTAINER (page), devs);
infos_[MIXGTK_DEVICES_WINDOW].widget = page;
@@ -450,8 +454,7 @@ init_tb_ (void)
gint style = mixgtk_config_tb_style ();
tb_menu_ = GTK_CHECK_MENU_ITEM
- (mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN,
- TB_MENU_NAME_));
+ (mixgtk_widget_factory_get_by_name (TB_MENU_NAME_));
g_assert (tb_menu_ != NULL);
gtk_check_menu_item_set_active (tb_menu_, mixgtk_config_show_toolbars ());
@@ -475,8 +478,7 @@ init_tb_ (void)
for (k = 0; k < 4; ++k)
{
- GtkWidget *item =
- mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN, names[k]);
+ GtkWidget *item = mixgtk_widget_factory_get_by_name (names[k]);
g_signal_connect (G_OBJECT (item),
"activate",
G_CALLBACK (on_tb_style_), GUINT_TO_POINTER (k));
@@ -493,22 +495,21 @@ on_tb_style_ (GtkMenuItem *w, gpointer style)
mixgtk_config_set_tb_style (ui_style);
}
+static const gchar *TB_NAME = "main_toolbar";
+
static void
set_tb_style_ (guint style)
{
- static const gchar *TB_NAME = "main_toolbar";
- static const gchar *TB_DNAME = "dlg_toolbar";
-
gint k;
- GtkToolbar *tb = GTK_TOOLBAR
- (mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN, TB_NAME));
+ GtkToolbar *tb =
+ GTK_TOOLBAR (mixgtk_widget_factory_get_by_name (TB_NAME));
gtk_toolbar_set_style (tb, style);
for (k = 0; k < INF_NO_; ++k)
{
GtkToolbar *tb = GTK_TOOLBAR
- (mixgtk_widget_factory_get_child_by_name (infos_[k].dialog, TB_DNAME));
+ (mixgtk_widget_factory_get_by_name (infos_[k].toolbar_name));
gtk_toolbar_set_style (tb, style);
}
}
@@ -516,12 +517,9 @@ set_tb_style_ (guint style)
static void
show_toolbars_ (gboolean show)
{
- static const gchar *HANDLE_NAME = "tb_handle";
-
gint k;
- GtkWidget *handle =
- mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN, HANDLE_NAME);
+ GtkWidget *handle = mixgtk_widget_factory_get_by_name (TB_NAME);
if (show)
gtk_widget_show (handle);
@@ -531,7 +529,7 @@ show_toolbars_ (gboolean show)
for (k = 0; k < INF_NO_; ++k)
{
GtkWidget *hd =
- mixgtk_widget_factory_get_child_by_name (infos_[k].dialog, HANDLE_NAME);
+ mixgtk_widget_factory_get_by_name (infos_[k].toolbar_name);
if (show) gtk_widget_show (hd); else gtk_widget_hide (hd);
}
@@ -544,7 +542,7 @@ init_autosave_ (void)
#define AUTOSAVE_ITEM_ "save_on_exit"
GtkCheckMenuItem *item = GTK_CHECK_MENU_ITEM
- (mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN, AUTOSAVE_ITEM_));
+ (mixgtk_widget_factory_get_by_name (AUTOSAVE_ITEM_));
if (item)
{
gtk_check_menu_item_set_active (item, mixgtk_config_is_autosave ());
@@ -559,8 +557,7 @@ init_about_ (void)
GtkWidget *label;
about_ = mixgtk_widget_factory_get_dialog (MIXGTK_ABOUT_DIALOG);
g_assert (about_ != NULL);
- label = mixgtk_widget_factory_get_child_by_name (MIXGTK_ABOUT_DIALOG,
- VERSION_LABEL_);
+ label = mixgtk_widget_factory_get_by_name (VERSION_LABEL_);
g_assert (label != NULL);
gtk_label_set_text (GTK_LABEL (label), VERSION);
gtk_widget_show (label);
@@ -574,10 +571,16 @@ mixvm_attach_ (void)
}
static void
+reparent_ (GtkWidget *widget, GtkWidget *parent)
+{
+ gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (widget)), widget);
+ gtk_container_add (GTK_CONTAINER (parent), widget);
+}
+
+static void
mixvm_detach_ (void)
{
- gtk_widget_reparent (infos_[MIXGTK_MIXVM_WINDOW].widget,
- GTK_WIDGET (mixvm_container_));
+ reparent_ (infos_[MIXGTK_MIXVM_WINDOW].widget, GTK_WIDGET (mixvm_container_));
}
static void
@@ -616,8 +619,7 @@ mixal_detach_ (void)
}
mixgtk_mixal_reparent (stat);
- gtk_widget_reparent (infos_[MIXGTK_MIXAL_WINDOW].widget,
- GTK_WIDGET (mixal_container_));
+ reparent_ (infos_[MIXGTK_MIXAL_WINDOW].widget, GTK_WIDGET (mixal_container_));
}
static void
@@ -630,10 +632,10 @@ dev_attach_ (void)
static void
dev_detach_ (void)
{
- gtk_widget_reparent (infos_[MIXGTK_DEVICES_WINDOW].widget,
- GTK_WIDGET (dev_container_));
+ reparent_ (infos_[MIXGTK_DEVICES_WINDOW].widget, GTK_WIDGET (dev_container_));
}
+
static void
on_nb_switch_ (GtkNotebook *notebook, GtkWidget *page,
guint page_num, gpointer user_data)
@@ -664,6 +666,3 @@ update_attach_buttons_ (void)
gtk_tool_item_set_visible_horizontal (detach_button_, wants_detach);
gtk_tool_item_set_visible_vertical (detach_button_, wants_detach);
}
-
-
-