libgnomeui patches for icon selection widgets
- From: David Meybohm <dm89754 ucf edu>
- To: gnome-list gnome org
- Subject: libgnomeui patches for icon selection widgets
- Date: Wed, 18 Aug 1999 04:24:09 -0500 (EST)
Hi, here's some diffs I made to fix some problems with icon selection
When in an icon selection dialog (say, after going to the properties of a
drawer and trying to change the drawer icon by clicking its icon in
properties), panel will crash if you try to pick a new directory while a
directory that contains a lot of icons is loading. This only happens the
first time the dialog comes up. The reason it happens is because there's
a call to gtk_object_set_user_data() *after* the icons are done loading,
but while the icons are loading, gtk events can occur that call event
handlers that assume that gtk_object_set_user_data() has already been called.
The event handlers don't check the return value of gtk_object_get_user_data()
at all (which you might consider somewhat dangerous to begin with) and it
tries to deference a null pointer and psplat. This simple patch moves the
gtk_object_set_user_data() call to before the icon loading function that
can trigger gtk events.
If you try to load a directory while another is loading in an
icon-selection widget, multiple progressbars and labels appear. This
happens because the progressbar and label are created locally, so each
time the load icons function is called, new ones are created. You can
fix by calling gtk_object_set_user_data on the progressbar and label
to retain each between calls. I thought about adding both to the
definitions of GnomeIconSelection in the header file, which was easier
and seemed more natural, but I read something about changing structure
definitions breaks binary compatability. But, I also read about how
set_user_data/get_user_data were bad. Which is worse?
Ah, try to load another directory while a GnomeIconSelection is loading
another as before (there's nothing I love more than multitasking madness
like loading icon directories...wuhhoo!). Try hitting enter multiple
times in the entry widget so the directory stops loading and reloading
several times. When it's finished loading, there's no icons. I think
gnome_canvas_display needs to get called on a gnome_icon_list. But
gnome_icon_list_thaw() never calls it when you freeze() it multiple times
before thaw()ing, even if you call thaw() the same number of times.
This patch fixes that.
] [Thread Prev