SF.net SVN: geany:[5305] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Wed Oct 20 11:49:50 UTC 2010


Revision: 5305
          http://geany.svn.sourceforge.net/geany/?rev=5305&view=rev
Author:   ntrel
Date:     2010-10-20 11:49:50 +0000 (Wed, 20 Oct 2010)

Log Message:
-----------
Use radio buttons for View->Editor->Color Schemes menu.
Don't hide the menu when only the default item is available.

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

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-10-20 11:38:37 UTC (rev 5304)
+++ trunk/ChangeLog	2010-10-20 11:49:50 UTC (rev 5305)
@@ -1,3 +1,10 @@
+2010-10-20  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/highlighting.c:
+   Use radio buttons for View->Editor->Color Schemes menu.
+   Don't hide the menu when only the default item is available.
+
+
 2010-10-18  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * data/filetypes.c, data/filetypes.d:

Modified: trunk/src/highlighting.c
===================================================================
--- trunk/src/highlighting.c	2010-10-20 11:38:37 UTC (rev 5304)
+++ trunk/src/highlighting.c	2010-10-20 11:49:50 UTC (rev 5305)
@@ -3477,8 +3477,12 @@
 	gchar *fname;
 	gchar *path;
 
+	/* prevent callback on setting initial value */
+	if (!GTK_WIDGET_MAPPED(menuitem))
+		return;
+
 	/* check if default item */
-	if (user_data)
+	if (!user_data)
 	{
 		setptr(editor_prefs.color_scheme, NULL);
 		filetypes_reload();
@@ -3511,36 +3515,48 @@
 }
 
 
-static void add_color_scheme_item(const gchar *fname, GtkWidget *menu)
+static void add_color_scheme_item(GtkWidget *menu, const gchar *fname)
 {
-	GtkWidget *tmp_button;
-	gchar *label;
+	static GSList *group = NULL;
+	GtkWidget *item;
 
-	g_return_if_fail(fname);
-	g_return_if_fail(menu);
+	if (fname)
+	{
+		gchar *label = utils_get_utf8_from_locale(fname);
 
-	label = utils_get_utf8_from_locale(fname);
+		item = gtk_radio_menu_item_new_with_label(group, label);
+		g_free(label);
+	}
+	else
+		item = gtk_radio_menu_item_new_with_mnemonic(group, _("_Default"));
 
-	tmp_button = gtk_menu_item_new_with_label(label);
-	gtk_widget_show(tmp_button);
-	gtk_container_add(GTK_CONTAINER(menu), tmp_button);
-	g_signal_connect(tmp_button, "activate", G_CALLBACK(on_color_scheme_clicked), NULL);
+	group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(item));
+	if (utils_str_equal(editor_prefs.color_scheme, fname))
+		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
 
-	g_free(label);
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	g_signal_connect(item, "activate",
+		G_CALLBACK(on_color_scheme_clicked), GINT_TO_POINTER(fname != NULL));
 }
 
 
 static gboolean add_color_scheme_items(GtkWidget *menu)
 {
-	GSList *list = utils_get_config_files(GEANY_COLORSCHEMES_SUBDIR);
-	GSList *node;
+	GSList *list, *node;
 
+	g_return_val_if_fail(menu, FALSE);
+
+	add_color_scheme_item(menu, NULL);
+	list = utils_get_config_files(GEANY_COLORSCHEMES_SUBDIR);
+
 	foreach_slist(node, list)
 	{
 		gchar *fname = node->data;
 
 		if (g_str_has_suffix(fname, ".conf"))
-			add_color_scheme_item(fname, menu);
+			add_color_scheme_item(menu, fname);
+
 		g_free(fname);
 	}
 	g_slist_free(list);
@@ -3560,13 +3576,8 @@
 	menu = gtk_menu_new();
 	gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
 
-	item = gtk_menu_item_new_with_mnemonic(_("_Default"));
-	gtk_container_add(GTK_CONTAINER(menu), item);
-	g_signal_connect(item, "activate", G_CALLBACK(on_color_scheme_clicked), GINT_TO_POINTER(TRUE));
-
-	/* for now we don't show the color scheme menu unless there are files */
-	if (add_color_scheme_items(menu))
-		gtk_widget_show_all(root);
+	add_color_scheme_items(menu);
+	gtk_widget_show_all(root);
 }
 
 


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