]> Pileus Git - ~andy/gtk/blob - ChangeLog
DLLs are always in bin nowadays, no need to test.
[~andy/gtk] / ChangeLog
1 2005-09-29  Tor Lillqvist  <tml@novell.com>
2
3         * gtk-zip.sh.in: DLLs are always in bin nowadays, no need to test.
4
5 2005-09-28  Federico Mena Quintero  <federico@ximian.com>
6
7         * tests/autotestfilechooser.c (test_reload_sequence): Oops, return
8         if the unmap test fails.
9         (test_reload_sequence): Use gtk_widget_show_now() instead of
10         gtk_widget_show() for the dialog.
11         Thanks to Tim Janik for noticing these.
12
13 2005-09-28  Federico Mena Quintero  <federico@ximian.com>
14
15         * tests/testcellrenderertext.c: New file with a set of tests for
16         GtkCellRendererText.  The idea is to run a text renderer through
17         most of its interesting property values to see that it works
18         correctly.
19
20         * tests/Makefile.am: Added testcellrenderertext.
21
22         * gtk/gtkfilechooserdefault.c (load_set_model): Mark the
23         entry/exit of this function for profiling.
24         (gtk_file_chooser_default_style_set): Mark the start/end of the
25         calls to the parent class and the the signal emission for profiling.
26
27 2005-09-29  Tor Lillqvist  <tml@novell.com>
28
29         * gtk/gtkmain.c (_gtk_get_localedir): The locale directory is
30         passed to bindtextdomain() which isn't UTF-8-aware, so convert to
31         system codepage using g_win32_locale_filename_from_utf8().
32         (#317457, Kazuki Iwamoto)
33
34 2005-09-28  Matthias Clasen  <mclasen@redhat.com>
35
36         * gtk/gtkselection.c (_gtk_selection_request): Free mult_atoms 
37         here. (#317039, Paolo Borelli)
38
39         * gtk/gtktexttag.h: 
40         * gtk/gtktexttag.c (gtk_text_attributes_ref): Return the attributes
41         to make this function work as boxed copy function.  (#317455,
42         Gustavo Carneiro)
43
44         * gtk/gtkclipboard.c (request_image_received_func): Don't unref
45         NULL.  (#316828, Tor Lillqvist)
46
47 2005-09-28  Tor Lillqvist  <tml@novell.com>
48
49         * modules/input/imime.c: Include <config.h>. (#317444, Kazuki
50         Iwamoto)
51
52 2005-09-27  Federico Mena Quintero  <federico@ximian.com>
53
54         Don't reload the current folder unnecessarily on ::map().
55
56         * gtk/gtkfilechooserprivate.h (ReloadState): New enum to represent
57         the reloading state.
58         (struct _GtkFileChooserDefault): Added a "reload_state" field.
59
60         * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_init):
61         Initialize impl->reload_state.
62         (gtk_file_chooser_default_map): Check the impl->reload_state; load
63         a default folder if no folder has been set, or reload the current
64         one only if we had been unmapped first.
65         (gtk_file_chooser_default_update_current_folder): Set the
66         reload_state to RELOAD_HAS_FOLDER.
67         (gtk_file_chooser_default_unmap): Implement, and set the
68         reload_state to RELOAD_WAS_UNMAPPED.
69         (shortcuts_model_create): Don't call shortcuts_add_bookmarks()
70         here; they'll get (re)loaded on ::map() anyway.
71
72         * gtk/gtkfilechooserwidget.c
73         (gtk_file_chooser_widget_constructor): Don't set a default folder here.
74
75         * tests/autotestfilechooser.c (test_action_widgets): Don't take in
76         a dialog; build it ourselves.
77         (test_reload): New test to ensure that we don't load the default
78         folder more than once, and that we reload it when
79         unmapping/remapping.
80         (get_impl_from_dialog): New utility function.
81         (test_widgets_for_current_action): Use get_impl_from_dialog().
82
83 2005-09-27  Federico Mena Quintero  <federico@ximian.com>
84
85         * gtk/gtkfilechooserdefault.c
86         (gtk_file_chooser_default_constructor): Mark the entry/exit of
87         this function for profiling.
88         (check_icon_theme): Likewise.
89         (change_icon_theme): Likewise.
90         (settings_notify_cb): Likewise.
91         (gtk_file_chooser_default_screen_changed): Likewise.
92         (update_chooser_entry): If the selection is empty, clear the file
93         name entry only if we are in CREATE_FOLDER mode.  In SAVE mode,
94         nothing will be selected when the user starts typeahead in the
95         treeview, and we don't want to clear the file name entry in that
96         case --- the user could be typing-ahead to look for a folder name.
97         Fixes bug #308332, patch by Jürg Billeter.
98
99 2005-09-27  Matthias Clasen  <mclasen@redhat.com>
100
101         * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup):
102         Pop below the entry if there's more free space below the entry
103         than above.  (#316948, Tommi Komulainen)
104
105 2005-09-26  Federico Mena Quintero  <federico@ximian.com>
106
107         Do not create the save mode-specific widgets in the open modes, so
108         that we don't carry their baggage around.
109
110         * gtk/gtkfilechooserdefault.c
111         (gtk_file_chooser_default_constructor): Don't create the
112         save_widgets here.
113         (save_widgets_create): Set the impl->save_widgets directly here,
114         instead of passing the widgets back to the caller.  Also, pack
115         them into the impl's box.
116         (update_appearance): Create or destroy the save widgets as
117         appropriate.  Set the action of the save_file_name_entry here.
118         (shortcuts_add_current_folder): Set the active item in the
119         save_folder_combo only if it exists.
120         (gtk_file_chooser_default_set_property): Don't set the action of
121         the save_file_name_entry here.
122         (gtk_file_chooser_default_update_current_folder): Set the base
123         folder of the save_file_name_entry only if the entry exists.
124         (shortcuts_drag_data_received_cb): Cast the selection_data->data
125         to (const char *) since that's what shortcuts_drop_uris() expects.
126         (file_list_drag_data_received_cb): Likewise, for
127         g_uri_list_extract_uris().
128
129 2005-09-26  Tor Lillqvist  <tml@novell.com>
130
131         * gdk/win32/gdkwindow-win32.c (gdk_window_shape_combine_mask): Set
132         the shaped flag here, too. (#316871)
133         (gdk_window_shape_combine_region): Currently unimplemented, so
134         don't do anything to the shaped flag here.
135
136 2005-09-26  Matthias Clasen  <mclasen@redhat.com>
137
138         Fix #316871, reported by Dan Winship:
139         
140         * gdk/gdkwindow.h (struct _GdkWindowObject): Add a shaped flag.
141
142         * gdk/x11/gdkwindow-x11.c (gdk_window_shape_combine_mask) 
143         (gdk_window_shape_combine_region): Set it here.
144
145         * gdk/gdkwindow.c (gdk_window_invalidate_maybe_recurse): Don't
146         remove the child area for shaped windows.
147
148 2005-09-23  Matthias Clasen  <mclasen@redhat.com>
149
150         * gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_finalize):
151         Don't leak expander pixbufs.  (#316946, Tommi Komulainen)
152
153 2005-09-22  Michael Natterer  <mitch@imendio.com>
154
155         Renamed GtkCellRendererKeys to GtkCellRendererAccel to be
156         consistent with GTK+ terminology:
157
158         * gtk/gtkcellrendererkeys.[ch]
159         * tests/testkeys.c: removed...
160
161         * gtk/gtkcellrendereraccel.[ch]
162         * tests/testaccel.c: ...and added.
163
164         * gtk/Makefile.am
165         * gtk/gtk.h
166         * gtk/gtk.symbols
167         * tests/Makefile.am: changed accordingly.
168
169 2005-09-22  Matthias Clasen  <mclasen@redhat.com>
170
171         * gtk/gtkwidget.c (gtk_widget_class_init): Fix the documentation
172         for the grab-broken-event signal, noticed by Damon Chaplin.
173
174 2005-09-21  Tor Lillqvist  <tml@novell.com>
175
176         * gdk/win32/gdkselection-win32.c (gdk_selection_convert,
177         gdk_text_property_to_text_list_for_display,
178         gdk_text_property_to_utf8_list_for_display,
179         gdk_win32_selection_add_targets,
180         _gdk_win32_selection_convert_to_dib): Free return value from
181         gdk_atom_name().
182         (gdk_text_property_to_text_list_for_display): Drop GError variable
183         that isn't actually used after being set.
184
185 2005-09-20  Johan Dahlin  <jdahlin@async.com.br>
186
187         * gtk/gtkentry.c (gtk_entry_set_completion): Mention NULL in 
188         documentation.
189
190 2005-09-20  Tor Lillqvist  <tml@novell.com>
191
192         * gdk/win32/gdkselection-win32.c
193         (gdk_selection_owner_get_for_display): Do return the correct owner
194         for CLIPBOARD (i.e., the owner of the Windows Clipboard, if it is
195         a window GDK knows about). The reason to return NULL seems to have
196         gone when in the fix for bug #163702 the artificial
197         GDK_SELECTION_CLEAR event generation was removed from
198         gdk_selection_send_notify_for_display(). Fixes bug #316552.
199
200 2005-09-20  Matthias Clasen  <mclasen@redhat.com>
201
202         Avoid unnecessary XkbGetState() calls and XkbStateNotify
203         events.  (#151555, Søren Sandmann)
204
205         * gdk/x11/gdkdisplay-x11.c (gdk_display_open): Use 
206         XkbSelectEventDetails() to select XkbStateNotify events
207         for only the state we care about.
208
209         * gdk/x11/gdkprivate-x11.h:
210         * gdk/x11/gdkkeys-x11.c (_gdk_keymap_state_changed): Pass
211         the event into the function and update the keymap state from
212         the state information contained in the event. Adjust all callers.
213         
214 2005-09-19  Matthias Clasen  <mclasen@redhat.com>
215
216         * gtk/gtkiconview.c: Use g_list_nth_data() instead of g_list_nth()->data
217         in multiple places to avoid segfaults if the index is out of range.  
218         (#316422, Guillaume Cottenceau)
219         (gtk_icon_view_set_drag_dest_item): 
220         (gtk_icon_view_scroll_to_path): Fix a typo in the docs.  (#316419,
221         #316424, Guillaume Cottenceau)
222
223 2005-09-18  Hans Breuer  <hans@breuer.org>
224
225         * gtk/gtktrayicon-win32.c : now handling events by hard-coded 
226         g_signal_emit_by_name() - will break when gtkstatusicon.c changes.
227
228 2005-09-18  Hans Breuer  <hans@breuer.org>
229
230         * gdk/gdk.symbols gdk/win32/gdkwin32.h gdk/win32/gdkcursorwin32.c : export
231         _gdk_win32_pixbuf_to_hicon() as gdk_win32_pixbuf_to_hicon_libgtk_only()
232         * gtk/gtktrayicon-win32.c : a lot of debug spew but it has started to show
233         the icon and is blinking with teststatusicon. More to come ...
234
235 2005-09-18  Hans Breuer  <hans@breuer.org>
236
237         * gtk/makefile.msc.in : fix typo for GTK_VER; define HAVE_CONFIG_H
238         cause gtkprogressbar.c has #include <config.h> conditionally; less
239         noise from generated gtk.def
240         * gtk/stock-icons/makefile.msc gdk/makefile.msc tests/makefile.msc : updated
241         
242         * gtk/gtktrayicon-win32.c : dummy implmentation to make gtk compile.
243         For me it works as well as the *NIX implemenation, that is not at all.
244
245         * gdk/win32/gdkproperty-win32.c : implement gdk_atom_intern_static_string()
246
247         * gdk/win32/gdkwindow-win32.c(gdk_window_set_urgency_hint) : only use
248         only use (WINVER >= 0x0500) when available from the SDK. Otherwise fall
249         back to true dynamic linking of FlashWindowEx. Makes gtk+ work on NT4.0
250         again - if compiled properly.
251
252         * tests/teststatusicon.c : don't use GNOME icons for testing, but icons
253         already coming with Gtk+. Makes it compile on win32.
254
255 2005-09-18  Guilherme de S. Pastore  <gpastore@cvs.gnome.org>
256
257         * README.cvs-commits: fixed some tiny typos
258
259 2005-09-16  Tor Lillqvist  <tml@novell.com>
260
261         * modules/engines/ms-windows/msw_style.c (draw_extension,
262         draw_box_gap): Check whether the widget actually is a GtkNotebook
263         before treating it as such. Drop some unneeded local variables,
264         use parameter with same information instead. (#316412)
265
266 2005-09-15  Federico Mena Quintero  <federico@ximian.com>
267
268         * tests/autotestfilechooser.c: Start a set of automated tests for
269         the file chooser.  The only test in there right now doesn't pass
270         yet.  It specifies the intended behavior of the first optimization
271         of a series which I'll do on the file chooser (see
272         http://primates.ximian.com/~federico/news-2005-09.html#14 for the
273         details of this optimization).
274
275         * tests/Makefile.am: Added autotestfilechooser.c.
276
277         * gtk/gtkfilechooserprivate.h (struct
278         _GtkFileChooserDialogPrivate): Move all the file chooser's private
279         structures to here, so that they can be accessed by
280         tests/autotestfilechooser.c:  _GtkFileChooserDialogPrivate,
281         _GtkFileChooserWidgetPrivate, LoadState, _GtkFileChooserDefault.
282
283         * gtk/gtkfilechooserdialog.c: See above.
284
285         * gtk/gtkfilechooserwidget.c: See above.
286
287         * gtk/gtkfilechooserdefault.c: See above.
288
289 Thu Sep 15 15:27:55 2005  Tim Janik  <timj@imendio.com>
290
291         * gtk/gtkwindow.c: 
292         gtk_window_map_event(): new function to work around lost unmap requests.
293         fixes bug #316180.
294
295 2005-09-14  Federico Mena Quintero  <federico@ximian.com>
296
297         * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_init): Add
298         an easy-to-find profiling marker when starting to create a file
299         chooser.
300         (browse_files_model_finished_loading_cb): Likewise, for when the
301         chooser is finished loading.
302
303 2005-09-14  Tristan Van Berkom <tvb@cvs.gnome.org>
304
305         * gtk/gtkcolorbutton.c: Check "color" argument in gtk_color_button_set_color ()
306
307 2005-09-14  Matthias Clasen  <mclasen@redhat.com>
308
309         * gtk/gtklabel.c (gtk_label_get_type): 
310         * gtk/gtkbutton.c (gtk_button_get_type): 
311         * gtk/gtkwindow.c (gtk_window_group_get_type): No point in 
312         using a mem chunk for window groups, buttons, labels.
313
314         * gtk/updateiconcache.c (foreach_remove_func): Fix
315         a use-after-free bug.  (#316256, Alexander Nedotsukov)
316
317 2005-09-13  Matthias Clasen  <mclasen@redhat.com>
318
319         * gtk/*.c: Various cleanups.  (#315360, Kjartan Maraas)
320
321         * gdk/*.c: Various cleanups.  (#315359, Kjartan Maraas)
322         
323 2005-09-13  Matthias Clasen  <mclasen@redhat.com>
324
325         * gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress): 
326         Let GDK_Return pass through in some more cases.
327
328         * gtk/gtkentry.c (gtk_entry_key_press): Reset the im context before
329         activating the entry. 
330
331         * gtk/gtkiconview.c (gtk_icon_view_class_init):
332         (gtk_icon_view_get_dest_item_at_pos):  Fix typos in the 
333         docs.  (#316008, #316027, #316121, Guillaume Cottenceau)
334
335         * gtk/gtkfilechooser.c (gtk_file_chooser_class_init): Add some docs.
336         (#316001, Guillaume Cottenceau)
337
338         * gtk/gtkdnd.c (gtk_drag_set_icon_name): Fix a copy-and-paste
339         mistake in the docs.  (#315993, Guillaume Cottenceau)
340
341         * tests/testentrycompletion.c (create_simple_completion_model): Add
342         some strings containing multibyte characters.
343
344         * gtk/gtkentrycompletion.c (gtk_entry_completion_real_insert_prefix): 
345         Fix prefix insertion for multibyte characters.  (#316095,
346         Tommi Komulainen)
347
348         * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): 
349         * gtk/gtkiconview.c (gtk_icon_view_create_drag_icon): Silently
350         return NULL if the widget is not realized.  (#316023,
351         Guillaume Cottenceau)
352
353 2005-09-11  Matthias Clasen  <mclasen@redhat.com>
354
355         * gdk/gdk.symbols: 
356         * gdk/gdkproperty.h: 
357         * gdk/x11/gdkproperty-x11.c (gdk_atom_intern_static_string): 
358         New function to avoid pointless strdups when creating atoms
359         from static strings.  
360
361         * gdk/x11/*.c:
362         * gtk/*.c:  Use gdk_atom_intern_static_string() where 
363         appropriate.
364
365 2005-09-09  Matthias Clasen  <mclasen@redhat.com>
366
367         * gtk/gtkcellrendererkeys.h: 
368         * gtk/gtkcellrendererkeys.c: Add a cell renderer for displaying
369         and editing accelerators, a port of EggCellRendererKeys .
370
371         * gtk/gtk.symbols:
372         * gtk/gtk.h:
373         * gtk/Makefile.am: Add the keys cell renderer.
374
375         * tests/Makefile.am: 
376         * tests/testkeys.c: Test GtkCellRendererKeys
377
378 2005-09-09  Matthias Clasen  <mclasen@redhat.com>
379
380         Make it possible to determine if a key event is for a
381         modifier key:
382         
383         * gdk/x11/gdkprivate-x11.h: 
384         * gdk/x11/gdkkeys-x11.c (_gdk_keymap_key_is_modifier): 
385         New function to determine if a keycode is mapped to a modifier.
386         (get_xkb): Get the modmap.
387
388         * gdk/x11/gdkevents-x11.c (translate_key_event): Set the 
389         is_modifier bit by calling _gdk_keymap_key_is_modifier().
390
391         * gdk/gdkevents.h (struct _GdkEventKey): Add an is_modifier
392         bit.
393
394 2005-09-09  Matthias Clasen  <mclasen@redhat.com>
395
396         * gdk/gdkpixbuf-drawable.c (convert_real_slow): Remove an 
397         unused variable, noticed by Kjartan Maraas.
398
399 2005-09-09  Matthias Clasen  <mclasen@redhat.com>
400
401         * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_button_event): 
402         Make drag reordering work properly for columns other than the
403         first.  (#315054, Dan Winship)
404         
405         * gtk/gtkfontsel.c (gtk_font_selection_set_font_name): Handle 
406         invalid fontnames better. (#136926, Michael R. Walton)
407         
408         Stop cursor blinking in non-editable regions of a text view.
409         (#311508, Torbjörn Andersson)
410         
411         * gtk/gtktextview.c (gtk_text_view_check_cursor_blink): 
412         (cursor_blinks): Take editability into account when deciding
413         whether the cursor blinks.
414         (gtk_text_view_button_release_event): 
415         (gtk_text_view_move_cursor_internal): Update cursor blinking here.
416
417         * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing): 
418         Use connect_after to connect to the focus_out event. This
419         ensures that the entry has already stopped blinking by the time
420         we emit the edited signal.  (#315229, Thomas Leonard)
421
422         * tests/testgtk.c: Use GDK_MOD1_MASK, not GDK_ALT_MASK.
423
424         * gtk/gtkwindow.c (gtk_window_parse_geometry): Don't set
425         unsigned ints to -1.  (#315481, Kjartan Maraas)
426
427         * gtk/gtkcalendar.c (gtk_calendar_init): first_weekday is relative
428         to week_1stday, not to Sunday. Gotta love the ISO 14652 guys...
429         (#314473, Stanislav Brabec)
430
431 2005-09-09  Matthias Clasen  <mclasen@redhat.com>
432
433         * gtk/gtktreeview.c (gtk_tree_view_get_visible_range): Document
434         memory handling.  (#314975, Torsten Schoenfeld)
435
436         * gtk/gtkiconview.c (gtk_icon_view_class_init): 
437         * gtk/gtkfilesel.c (gtk_file_selection_class_init): 
438         * gtk/gtkcombobox.c (gtk_combo_box_class_init): 
439         * gtk/gtklabel.c (gtk_label_class_init): 
440         * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_class_init): 
441         Stylistic improvements and clarifications for some blurbs. 
442         (#315520, Clytie Siddall)
443
444 2005-09-09  Tor Lillqvist  <tml@novell.com>
445
446         * gdk/win32/gdkdisplay-win32.c (gdk_display_get_name): Cache the
447         display name. There is only one GdkDisplay on Win32, and
448         constructing the display name isn't entirely trivial, so cacheing
449         is probably worth it. For instance GIMP calls this function a lot.
450         (gdk_display_open): Call gdk_display_get_name() to prime the
451         cached name.
452         (gdk_display_get_n_screens, gdk_display_get_screen,
453         gdk_display_get_default_screen): Verify parameter correctness like
454         the X11 backend does.
455
456         * gdk/win32/gdkscreen-win32.c (gdk_screen_make_display_name):
457         Return a freshly allocated string, as the API specifies. Fixes a
458         heap corruption problem that caused random errors and crashes in
459         GIMP, for instance.
460
461 2005-09-07  Matthias Clasen  <mclasen@redhat.com>
462
463         * gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress): 
464         Make C-u commit and restart hex input if we are already in a
465         hex sequence.
466
467 2005-09-06  Matthias Clasen  <mclasen@redhat.com>
468
469         * gdk/x11/gdkkeys-x11.c (update_modmap): Make the modmap reflexive.
470         (_gdk_keymap_add_virtual_modifiers): Don't add both Alt and Meta
471         if they are mapped to the same modifier.
472
473         * gtk/Makefile.am: Rename gtkstatusicon-x11.c and gtktrayicon.c
474         to gtkstatusicon.c and gtktrayicon-x11.c
475
476         * gtk/gtkaccelgroup.c: Include Super, Hyper and Meta in the
477         default accel mod mask.
478
479         * gtk/gtkaccelgroup.c (gtk_accelerator_parse): 
480         * gtk/gtkaccellabel.c (_gtk_accel_label_class_get_accelerator_label): 
481         Don't use GDK_ALT_MASK.
482
483         * gdk/gdktypes.h: No need to introduce GDK_ALT_MASK
484
485 2005-09-06  Matthias Clasen  <mclasen@redhat.com>
486
487         Add support for extra virtual modifiers:  (#85780, Owen Taylor)
488         
489         * tests/testgtk.c (create_key_lookup): Add tests for extra virtual
490         modifiers.
491
492         * gtk/gtkkeyhash.c (_gtk_key_hash_lookup): Try to match both against
493         Mod2 - Mod5 and against Super, Hyper, Meta.
494
495         * gtk/gtkaccellabel.c (_gtk_accel_label_class_get_accelerator_label): 
496         * gtk/gtkaccelgroup.c (gtk_accelerator_parse) 
497         (gtk_accelerator_name): Support Super, Hyper Meta and Mod2 - Mod5.
498
499         * gdk/x11/gdkkeys-x11.c (struct _GdkKeymapX11): Add a 
500         modmap to maintain the information which X modifiers map to
501         virtual modifiers.
502         (get_xkb): Set up the modmap from the XKB tables.
503         (update_keymaps): Set up the modmap from the information returned
504         by XGetModifierMapping in the non-XKB case.
505
506         * gdk/x11/gdkprivate-x11.h: 
507         * gdk/x11/gdkkeys-x11.c (_gdk_keymap_add_virtual_modifiers): New 
508         function to set the virtual modifiers in the state.
509
510         * gdk/x11/gdkevents-x11.c (translate_key_event): Call 
511         _gdk_keymap_add_virtual_modifiers here.
512
513         * gdk/gdktypes.h (GdkModifierType): Add bits for virtual Super, 
514         Hyper and Meta modifiers. Also add GDK_ALT_MASK as an alias
515         for GDK_MOD1_MASK.
516
517 2005-09-05  Matthias Clasen  <mclasen@redhat.com>
518
519         * gtk/gtkaction.c (connect_proxy): Set the label of a button
520         if it has no child.  (#315253, John Finlay)
521
522 2005-09-02  Matthias Clasen  <mclasen@redhat.com>
523
524         * gtkimcontextsimple.h: Add a modifiers_dropped bit
525
526 2005-09-02  Matthias Clasen  <mclasen@redhat.com>
527
528         * gtk/gtkentry.c (gtk_entry_destroy): Disconnect idle handlers
529         on destroy to avoid problems when they are called on a destroyed
530         widget.  (#315135, John Cupitt)
531         
532         * gtk/gtkentry.c (gtk_entry_class_init):
533         * gtk/gtktextview.c (gtk_text_view_class_init): Add bindings
534         for Ctrl-Shift-A to unselect all.  (#309301, Kathy Fernandes)
535
536         * gtk/gtkimcontextsimple.c: Rework the Unicode hex input
537         code. Now we only steal a single key combination, Ctrl-Shift-U,
538         instead of sixteen. 
539         A hex Unicode sequence must be started with Ctrl-Shift-U, followed
540         by a sequence of hex digits entered with Ctrl-Shift still held.
541         Releasing one of the modifiers or pressing space while the modifiers
542         are still held commits the character. It is possible to erase
543         digits using backspace.
544         As an extension to the above, we also allow to start the sequence
545         with Ctrl-Shift-U, then release the modifiers before typing any
546         digits, and enter the digits without modifiers.
547         (#82011, Owen Taylor)
548         
549 2005-09-02  Matthias Clasen  <mclasen@redhat.com>
550
551         * gtk/gtkmain.c (gtk_get_event_widget): If the window is destroyed,
552         we still need to deliver the destroy event.  (#314980, Chris Lahey)
553
554         * gtk/gtktextview.c (gtk_text_view_key_press_event): Reset 
555         im context before committing \n or \t.
556
557 2005-09-02  Alexander Larsson  <alexl@redhat.com>
558
559         * gtk/gtkfilechooserdefault.c: (shortcuts_add_volumes),
560         (shortcuts_activate_volume):
561         Handle base_path being null in the rest of the cases (#310270)
562
563 2005-09-02  Tor Lillqvist  <tml@novell.com>
564
565         * gdk/win32/gdkevents-win32.c (gdk_event_translate): Keep track of
566         cursor position also in root window coordinates. Prune out
567         superfluous WM_MOUSEMOVE events even earlier, based on root window
568         coordinates. Windows sends WM_MOUSEMOVE messages after a new
569         window has ben mapped below the cursor even if the mouse doesn't
570         move. We used to generate GDK_MOTION_NOTIFY in these cases. This
571         confused at least gtk_menu_motion_notify(). (#314995)
572
573         * gtk/gtkintl.h: No need to include config.h here. It caused
574         warnings about GTK_LOCALEDIR being redefined on Win32 when
575         compiling files where gtkintl.h is included after gtkprivate.h
576         (which #undefines and re-#defines GTK_LOCALEDIR on Win32).
577
578         * gtk/gtkplug.c: Include config.h.
579
580 2005-09-01  Matthias Clasen  <mclasen@redhat.com>
581
582         * gtk/gtkfilesystemunix.c: Pass statbufs down to 
583         xdg_mime_get_mime_type_for_file() where possible, to avoid
584         useless re-stating.  
585         
586         * gtk/gtkaction.c (gtk_action_get_accel_closure): Fix doc
587         typo.  (#314921, Guillaume Cottenceau)
588
589         * gdk/*.c: Intern some more strings.
590         * gtk/gtkintl.h: 
591         * gtk/*.c: Define an I_() macro and use it instead of the 
592         bulky g_intern_static_string().
593
594 2005-08-31  Matthias Clasen  <mclasen@redhat.com>
595
596         * gtk/gtkbindings.c (binding_signal_new): Intern the signal name
597         instead of copying it.
598
599         * gtk/gtktypeutils.c (gtk_identifier_get_type): Some more string interning.
600
601         * gtk/*.c: Also intern static strings passed to 
602         g_object_set_data().
603
604         * gdk/Makefile.am: 
605         * gtk/Makefile.am: Intern type names in code generated by 
606         glib-mkenums, too.
607
608         * gtk/*.c: 
609         * gdk/x11/*.c: 
610         * gdk/*.c: Intern type names before registering the type to avoid 
611         unnecessary copies.
612
613         * configure.in: Require GLib 2.9.0
614
615 2005-08-31  Matthias Clasen  <mclasen@redhat.com>
616
617         * gtk/gtktoolbar.c: Undeprecate gtk_toolbar_set_icon_size(),
618         and add icon-size and icon-size-set properties.  (#314172)      
619
620         * gtk/gtkwindow.c (gtk_window_set_transient_for): Inherit window
621         groups across transient parents.  (#312918, Christian Persch)
622
623         * gtk/gtktreemodel.c: Some documentation fixes.  (#314882,
624         Guillaume Cottenceau)
625
626         * gtk/gtktextiter.c (gtk_text_iter_backward_visible_cursor_positions): 
627         Fix a typo in the docs.  (#314878, Guillaume Cottenceau)
628
629 2005-08-30  Matthias Clasen  <mclasen@redhat.com>
630
631         * gtk/gtkentry.c (gtk_entry_class_init): Add key bindings to
632         make C-/ select all and C-\ unselect all.  (#309301,
633         Kathy Fernandez)
634
635         * gtk/gtkimcontextsimple.c: Change the compose sequence for
636         soft hyphen to be multi_key-minus-minus-space, and add
637         compose sequences multi_key-minus-minus-period and 
638         multi_key-minus-minus-minus for en dash and em dash.
639         (#172653, Christian Lohmaier)
640
641         * gtk/gtkentry.c (gtk_entry_draw_frame): Fix some unused
642         code.  (#313946, Christian Persch)
643
644         * gtk/gtkuimanager.c (gtk_ui_manager_class_init): Another
645         fix for the default value of the "ui" property.
646
647 2005-08-30  Matthias Clasen  <mclasen@redhat.com>
648
649         * gtk/gtk.symbols: 
650         * gtk/gtkselection.h:
651         * gtk/gtkselection.c: Add functions which look for text, image
652         or uri targets in an array of atoms.   (#314089, Mark Wielaard)
653
654         * gtk/gtk.symbols: 
655         * gtk/gtkselection.h:
656         * gtk/gtkselection.c (gtk_selection_data_targets_include_uri): 
657         Add a function to check wether targets include uri.  
658         (#314092, Mark Wielaard)
659         
660         * gtk/gtk.symbols: 
661         * gtk/gtkwindow.h: 
662         * gtk/gtkwindow.c: Add a deletable property with getter
663         and setter, to control the close button in the window 
664         frame.  (#59718, Havoc Pennington)
665
666 2005-08-29  Matthias Clasen  <mclasen@redhat.com>
667
668         * gtk/gtkrc.key.emacs: Add C-n/C-p/C-f/C-b as alternatives
669         to the arrow keys for menu navigation.  (#162825, Carl Worth)
670
671         * gtk/gtkentry.c, gtk/gtktextview.c: More typo fixes
672
673         * gtk/gtksocket-x11.c, gtk/gtkstatusicon-x11.c: Fix typos.
674
675         * gtk/gtkstatusicon-x11.c (gtk_status_icon_new_from_stock): 
676         * gtk/gtkimage.c (gtk_image_new_from_stock): Don't
677         refer to nonexisting stock ids.
678
679         * gtk/gtktextview.c (popup_targets_received): 
680         * gtk/gtkentry.c (popup_targets_received): Construct
681         the "Select All" menuitem from stock.
682
683         * gtk/stock-icons/stock_select_all_{16,24}.png:
684         * gtk/stock-icons/Makefile.am: 
685         * gtk/gtkiconfactory.c:
686         * gtk/gtkstock.h: 
687         * gtk/gtkstock.c: Add a "Select All" stock item.  (#78545,
688         Calum Benson)
689
690         * gtk/gtktrayicon.c: Add a pointer to the spec.
691
692         * gtk/gtkstatusicon-x11.c: Add docs.
693
694         * gtk/gtkstatusicon.h: Fix a typo.
695
696         Add a cross-platform "tray icon" API, by
697         porting EggStatusIcon/EggTrayIcon (#105101)
698         
699         * gtk/gtkstatusicon.h: A GtkStatusIcon is an object which
700         displays an icon in a notification area.
701
702         * gtk/gtkstatusicon-x11.c: GtkStatusIcon implementation for
703         X11, using GtkTrayIcon.
704
705         * gtk/gtktrayicon.h: 
706         * gtk/gtktrayicon.c: An implementation of the freedesktop.org
707         system tray specification, not public API.
708
709         * gtk/gtk.symbols: Add new exported functions.
710
711         * gtk/gtk.h: Include gtkstatusicon.h.
712
713         * gtk/Makefile.am: Add new files.
714
715         * tests/Makefile.am:
716         * tests/teststatusicon.c: Test for GtkStatusIcon.
717
718 2005-08-29  Christopher Aillon  <caillon@redhat.com>
719
720         * gtk/gtkstock.c: Add builtin GtkStockItems for GTK_STOCK_CONNECT
721         and GTK_STOCK_DISCONNECT
722         
723 2005-08-29  Matthias Clasen  <mclasen@redhat.com>
724
725         * gtk/gtksocket-x11.c (_gtk_socket_windowing_embed_notify): 
726         Use XFixesChangeSaveSet if available.  (#314682)
727
728         * gtk/gtkmenu.c (gtk_menu_grab_notify):  Only cancel if the menu
729         was active.  (#314298, Christian Persch, analysis by Mark McLoughlin)
730
731 2005-08-29  Matthias Clasen  <mclasen@redhat.com>
732
733         * gtk/gtkiconcache.c (_gtk_icon_cache_get_icon): Remove an
734         accidentally leftover duplicate pixbuf creation.  (#314700,
735         Kjartan Maraas)
736
737         * gtk/gtksettings.c (settings_update_cursor_theme): Don't 
738         leak the cursor theme name.  (#314693, Kjartan Maraas)
739
740         * gdk/x11/gdkasync.c (_gdk_x11_get_window_child_info): Free 
741         state.children in all cases.  (#313862, Kjartan Maraas)
742
743 2005-08-28  Matthias Clasen  <mclasen@redhat.com>
744
745         * po/POTFILES.in, po-properties/POTFILES.in:
746         Add gdk/gdkscreen.c
747
748 2005-08-27  Matthias Clasen  <mclasen@redhat.com>
749
750         * gtk/gtkuimanager.c (gtk_ui_manager_class_init): Fix the default
751         value of the ui property. (#314532, Yong Wang)
752
753         * gdk/x11/gdkproperty-x11.c (gdk_property_get): Don't warn
754         when G_MAXLONG is passed as length.  
755
756 2005-08-26  Matthias Clasen  <mclasen@redhat.com>
757
758         * gtk/updateiconcache.c: Add a separate --ignore-theme-index option
759         to avoid overloading --force.  (JP Rosevaar)
760
761 2005-08-26  Matthias Clasen  <mclasen@redhat.com>
762
763         * configure.in: Bump version to 2.9.0
764
765         * gdk/gdk.symbols: 
766         * gdk/gdkscreen.h: 
767         * gdk/gdkscreen.c: Make the GdkScreen font options api
768         public, and add properties GdkScreen::font-options and
769         GdkScreen::resolution.  (#314004)
770
771         * gdk/gdkpango.c:
772         * gtk/gtksettings.c:
773         * gtk/gtkwidget.c: Adjust all callers.
774         
775         * gdk/gdkintl.h: Simplify and use glib/gi18n-lib.h.
776         * gdk/gdkpango.c: Include gdkintl.h, not gtkintl.h.
777         * gdk/gdkscreen.c: Include gdkintl.h.
778
779         * gtk/gtkicontheme.c (theme_lookup_icon): Avoid an uninitialized
780         variable warning, pointed out by Colin Walters. (#314585)
781
782 2005-08-26  Tor Lillqvist  <tml@novell.com>
783
784         * gtk/gtkfilesystemwin32.c: Remove some ifdeffed out debugging
785         printouts.
786         (gtk_file_system_win32_parse): Don't mishandle UNC paths. (#314519)
787
788 2005-08-26  Matthias Clasen  <mclasen@redhat.com>
789
790         * gtk/gtkcalendar.c (gtk_calendar_init): Fix the calculation
791         of week_start.  (#314473, JP Rosevaar)
792
793 2005-08-25  Thomas Fitzsimmons  <fitzsim@redhat.com>
794
795         * gtk/gtkfilesystemmodel.c (idle_finished_loading_cb): Acquire GDK
796         lock.  (#314533, Thomas Fitzsimmons)
797
798 2005-08-25  Matthias Clasen  <mclasen@redhat.com>
799
800         * gtk/gtktoolbar.c (_gtk_toolbar_elide_underscores): Handle
801         NULL gracefully.  (#314523, Ed Catmur)
802
803 2005-08-25  Owen Taylor  <otaylor@redhat.com>
804
805         * gdk/x11/gdkcursor-x11.c (gdk_x11_display_set_cursor_theme): 
806         Handle theme == NULL.
807
808 2005-08-25  Matthias Clasen  <mclasen@redhat.com>
809
810         * gtk/gtkmenutoolbutton.c (menu_position_func): Take widget
811         y offset into account when positioning the popup.  (#314470,
812         Christian Persch)
813
814 2005-08-25  Owen Taylor  <otaylor@redhat.com>
815
816         * gdk/gdkscreen.c (gdk_screen_get_type): Use gdk_screen_init
817         as instance_init, not base_init! (#314452, Fix from Frederic
818         Crozat, reported by Joe Marcus Clarke). Trivial cleanup: use -1.
819         rather than 1 for a negative flag value.
820
821 2005-08-24  Owen Taylor  <otaylor@redhat.com>
822
823         * gdk/gdkpango.c (draw_error_underline): Add a note about
824         cut-and-paste between here and Pango.
825
826 2005-08-24  Matthias Clasen  <mclasen@redhat.com>
827
828         * === Released 2.8.2 ===
829
830         * gtk/gtkclipboard.c (request_image_received_func): Use the correct
831         callback for image/gif, and also try image/bmp.  (#314086,  Mark 
832         Wielaard)
833
834         * gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon): 
835         Use gnome-dev-harddisk for volumes, not gnome-fs-blockdev.  (#314382,
836         Sebastien Bacher)
837         
838         * NEWS: Updates
839
840         * gtk/gtksettings.c (gtk_settings_get_for_screen): Make sure font
841         and cursor settings get propagated down to the screen initially.
842         Pointed out by Frederic Crozat.
843
844         * gtk/gtkicontheme.c (ensure_valid_themes): Don't try to send a client
845         message if the screen is NULL. Noticed by Kjartan Maraas.
846
847 2005-08-24  Matthias Clasen  <mclasen@redhat.com>
848
849         * Bump version
850
851         * === Released 2.8.1 ===
852
853         * NEWS: Updates
854         
855 2005-08-24  Matthias Clasen  <mclasen@redhat.com>
856
857         * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_visible): Protect
858         against lazy filterers which return values other than TRUE or
859         FALSE from their visible func.  (#314335)
860
861 2005-08-23  Owen Taylor  <otaylor@redhat.com>
862
863         Fix for #314004, reported by Michael Reinsch:
864
865         * gdk/gdk.symbols:
866         * gdk/gdkscreen.[ch]: Add gdk_screen_get/set_font_options_libgtk_only()
867         Add gdk_screen_get/set_resolution_libgtk_only()
868
869         * gdk/gdkpango.c (gdk_pango_context_get_for_screen): Set
870         the options for the screen on the newly created context.
871
872         * gtk/gtksettings.c (settings_update_font_options/dpi) gtkwidget.c: 
873         Move font options and dpi code from gtkwidget.c to gtksettings.c, set
874         the font options on the screen.
875
876         * gtk/gtkwidget.c (gtk_widget_update_pango_context): Just get
877         the font options from the screen and set them on the context.
878
879 2005-08-23  Kristian Rietveld  <kris@gtk.org>
880
881         * gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_inserted): don't
882         bother inserting new rows in a level with a zero refcount and
883         immediately free the level. (Fixes #312350, reported by Markku Vire).
884
885 2005-08-23  Matthias Clasen  <mclasen@redhat.com>
886
887         * gtk/updateiconcache.c: Complain when there is no index.theme file
888         in the specified directory, unless --force is used. Also add an
889         --index-only option to create caches without image data.
890
891         * gtk/gtkfilechooserdefault.c (shortcuts_append_desktop): Fix a
892         C99ism.  (#314262, Robert Jeff Mitchell)
893         
894 2005-08-22  Manish Singh  <yosh@gimp.org>
895
896         * gtk/gtkicontheme.h: add declaration for _gtk_icon_theme_check_reload.
897
898         * gtk/gtkwindow.c: remove declaration of gtk_window_read_rcfiles.
899
900 2005-08-22  Matthias Clasen  <mclasen@redhat.com>
901
902         * gtk/gtkwindow.c (gtk_window_client_event): 
903         * gtk/gtkicontheme.c (ensure_valid_themes) 
904         (_gtk_icon_theme_check_reload): Implement a clientmessage based
905         scheme for makeing sure that all GTK+ applications notice if an
906         icon theme has been updated. This should prevent multiple versions
907         of an icon theme cache to be mapped in memory at the same time,
908         which can cause excessive memory consumption.  (#313156, Chris 
909         Lahey)
910
911 2005-08-22  Matthias Clasen  <mclasen@redhat.com>
912
913         * gtk/gtkicontheme.c (gtk_icon_theme_load_icon): Add a note
914         regarding icon theme changes.
915
916         * gtk/gtkiconcache.c (_gtk_icon_cache_get_icon): When returning
917         pixbufs which are backed by the mmapped memory of an icon cache,
918         increase the refcount of the icon cache, so that the memory is not
919         munmapped away underneath the pixbuf upon icon theme changes.  
920         (#314170, Kjartan Maraas)
921
922         * docs/tools/Makefile.am (LDADDS): Add GTK_DEP_LIBS, in order 
923         to link against Xext.  (#314062)
924
925         * gtk/gtkhsv.c (paint_triangle): One more fix to prevent buffer
926         overruns.  (#314081, Hans Breuer)
927
928 2005-08-20  Matthias Clasen  <mclasen@redhat.com>
929
930         * gtk/gtkentry.c (gtk_entry_get_layout): Clarify that the
931         returned layout must not be modified.
932
933 Sat Aug 20 16:12:14 2005  Jonathan Blandford  <jrb@redhat.com>
934
935         * gtk/gtktreeview.c (gtk_tree_view_set_model): clear
936         scroll_to_path if the model changes.
937
938         * gtk/gtkiconview.c: (gtk_icon_view_destroy),
939         (gtk_icon_view_size_allocate), (gtk_icon_view_set_cursor),
940         (gtk_icon_view_scroll_to_path): Handle scrolling to a path before
941         we're realized, #312798
942         (gtk_icon_view_set_model): clear scroll_to_path if the model
943         changes.
944
945 2005-08-20  Matthias Clasen  <mclasen@redhat.com>
946
947         * gtk/gtkrange.c (gtk_range_adjustment_changed) 
948         (gtk_range_adjustment_value_changed):  Don't queue a draw
949         if the layout has not changed.  (#313991, Benjamin Berg)
950
951 2005-08-19  Matthias Clasen  <mclasen@redhat.com>
952
953         * gtk/gtktreeitem.c: Remove duplicate lines.  (#313344,
954         Benoit Carpentier)
955
956         * modules/engines/ms-windows/msw_style.c (setup_system_styles): 
957         Fix a typo. 
958
959         * gtk/gtkfilechooserbutton.c (change_icon_theme) 
960         (model_add_special, model_add_special, model_add_volumes):
961         Handle pixbuf being NULL without warnings. Also, don't
962         leak pixbuf references when the icon theme is changed.
963
964         * gtk/gtkmain.c (gtk_get_event_widget): Don't access
965         the user data on destroyed windows, since at best
966         it can be a stale pointer.  (#313953, Robin Green)      
967
968 2005-08-19  Matthias Clasen  <mclasen@redhat.com>
969
970         * gtk/gtkhsv.c (paint_triangle): Avoid a buffer overrun.  
971         (#313900, Sebastien Bacher)
972
973         * gtk/gtktreeview.c (gtk_tree_view_get_visible_range): Return
974         FALSE if the tree is empty.  (#313891, Guillaume Cottenceau)
975
976         * gdk/x11/gdkdnd-x11.c (_gdk_drag_get_protocol_for_display) 
977         (xdnd_read_actions, get_client_window_at_coords_recurse): 
978         Free data returned from XGetWindowProperty. 
979
980         * gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window) 
981         Free data returned from XGetWindowProperty.  (313867, Kjartan
982         Maraas)
983         
984         * gdk/x11/gdkdnd-x11.c (get_client_window_at_coords_recurse): Free
985         children in all cases.  (#313862, Kjartan Maraas)
986
987         * gtk/gtkicontheme.c (theme_lookup_icon): Store GtkIconData structs 
988         in the per-directory hash, even if they come from the icon cache. 
989         We tried to avoid that before, but as a result leaked icon data
990         structs.  (#313852, Kjartan Maraas)
991
992 2005-08-18  Matthias Clasen  <mclasen@redhat.com>
993
994         * gtk/gtkmenutoolbutton.c (gtk_menu_tool_button_destroy): Disconnect
995         signal handlers on destroy, not on finalize.  (#313759, Brett Atoms)
996
997 2005-08-15  Owen Taylor  <otaylor@redhat.com>
998
999         * configure.in: Add -lXext to GDK_EXTRA_LIBS in absence of pkg-config
1000         files for x11/xext. (Jonas Bonn)
1001
1002 2005-08-15  Tor Lillqvist  <tml@novell.com>
1003
1004         * gtk/gtkicontheme.c (theme_lookup_icon): Put debugging printout
1005         inside GTK_NOTE.
1006
1007 2005-08-15  Owen Taylor  <otaylor@redhat.com>
1008
1009         * configure.in: Fix have_base_pc / have_base_x_pc typo.
1010
1011         * gdk/x11/gdkdrawable-x11.c gtk/gtksettings.c: Remove panoxft.h includes.
1012         (#313417, James Andrewartha)
1013
1014         * configure.in: Add fontconfig to X_PACKAGES, since we use it for
1015         FcNameConstant(). (More of #313417)
1016
1017 2005-08-15  Matthias Clasen  <mclasen@redhat.com>
1018
1019         * gtk/gtkfilechooserdefault.c: When using gtk_dialog_run() for
1020         modal dialogs, make sure to inherit the window group from 
1021         the parent, since we don't inherit window groups across
1022         transient parents currently.  (#312918, Christian Persch)
1023
1024         * gtk/gtkmessagedialog.c (gtk_message_dialog_new): 
1025         * gtk/gtkdialog.c (gtk_dialog_run): Slight update to the docs. 
1026
1027         * gtk/gtkiconview.c (gtk_icon_view_select_path) 
1028         (gtk_icon_view_scroll_to_path): Handle paths of depth 0
1029         gracefully.  (#312796, Jonathan Blandford)
1030
1031         * tests/testtoolbar.c: Add some more tests for menu placement.
1032
1033         * gtk/gtkmenutoolbutton.c (menu_position_func): 
1034         * gtk/gtktoolbar.c (menu_position_func): Improve positioning
1035         of toolbutton menus and of the overflow menu.  (#312937, 
1036         #153870, Christian Persch, Paolo Borelli)
1037
1038 2005-08-15  Tor Lillqvist  <tml@novell.com>
1039
1040         * gtk/updateiconcache.c: Use g_path_get_dirname() instead of
1041         the nonportable <libgen.h> and dirname().
1042
1043 2005-08-15  Matthias Clasen  <mclasen@redhat.com>
1044
1045         * gtk/gtksizegroup.c: Use object data to mark widgets and
1046         groups as visited, so that we avoid constant extra list
1047         traversals. Also allocate quarks in class_init.  (#311618,
1048         Michael Natterer)
1049
1050         * gtk/gtkicontheme.c (gtk_icon_theme_lookup_icon): Correct the 
1051         download location for the hicolor icon theme. (#313475, Olexiy 
1052         Avramchenko)
1053
1054         * gtk/gtkicontheme.c: Remove debug spew. 
1055
1056 2005-08-15  Owen Taylor  <otaylor@redhat.com>
1057
1058         * gdk/linux-fb/gdkwindow-fb.c (gdk_window_set_back_pixmap): 
1059         * gdk/win32/gdkwindow-win32.c (gdk_window_set_back_pixmap): 
1060         * gdk/x11/gdkwindow-x11.c (gdk_window_set_back_pixmap):
1061         Handle pixmap == NULL when checking for a colormap.
1062         (Allin Cottrell).
1063
1064 2005-08-14  Matthias Clasen  <mclasen@redhat.com>
1065
1066         * gtk/updateiconcache.c: Store only one copy of the pixel data
1067         for symlinked icons. To achieve this, maintain a hashtable 
1068         mapping pathnames to pixel data, and share the pixel data for
1069         all symlinks resolving to the same pathname. When writing out
1070         the image data, write out the pixel data only the first time
1071         it is met, and store the offset pointing to the first copy
1072         for use in all later cases.
1073         This reduces the size of the Bluecurve icon cache from 40
1074         to 13MB. (#312972)
1075