[Xfce4-commits] <mousepad:master> * mousepad/mousepad-window.c: Cleanup some code and get rid of the multiple action groups.
Nick Schermer
noreply at xfce.org
Sat May 5 21:30:46 CEST 2012
Updating branch refs/heads/master
to a75d9920d838e508c10dfd17908233d45dc20e6c (commit)
from 2d17e63c32d75fb9fb7f98e8660b4980ec24af7d (commit)
commit a75d9920d838e508c10dfd17908233d45dc20e6c
Author: Nick Schermer <nick at xfce.org>
Date: Wed Oct 17 18:53:22 2007 +0000
* mousepad/mousepad-window.c: Cleanup some code and get rid of the
multiple action groups.
(Old svn revision: 26142)
ChangeLog | 17 +++--
mousepad/mousepad-preferences.c | 2 +-
mousepad/mousepad-window.c | 131 +++++++++++++++++++--------------------
3 files changed, 76 insertions(+), 74 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d5e4762..26390f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,16 @@
2007-10-17 Nick Schermer <nick at xfce.org>
- * mousepad/mousepad-window.c: Decrease the menu lock when a window
- is closed and disconnect the recent manager handler (this is a
- bug since 2.12 because the manager is a floating object).
+ * mousepad/mousepad-window.c: Cleanup some code and get rid of the
+ multiple action groups.
2007-10-17 Nick Schermer <nick at xfce.org>
- * mousepad/mousepad-{window,util}.c: Fix compiler warnings.
+ * mousepad/mousepad-window.c: Decrease the menu lock when a window
+ is closed and disconnect the recent manager handler (this is a
+ bug since 2.12 because the manager is a floating object).
+
+
+2007-10-17 Nick Schermer <nick at xfce.org>
+ * mousepad/mousepad-{window,util}.c: Fix compiler warnings.
2007-10-16 Nick Schermer <nick at xfce.org>
@@ -22,11 +27,11 @@
* mousepad/mousepad-encoding-dialog.{c,h}: Add a encoding dialog.
This dialog should help users to find the right encoding for a
document.
- * mousepad/mousepad-print.{c,h}: Initial version of a basic
+ * mousepad/mousepad-print.{c,h}: Initial version of a basic
printing support. Needs some big improvement tho.
* mousepad/mousepad-statusbar: Fix issues with some theme engines
that paint a line above the statusbar (instead of a frame).
- * mousepad/mousepad-window.c: A window is now destoyed when it
+ * mousepad/mousepad-window.c: A window is now destoyed when it
contains no tabs, previously this caused some segfaults with the
tab dnd code, but this is all fixed now.
* mousepad/mousepad-preferences.c: The option names are now stored
diff --git a/mousepad/mousepad-preferences.c b/mousepad/mousepad-preferences.c
index a372e19..5cb2fdc 100644
--- a/mousepad/mousepad-preferences.c
+++ b/mousepad/mousepad-preferences.c
@@ -571,7 +571,7 @@ mousepad_preferences_store (MousepadPreferences *preferences)
{
if (preferences->store_idle_id == 0)
{
- preferences->store_idle_id = g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) mousepad_preferences_store_idle,
+ preferences->store_idle_id = g_idle_add_full (G_PRIORITY_LOW, mousepad_preferences_store_idle,
preferences, mousepad_preferences_store_idle_destroy);
}
}
diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c
index 578582b..72a3ee2 100644
--- a/mousepad/mousepad-window.c
+++ b/mousepad/mousepad-window.c
@@ -277,10 +277,8 @@ struct _MousepadWindow
GClosure *menu_item_selected_closure;
GClosure *menu_item_deselected_closure;
- /* action groups */
- GtkActionGroup *window_actions;
- GtkActionGroup *gomenu_actions;
- GtkActionGroup *recent_actions;
+ /* action group */
+ GtkActionGroup *action_group;
/* UI manager */
GtkUIManager *ui_manager;
@@ -495,31 +493,25 @@ mousepad_window_init (MousepadWindow *window)
gtk_window_set_default_size (GTK_WINDOW (window), width, height);
/* the action group for this window */
- window->window_actions = gtk_action_group_new ("WindowActions");
- gtk_action_group_set_translation_domain (window->window_actions, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (window->window_actions, action_entries, G_N_ELEMENTS (action_entries), GTK_WIDGET (window));
- gtk_action_group_add_toggle_actions (window->window_actions, toggle_action_entries, G_N_ELEMENTS (toggle_action_entries), GTK_WIDGET (window));
+ window->action_group = gtk_action_group_new ("MousepadWindow");
+ gtk_action_group_set_translation_domain (window->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (window->action_group, action_entries, G_N_ELEMENTS (action_entries), GTK_WIDGET (window));
+ gtk_action_group_add_toggle_actions (window->action_group, toggle_action_entries, G_N_ELEMENTS (toggle_action_entries), GTK_WIDGET (window));
/* create the ui manager and connect proxy signals for the statusbar */
window->ui_manager = gtk_ui_manager_new ();
g_signal_connect (G_OBJECT (window->ui_manager), "connect-proxy", G_CALLBACK (mousepad_window_connect_proxy), window);
g_signal_connect (G_OBJECT (window->ui_manager), "disconnect-proxy", G_CALLBACK (mousepad_window_disconnect_proxy), window);
- gtk_ui_manager_insert_action_group (window->ui_manager, window->window_actions, 0);
+ gtk_ui_manager_insert_action_group (window->ui_manager, window->action_group, 0);
gtk_ui_manager_add_ui_from_string (window->ui_manager, mousepad_window_ui, mousepad_window_ui_length, NULL);
/* create the recent manager */
window->recent_manager = gtk_recent_manager_get_default ();
- window->recent_actions = gtk_action_group_new ("RecentActions");
- gtk_ui_manager_insert_action_group (window->ui_manager, window->recent_actions, -1);
g_signal_connect_swapped (G_OBJECT (window->recent_manager), "changed", G_CALLBACK (mousepad_window_recent_menu), window);
/* create the recent menu */
mousepad_window_recent_menu (window);
- /* create action group for the go menu */
- window->gomenu_actions = gtk_action_group_new ("GoMenuActions");
- gtk_ui_manager_insert_action_group (window->ui_manager, window->gomenu_actions, -1);
-
/* set accel group for the window */
accel_group = gtk_ui_manager_get_accel_group (window->ui_manager);
gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
@@ -595,7 +587,7 @@ mousepad_window_init (MousepadWindow *window)
gtk_widget_show (window->notebook);
/* check if we should display the statusbar by default */
- action = gtk_action_group_get_action (window->window_actions, "statusbar");
+ action = gtk_action_group_get_action (window->action_group, "statusbar");
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), statusbar_visible);
/* allow drops in the window */
@@ -609,7 +601,7 @@ static void
mousepad_window_dispose (GObject *object)
{
MousepadWindow *window = MOUSEPAD_WINDOW (object);
-
+
/* disconnect recent manager signal */
g_signal_handlers_disconnect_by_func (G_OBJECT (window->recent_manager), mousepad_window_recent_menu, window);
@@ -643,10 +635,8 @@ mousepad_window_finalize (GObject *object)
g_signal_handlers_disconnect_matched (G_OBJECT (window->ui_manager), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, window);
g_object_unref (G_OBJECT (window->ui_manager));
- /* release the action groups */
- g_object_unref (G_OBJECT (window->window_actions));
- g_object_unref (G_OBJECT (window->gomenu_actions));
- g_object_unref (G_OBJECT (window->recent_actions));
+ /* release the action group */
+ g_object_unref (G_OBJECT (window->action_group));
/* release the preferences reference */
g_object_unref (G_OBJECT (window->preferences));
@@ -673,7 +663,7 @@ mousepad_window_configure_event (GtkWidget *widget,
if (GTK_WIDGET_VISIBLE (widget))
{
/* save the geometry one second after the last configure event */
- window->save_geometry_timer_id = g_timeout_add_full (G_PRIORITY_LOW, 1000, (GSourceFunc) mousepad_window_save_geometry_timer,
+ window->save_geometry_timer_id = g_timeout_add_full (G_PRIORITY_LOW, 1000, mousepad_window_save_geometry_timer,
window, mousepad_window_save_geometry_timer_destroy);
}
}
@@ -1022,7 +1012,7 @@ mousepad_window_add (MousepadWindow *window,
/* create the tab label */
label = mousepad_document_get_tab_label (document);
-
+
/* get active page */
page = gtk_notebook_get_current_page (GTK_NOTEBOOK (window->notebook));
@@ -1465,13 +1455,13 @@ mousepad_window_selection_changed (MousepadDocument *document,
{
GtkAction *action;
- action = gtk_action_group_get_action (window->window_actions, "cut");
+ action = gtk_action_group_get_action (window->action_group, "cut");
gtk_action_set_sensitive (action, selected);
- action = gtk_action_group_get_action (window->window_actions, "copy");
+ action = gtk_action_group_get_action (window->action_group, "copy");
gtk_action_set_sensitive (action, selected);
- action = gtk_action_group_get_action (window->window_actions, "delete");
+ action = gtk_action_group_get_action (window->action_group, "delete");
gtk_action_set_sensitive (action, selected);
}
@@ -1483,7 +1473,7 @@ mousepad_window_can_undo (MousepadWindow *window,
{
GtkAction *action;
- action = gtk_action_group_get_action (window->window_actions, "undo");
+ action = gtk_action_group_get_action (window->action_group, "undo");
gtk_action_set_sensitive (action, can_undo);
}
@@ -1495,7 +1485,7 @@ mousepad_window_can_redo (MousepadWindow *window,
{
GtkAction *action;
- action = gtk_action_group_get_action (window->window_actions, "redo");
+ action = gtk_action_group_get_action (window->action_group, "redo");
gtk_action_set_sensitive (action, can_redo);
}
@@ -1535,37 +1525,37 @@ mousepad_window_update_actions (MousepadWindow *window)
g_object_get (G_OBJECT (window->preferences), "misc-cycle-tabs", &cycle_tabs, NULL);
/* set the sensitivity of the back and forward buttons in the go menu */
- action = gtk_action_group_get_action (window->window_actions, "back");
+ action = gtk_action_group_get_action (window->action_group, "back");
gtk_action_set_sensitive (action, (cycle_tabs && n_pages > 1) || (page_num > 0));
- action = gtk_action_group_get_action (window->window_actions, "forward");
+ action = gtk_action_group_get_action (window->action_group, "forward");
gtk_action_set_sensitive (action, (cycle_tabs && n_pages > 1 ) || (page_num < n_pages - 1));
/* set the reload, detach and save sensitivity */
- action = gtk_action_group_get_action (window->window_actions, "save-file");
+ action = gtk_action_group_get_action (window->action_group, "save-file");
gtk_action_set_sensitive (action, !mousepad_document_get_readonly (document));
- action = gtk_action_group_get_action (window->window_actions, "detach-tab");
+ action = gtk_action_group_get_action (window->action_group, "detach-tab");
gtk_action_set_sensitive (action, (n_pages > 1));
- action = gtk_action_group_get_action (window->window_actions, "reload");
+ action = gtk_action_group_get_action (window->action_group, "reload");
gtk_action_set_sensitive (action, mousepad_file_get_filename (document->file) != NULL);
/* toggle the document settings */
active = mousepad_document_get_word_wrap (document);
- action = gtk_action_group_get_action (window->window_actions, "word-wrap");
+ action = gtk_action_group_get_action (window->action_group, "word-wrap");
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
active = mousepad_view_get_line_numbers (document->textview);
- action = gtk_action_group_get_action (window->window_actions, "line-numbers");
+ action = gtk_action_group_get_action (window->action_group, "line-numbers");
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
active = mousepad_view_get_auto_indent (document->textview);
- action = gtk_action_group_get_action (window->window_actions, "auto-indent");
+ action = gtk_action_group_get_action (window->action_group, "auto-indent");
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
active = mousepad_view_get_insert_spaces (document->textview);
- action = gtk_action_group_get_action (window->window_actions, "insert-spaces");
+ action = gtk_action_group_get_action (window->action_group, "insert-spaces");
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
/* set the sensitivity of the undo and redo actions */
@@ -1595,7 +1585,7 @@ mousepad_window_update_gomenu_idle (gpointer user_data)
MousepadWindow *window;
gint npages;
gint n;
- gchar name[15];
+ gchar *name;
const gchar *title;
const gchar *tooltip;
gchar accelerator[7];
@@ -1615,13 +1605,16 @@ mousepad_window_update_gomenu_idle (gpointer user_data)
/* remove the old merge */
if (window->gomenu_merge_id != 0)
- gtk_ui_manager_remove_ui (window->ui_manager, window->gomenu_merge_id);
-
- /* drop all the previous actions from the action group */
- actions = gtk_action_group_list_actions (window->gomenu_actions);
- for (li = actions; li != NULL; li = li->next)
- gtk_action_group_remove_action (window->gomenu_actions, GTK_ACTION (li->data));
- g_list_free (actions);
+ {
+ gtk_ui_manager_remove_ui (window->ui_manager, window->gomenu_merge_id);
+
+ /* drop all the previous actions from the action group */
+ actions = gtk_action_group_list_actions (window->action_group);
+ for (li = actions; li != NULL; li = li->next)
+ if (strncmp (gtk_action_get_name (li->data), "mousepad-document-", 18) == 0)
+ gtk_action_group_remove_action (window->action_group, GTK_ACTION (li->data));
+ g_list_free (actions);
+ }
/* create a new merge id */
window->gomenu_merge_id = gtk_ui_manager_new_merge_id (window->ui_manager);
@@ -1634,7 +1627,7 @@ mousepad_window_update_gomenu_idle (gpointer user_data)
document = MOUSEPAD_DOCUMENT (gtk_notebook_get_nth_page (GTK_NOTEBOOK (window->notebook), n));
/* create a new action name */
- g_snprintf (name, sizeof (name), "document-%d", n);
+ name = g_strdup_printf ("mousepad-document-%d", n);
/* get the name and file name */
title = mousepad_document_get_basename (document);
@@ -1644,8 +1637,7 @@ mousepad_window_update_gomenu_idle (gpointer user_data)
action = gtk_radio_action_new (name, title, tooltip, NULL, n);
gtk_radio_action_set_group (action, group);
group = gtk_radio_action_get_group (action);
- g_signal_connect (G_OBJECT (action), "activate",
- G_CALLBACK (mousepad_window_action_goto), window->notebook);
+ g_signal_connect (G_OBJECT (action), "activate", G_CALLBACK (mousepad_window_action_goto), window->notebook);
/* connect the action to the document to we can easily active it when the user switched from tab */
g_object_set_data (G_OBJECT (document), I_("go-menu-action"), action);
@@ -1654,11 +1646,11 @@ mousepad_window_update_gomenu_idle (gpointer user_data)
{
/* create an accelerator and add it to the menu */
g_snprintf (accelerator, sizeof (accelerator), "<Alt>%d", n+1);
- gtk_action_group_add_action_with_accel (window->gomenu_actions, GTK_ACTION (action), accelerator);
+ gtk_action_group_add_action_with_accel (window->action_group, GTK_ACTION (action), accelerator);
}
else
/* add a menu item without accelerator */
- gtk_action_group_add_action (window->gomenu_actions, GTK_ACTION (action));
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (action));
/* select the active entry */
if (gtk_notebook_get_current_page (GTK_NOTEBOOK (window->notebook)) == n)
@@ -1671,6 +1663,9 @@ mousepad_window_update_gomenu_idle (gpointer user_data)
gtk_ui_manager_add_ui (window->ui_manager, window->gomenu_merge_id,
"/main-menu/go-menu/placeholder-go-items",
name, name, GTK_UI_MANAGER_MENUITEM, FALSE);
+
+ /* cleanup */
+ g_free (name);
}
/* make sure the ui is up2date to avoid flickering */
@@ -1706,7 +1701,7 @@ mousepad_window_update_gomenu (MousepadWindow *window)
return;
/* schedule a go menu update */
- window->update_go_menu_id = g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) mousepad_window_update_gomenu_idle,
+ window->update_go_menu_id = g_idle_add_full (G_PRIORITY_LOW, mousepad_window_update_gomenu_idle,
window, mousepad_window_update_gomenu_idle_destroy);
}
@@ -1815,15 +1810,18 @@ mousepad_window_recent_menu_idle (gpointer user_data)
GDK_THREADS_ENTER ();
- /* unmerge the ui controls from the previous update */
if (window->recent_merge_id != 0)
- gtk_ui_manager_remove_ui (window->ui_manager, window->recent_merge_id);
-
- /* drop all the previous actions from the action group */
- actions = gtk_action_group_list_actions (window->recent_actions);
- for (li = actions; li != NULL; li = li->next)
- gtk_action_group_remove_action (window->recent_actions, li->data);
- g_list_free (actions);
+ {
+ /* unmerge the ui controls from the previous update */
+ gtk_ui_manager_remove_ui (window->ui_manager, window->recent_merge_id);
+
+ /* drop all the previous actions from the action group */
+ actions = gtk_action_group_list_actions (window->action_group);
+ for (li = actions; li != NULL; li = li->next)
+ if (strncmp (gtk_action_get_name (li->data), "recent-info-", 12) == 0)
+ gtk_action_group_remove_action (window->action_group, li->data);
+ g_list_free (actions);
+ }
/* create a new merge id */
window->recent_merge_id = gtk_ui_manager_new_merge_id (window->ui_manager);
@@ -1874,11 +1872,10 @@ mousepad_window_recent_menu_idle (gpointer user_data)
/* add the info data and connect a menu signal */
g_object_set_data_full (G_OBJECT (action), I_("gtk-recent-info"), gtk_recent_info_ref (info), (GDestroyNotify) gtk_recent_info_unref);
- g_signal_connect (G_OBJECT (action), "activate",
- G_CALLBACK (mousepad_window_action_open_recent), window);
+ g_signal_connect (G_OBJECT (action), "activate", G_CALLBACK (mousepad_window_action_open_recent), window);
/* add the action to the recent actions group */
- gtk_action_group_add_action (window->recent_actions, action);
+ gtk_action_group_add_action (window->action_group, action);
/* add the action to the menu */
gtk_ui_manager_add_ui (window->ui_manager, window->recent_merge_id,
@@ -1890,12 +1887,12 @@ mousepad_window_recent_menu_idle (gpointer user_data)
}
/* set the visibility of the 'No items found' action */
- action = gtk_action_group_get_action (window->window_actions, "no-recent-items");
+ action = gtk_action_group_get_action (window->action_group, "no-recent-items");
gtk_action_set_visible (action, (filtered == NULL));
gtk_action_set_sensitive (action, FALSE);
/* set the sensitivity of the clear button */
- action = gtk_action_group_get_action (window->window_actions, "clear-recent");
+ action = gtk_action_group_get_action (window->action_group, "clear-recent");
gtk_action_set_sensitive (action, (filtered != NULL));
/* cleanup */
@@ -1926,7 +1923,7 @@ static void
mousepad_window_recent_menu (MousepadWindow *window)
{
_mousepad_return_if_fail (MOUSEPAD_IS_WINDOW (window));
-
+
/* leave when we're updating multiple files or there is this an idle function pending */
if (lock_menu_updates > 0 || window->update_recent_menu_id != 0)
return;
@@ -2543,7 +2540,7 @@ mousepad_window_action_close (GtkAction *action,
/* ask user what to do, break when he/she hits the cancel button */
if (!mousepad_window_close_document (window, MOUSEPAD_DOCUMENT (document)))
- {
+ {
/* update the go menu */
mousepad_window_update_gomenu (window);
@@ -2552,7 +2549,7 @@ mousepad_window_action_close (GtkAction *action,
}
}
}
-
+
/* allow updates again */
lock_menu_updates--;
More information about the Xfce4-commits
mailing list