SF.net SVN: geany:[3333] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sat Dec 6 16:57:52 UTC 2008


Revision: 3333
          http://geany.svn.sourceforge.net/geany/?rev=3333&view=rev
Author:   eht16
Date:     2008-12-06 16:57:52 +0000 (Sat, 06 Dec 2008)

Log Message:
-----------
Fix broken recent files menus.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/ui_utils.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-12-06 15:26:59 UTC (rev 3332)
+++ trunk/ChangeLog	2008-12-06 16:57:52 UTC (rev 3333)
@@ -31,6 +31,8 @@
    definition.
  * src/Makefile.am, wscript:
    Install toolbar.h.
+ * src/ui_utils.c:
+   Fix broken recent files menus.
 
 
 2008-12-05  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c	2008-12-06 15:26:59 UTC (rev 3332)
+++ trunk/src/ui_utils.c	2008-12-06 16:57:52 UTC (rev 3333)
@@ -865,10 +865,11 @@
 void ui_create_recent_menu(void)
 {
 	GtkWidget *tmp;
-	guint i;
+	guint i, len;
 	gchar *filename;
 
-	for (i = 0; i < MIN(file_prefs.mru_length, g_queue_get_length(ui_prefs.recent_queue)); i++)
+	len = MIN(file_prefs.mru_length, g_queue_get_length(ui_prefs.recent_queue));
+	for (i = 0; i < len; i++)
 	{
 		filename = g_queue_peek_nth(ui_prefs.recent_queue, i);
 		/* create menu item for the recent files menu in the menu bar */
@@ -888,9 +889,7 @@
 }
 
 
-static void
-recent_file_activate_cb                (GtkMenuItem     *menuitem,
-                                        G_GNUC_UNUSED gpointer         user_data)
+static void recent_file_activate_cb(GtkMenuItem *menuitem, G_GNUC_UNUSED gpointer user_data)
 {
 	gchar *utf8_filename = ui_menu_item_get_text(menuitem);
 	gchar *locale_filename = utils_get_locale_from_utf8(utf8_filename);
@@ -990,7 +989,7 @@
 	 * first for the recent files menu in the menu bar */
 	tmp = gtk_menu_item_new_with_label(utf8_filename);
 	gtk_widget_show(tmp);
-	gtk_container_add(GTK_CONTAINER(ui_widgets.recent_files_menu_menubar), tmp);
+	gtk_menu_shell_prepend(GTK_MENU_SHELL(ui_widgets.recent_files_menu_menubar), tmp);
 	g_signal_connect(tmp, "activate", G_CALLBACK(recent_file_activate_cb), NULL);
 	/* then for the recent files menu in the tool bar */
 	if (ui_widgets.recent_files_menu_toolbar != NULL)
@@ -998,6 +997,10 @@
 		tmp = gtk_menu_item_new_with_label(utf8_filename);
 		gtk_widget_show(tmp);
 		gtk_container_add(GTK_CONTAINER(ui_widgets.recent_files_menu_toolbar), tmp);
+		/* this is a bit ugly, but we need to use gtk_container_add(). Using
+		 * gtk_menu_shell_prepend() doesn't emit GtkContainer's "add" signal which we need in
+		 * GeanyMenubuttonAction */
+		gtk_menu_reorder_child(GTK_MENU(ui_widgets.recent_files_menu_toolbar), tmp, 0);
 		g_signal_connect(tmp, "activate", G_CALLBACK(recent_file_activate_cb), NULL);
 	}
 }
@@ -1026,7 +1029,7 @@
 	/* create item for the menu bar menu */
 	tmp = gtk_menu_item_new_with_label(filename);
 	gtk_widget_show(tmp);
-	gtk_container_add(GTK_CONTAINER(ui_widgets.recent_files_menu_menubar), tmp);
+	gtk_menu_shell_prepend(GTK_MENU_SHELL(ui_widgets.recent_files_menu_menubar), tmp);
 	g_signal_connect(tmp, "activate", G_CALLBACK(recent_file_activate_cb), NULL);
 
 	/* clean the MRU list before adding an item (toolbar) */
@@ -1047,6 +1050,7 @@
 		tmp = gtk_menu_item_new_with_label(filename);
 		gtk_widget_show(tmp);
 		gtk_container_add(GTK_CONTAINER(ui_widgets.recent_files_menu_toolbar), tmp);
+		gtk_menu_reorder_child(GTK_MENU(ui_widgets.recent_files_menu_toolbar), tmp, 0);
 		g_signal_connect(tmp, "activate", G_CALLBACK(recent_file_activate_cb), NULL);
 	}
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list