Newbie advice on fix for bug 118135
- From: Chris Altmann <altmann rcsis com>
- To: nautilus-list gnome org
- Subject: Newbie advice on fix for bug 118135
- Date: Thu, 24 Jul 2003 00:34:33 -0700
I've been working on a patch (my first!) to fix bug 118135 wherin
closing a properties window out from under an open icon selector window
and opening a new properties window in its place can cause a crash.
What I have so far seems to work in all but one case. It closes the open
icon selector when the parent properties window is closed. It also, as a
side effect, raises the existing open icon selector if there is one
instead of creating another (so I only have to track one dialog).
The one problem case is if the user cancels the icon selector dialog I
don't get a chance to set my tracking variable ( icon_selector ) to NULL
and the user can't reopen the icon selector unless they close and open
the properties dialog. I was only able to set it to NULL the callback
when the user clicks OK (or the equivalent).
I'm just getting started with Gtk+ programming so I might be overlooking
something obvious, but is there a way to get notification of the eel
icon selector dialog cancel event without modifiying the code in eel?
Any suggestions on that or what I've done so far are appreciated.
Here is a link to the bug: http://bugzilla.gnome.org/show_bug.cgi?id=118135
There should be an attachment here of my patch in progress too.
PS: Where in the directory tree is it customary to generate a patch for
a module like nautilus? nautilus/src/file-manager ? src/file-manager ?
--
Chris Altmann - altmann rcsis com
Index: nautilus/src/file-manager/fm-properties-window.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/file-manager/fm-properties-window.c,v
retrieving revision 1.176
diff -u -r1.176 fm-properties-window.c
--- nautilus/src/file-manager/fm-properties-window.c 9 Jul 2003 17:21:26 -0000 1.176
+++ nautilus/src/file-manager/fm-properties-window.c 24 Jul 2003 05:37:47 -0000
@@ -88,6 +88,7 @@
GtkNotebook *notebook;
GtkWidget *remove_image_button;
+ GtkWidget *icon_selector_window;
GtkTable *basic_table;
GtkTable *permissions_table;
@@ -2333,6 +2334,8 @@
g_free (image_uri);
}
+
+ window->details->icon_selector_window = NULL;
}
}
@@ -3729,6 +3732,8 @@
/* re-enable the property window's clear image button */
gtk_widget_set_sensitive (properties_window->details->remove_image_button, TRUE);
}
+
+ properties_window->details->icon_selector_window = NULL;
}
/* handle the "select icon" button */
@@ -3739,11 +3744,22 @@
g_assert (FM_IS_PROPERTIES_WINDOW (properties_window));
- dialog = eel_gnome_icon_selector_new (_("Select an icon"),
- NULL,
- GTK_WINDOW (properties_window),
- (EelIconSelectionFunction) set_icon_callback,
- properties_window);
+ dialog = properties_window->details->icon_selector_window;
+
+ if (dialog) {
+ gtk_window_present (GTK_WINDOW (dialog));
+ }
+ else {
+ dialog = eel_gnome_icon_selector_new (_("Select an icon"),
+ NULL,
+ GTK_WINDOW (properties_window),
+ (EelIconSelectionFunction) set_icon_callback,
+ properties_window);
+
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
+
+ properties_window->details->icon_selector_window = dialog;
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]