anjuta r3987 - in trunk: . libanjuta plugins/terminal



Author: sgranjoux
Date: Thu Jun  5 19:41:31 2008
New Revision: 3987
URL: http://svn.gnome.org/viewvc/anjuta?rev=3987&view=rev

Log:
	* plugins/terminal/terminal.c,
	libanjuta/anjuta-preferences.c:
	Fix a crash when GNOME Terminal is not installed


Modified:
   trunk/ChangeLog
   trunk/libanjuta/anjuta-preferences.c
   trunk/plugins/terminal/terminal.c

Modified: trunk/libanjuta/anjuta-preferences.c
==============================================================================
--- trunk/libanjuta/anjuta-preferences.c	(original)
+++ trunk/libanjuta/anjuta-preferences.c	Thu Jun  5 19:41:31 2008
@@ -1104,7 +1104,10 @@
 	g_return_val_if_fail (GTK_IS_WIDGET (object), FALSE);
 	g_return_val_if_fail (key != NULL, FALSE);
 	g_return_val_if_fail (strlen(key) > 0, FALSE);
-	
+	g_return_val_if_fail ((object_type != ANJUTA_PROPERTY_OBJECT_TYPE_COMBO) ||
+				((default_value != NULL) &&
+				 (*default_value != '\0')), FALSE);
+
 	p = g_new0 (AnjutaProperty, 1);
 	g_object_ref (object);
 	p->object = object;

Modified: trunk/plugins/terminal/terminal.c
==============================================================================
--- trunk/plugins/terminal/terminal.c	(original)
+++ trunk/plugins/terminal/terminal.c	Thu Jun  5 19:41:31 2008
@@ -766,7 +766,6 @@
 {
 	GSList *profiles;
 	GConfClient *client;	
-	GString *default_value;
 	
 	/* Create the terminal preferences page */
 	TerminalPlugin* term_plugin = ANJUTA_PLUGIN_TERMINAL (ipref);
@@ -775,16 +774,18 @@
 									"Terminal", _("Terminal"), ICON_FILE);
 	
 	term_plugin->pref_profile_combo = glade_xml_get_widget (gxml, "profile_list_combo");
+	term_plugin->pref_default_button = glade_xml_get_widget (gxml, "preferences_toggle:bool:1:0:terminal.default.profile");
 
 	/* Update the currently available list of terminal profiles */
 	client = gconf_client_get_default ();
 	profiles = gconf_client_get_list (client, GCONF_PROFILE_LIST,
 									  GCONF_VALUE_STRING, NULL);
-	default_value = g_string_new (NULL);
 	if (profiles)
 	{
 		GtkListStore *store;
+		GString *default_value;
 			
+		default_value = g_string_new (NULL);
 		store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (term_plugin->pref_profile_combo)));
 		
 		gtk_list_store_clear (store);
@@ -793,22 +794,26 @@
 		g_slist_foreach (profiles, (GFunc)g_free, NULL);
 		g_slist_free (profiles);
 		
-	}
-	anjuta_preferences_register_property_raw (term_plugin->prefs,
-											  term_plugin->pref_profile_combo,
-											  PREFS_TERMINAL_PROFILE,
-											  default_value->str,
-											  1,
-											  ANJUTA_PROPERTY_OBJECT_TYPE_COMBO,
-											  ANJUTA_PROPERTY_DATA_TYPE_TEXT);
-	g_string_free (default_value, TRUE);
+		anjuta_preferences_register_property_raw (term_plugin->prefs,
+												  term_plugin->pref_profile_combo,
+												  PREFS_TERMINAL_PROFILE,
+												  default_value->str,
+												  1,
+												  ANJUTA_PROPERTY_OBJECT_TYPE_COMBO,
+												  ANJUTA_PROPERTY_DATA_TYPE_TEXT);
+		g_string_free (default_value, TRUE);
 		
-	term_plugin->pref_default_button =
-		glade_xml_get_widget (gxml,
-						"preferences_toggle:bool:1:0:terminal.default.profile");
-	use_default_profile_cb (GTK_TOGGLE_BUTTON (term_plugin->pref_default_button), term_plugin);
-	g_signal_connect (G_OBJECT(term_plugin->pref_default_button), "toggled",
+		use_default_profile_cb (GTK_TOGGLE_BUTTON (term_plugin->pref_default_button), term_plugin);
+		g_signal_connect (G_OBJECT(term_plugin->pref_default_button), "toggled",
 						  G_CALLBACK (use_default_profile_cb), term_plugin);
+	}
+	else
+	{
+		/* No profile, perhaps GNOME Terminal is not installed,
+		 * Remove selection */
+		gtk_widget_set_sensitive (term_plugin->pref_profile_combo, FALSE);
+		gtk_widget_set_sensitive (term_plugin->pref_default_button, FALSE);
+	}
 	
 	g_object_unref (gxml);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]