Author: peter
Date: 2007-01-10 13:53:01 +0000 (Wed, 10 Jan 2007)
New Revision: 24344
Modified:
squeeze/trunk/src/preferences_dialog.c
squeeze/trunk/src/widget_factory.c
Log:
Opening add and exctract dialogs multiple times and changing the properties;
doesn't crash anymore
Modified: squeeze/trunk/src/preferences_dialog.c
===================================================================
--- squeeze/trunk/src/preferences_dialog.c 2007-01-10 11:53:30 UTC (rev
24343)
+++ squeeze/trunk/src/preferences_dialog.c 2007-01-10 13:53:01 UTC (rev
24344)
@@ -37,7 +37,10 @@
inline static void
sq_preferences_dialog_create_support_page(SQPreferencesDialog *dialog);
-
+/*
+inline static void
+sq_preferences_dialog_create_general_page(SQPreferencesDialog *dialog);
+*/
static GtkWidget *
sq_preferences_dialog_create_support_object_page(SQSupportTuple *tuple);
@@ -149,7 +152,52 @@
return dialog;
}
+/*
inline static void
+sq_preferences_dialog_create_general_page(SQPreferencesDialog *dialog)
+{
+ box = gtk_vbox_new(FALSE, 0);
+ label = gtk_label_new_with_mnemonic(_("_General"));
+ gtk_notebook_append_page(GTK_NOTEBOOK(dialog->notebook), box, label);
+
+ frame = gtk_frame_new(_("Archive viewer:"));
+ gtk_box_pack_start(GTK_BOX(box), frame,FALSE, FALSE, 0);
+ gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE);
+ gtk_container_set_border_width(GTK_CONTAINER(frame), 0);
+
+ GtkWidget *_vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(frame), _vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(_vbox), 0);
+
+ dialog->general.viewer.show_icons =
gtk_check_button_new_with_mnemonic(_("_Show Icons"));
+ gtk_box_pack_start(GTK_BOX(_vbox), dialog->general.viewer.show_icons,
FALSE, FALSE, 0);
+
+ dialog->general.viewer.rules_hint =
gtk_check_button_new_with_mnemonic(_("_Rules Hint"));
+ gtk_box_pack_start(GTK_BOX(_vbox), dialog->general.viewer.rules_hint,
FALSE, FALSE, 0);
+
+ frame = gtk_frame_new(_("Sorting:"));
+ gtk_box_pack_start(GTK_BOX(_vbox), frame,FALSE, FALSE, 0);
+ gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE);
+ gtk_container_set_border_width(GTK_CONTAINER(frame), 0);
+
+ GtkWidget *sort_vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(frame), sort_vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(sort_vbox), 0);
+
+ dialog->general.viewer.sorting.sort_case =
gtk_check_button_new_with_mnemonic(_("Sort _Case Sensitive "));
+ gtk_box_pack_start(GTK_BOX(sort_vbox),
dialog->general.viewer.sorting.sort_case, FALSE, FALSE, 0);
+
+ dialog->general.viewer.sorting.sort_folders =
gtk_check_button_new_with_mnemonic(_("Sort _Folders First"));
+ gtk_box_pack_start(GTK_BOX(sort_vbox),
dialog->general.viewer.sorting.sort_folders, FALSE, FALSE, 0);
+
+#ifdef SQ_MAIN_ANY_BAR
+ frame = sq_widget_factory_create_property_widget(window->widget_factory,
G_OBJECT(window), "navigation-style");
+ gtk_box_pack_start(GTK_BOX(box), frame,FALSE, FALSE, 0);
+#endif
+}
+*/
+
+inline static void
sq_preferences_dialog_create_support_page(SQPreferencesDialog *dialog)
{
GtkWidget *iconview;
Modified: squeeze/trunk/src/widget_factory.c
===================================================================
--- squeeze/trunk/src/widget_factory.c 2007-01-10 11:53:30 UTC (rev 24343)
+++ squeeze/trunk/src/widget_factory.c 2007-01-10 13:53:01 UTC (rev 24344)
@@ -65,6 +65,8 @@
cb_sq_widget_factory_property_changed(GtkWidget *widget, gpointer user_data);
static void
cb_sq_widget_factory_property_notify(GObject *obj, GParamSpec *pspec, gpointer
user_data);
+static void
+cb_sq_widget_factory_widget_destroyed(GtkObject *obj, gpointer user_data);
static void
cb_sq_widget_factory_action_triggered(GtkWidget *widget, gpointer user_data);
@@ -125,6 +127,7 @@
g_object_set_data(G_OBJECT(check), SQ_PROPERTY_SPEC_DATA, pspec);
g_signal_connect(G_OBJECT(check), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), check);
+ g_signal_connect(GTK_OBJECT(check), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
const gchar *large_tip = g_param_spec_get_blurb(pspec);
gchar *small_tip = NULL;
@@ -231,6 +234,7 @@
g_object_set_data(G_OBJECT(spin), SQ_PROPERTY_SPEC_DATA, pspec);
g_signal_connect(G_OBJECT(spin), "value-changed",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), spin);
+ g_signal_connect(GTK_OBJECT(spin), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 3);
gtk_box_pack_end(GTK_BOX(box), spin, TRUE, TRUE, 3);
@@ -272,6 +276,7 @@
g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_VALUE_DATA,
GINT_TO_POINTER(values[i].value));
g_signal_connect(G_OBJECT(radio), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), radio);
+ g_signal_connect(GTK_OBJECT(radio), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
if(g_value_get_enum(value) == values[i].value)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio),
TRUE);
@@ -309,6 +314,7 @@
g_object_set_data(G_OBJECT(combo), SQ_PROPERTY_SPEC_DATA, pspec);
g_signal_connect(G_OBJECT(combo), "changed",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), combo);
+ g_signal_connect(GTK_OBJECT(combo), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
for(i = 0; i < n; ++i)
{
@@ -360,6 +366,7 @@
g_object_set_data(G_OBJECT(check), SQ_PROPERTY_VALUE_DATA,
GINT_TO_POINTER(values[i].value));
g_signal_connect(G_OBJECT(check), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), check);
+ g_signal_connect(GTK_OBJECT(check), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),
g_value_get_enum(value) & values[i].value);
gtk_box_pack_start(GTK_BOX(box), check, FALSE, FALSE, 5);
@@ -392,6 +399,7 @@
g_object_set_data(G_OBJECT(entry), SQ_PROPERTY_SPEC_DATA, pspec);
g_signal_connect(G_OBJECT(entry), "activate",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), entry);
+ g_signal_connect(GTK_OBJECT(entry), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
gtk_entry_set_text(GTK_ENTRY(entry), g_value_get_string(value));
@@ -470,6 +478,8 @@
g_value_unset(&value);
+ g_debug("created %p", widget);
+
return widget;
}
@@ -482,6 +492,7 @@
g_object_set_data(G_OBJECT(check), SQ_PROPERTY_SPEC_DATA, pspec);
g_signal_connect(G_OBJECT(check), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), check);
+ g_signal_connect(GTK_OBJECT(check), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(check),
g_value_get_boolean(value));
@@ -508,6 +519,7 @@
g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_VALUE_DATA,
GINT_TO_POINTER(values[i].value));
g_signal_connect(G_OBJECT(radio), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), radio);
+ g_signal_connect(GTK_OBJECT(radio), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
if(g_value_get_enum(value) == values[i].value)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(radio), TRUE);
@@ -541,6 +553,7 @@
g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_VALUE_DATA,
GINT_TO_POINTER(values[i].value));
g_signal_connect(G_OBJECT(radio), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), radio);
+ g_signal_connect(GTK_OBJECT(radio), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
if(g_value_get_enum(value) == values[i].value)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(radio), TRUE);
@@ -574,6 +587,7 @@
g_object_set_data(G_OBJECT(check), SQ_PROPERTY_VALUE_DATA,
GINT_TO_POINTER(values[i].value));
g_signal_connect(G_OBJECT(check), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), check);
+ g_signal_connect(GTK_OBJECT(check), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(check),
g_value_get_enum(value) & values[i].value);
@@ -603,6 +617,7 @@
g_object_set_data(G_OBJECT(check), SQ_PROPERTY_VALUE_DATA,
GINT_TO_POINTER(values[i].value));
g_signal_connect(G_OBJECT(check), "toggled",
G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
g_signal_connect(obj, "notify",
G_CALLBACK(cb_sq_widget_factory_property_notify), check);
+ g_signal_connect(GTK_OBJECT(check), "destroy",
G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(check),
g_value_get_enum(value) & values[i].value);
@@ -776,6 +791,8 @@
{
GValue value, other_value;
+ g_debug("notify %p", user_data);
+
if(strcmp(g_param_spec_get_name(pspec),
g_param_spec_get_name(g_object_get_data(G_OBJECT(user_data),
SQ_PROPERTY_SPEC_DATA))))
return;
@@ -969,3 +986,10 @@
lsq_custom_action_execute(g_object_get_data(G_OBJECT(widget),
SQ_ACTION_CUSTOM_DATA), archive, NULL, NULL);
}
+static void
+cb_sq_widget_factory_widget_destroyed(GtkObject *obj, gpointer user_data)
+{
+ g_signal_handlers_disconnect_by_func(user_data,
cb_sq_widget_factory_property_notify, obj);
+ g_debug("destroyed %p", obj);
+}
+
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits