]> Pileus Git - ~andy/gtk/blob - README.in
Update release notes
[~andy/gtk] / README.in
1 General Information
2 ===================
3
4 This is GTK+ version @GTK_VERSION@. GTK+ is a multi-platform toolkit for
5 creating graphical user interfaces. Offering a complete set of widgets,
6 GTK+ is suitable for projects ranging from small one-off projects to
7 complete application suites.
8
9 GTK+ is free software and part of the GNU Project. However, the
10 licensing terms for GTK+, the GNU LGPL, allow it to be used by all
11 developers, including those developing proprietary software, without any
12 license fees or royalties.
13
14 The official ftp site is:
15   ftp://ftp.gtk.org/pub/gtk
16
17 The official web site is:
18   http://www.gtk.org/
19
20 Information about mailing lists can be found at
21   http://www.gtk.org/mailinglists.html
22
23
24 Installation
25 ============
26
27 See the file 'INSTALL'
28
29
30 Release notes for 2.20
31 ======================
32
33 * GtkStatusbar now has a message area (see gtk_status_bar_get_message_area)
34   which makes it easy to place additional widgets inside the statusbar
35   frame or to replace the label widgets. Previously, this was only possible
36   by accessing the innards of the statusbar widget directly. Applications
37   which are doing so may need some adjustments, since the addition of the
38   message area changed the internal widget hierarchy.
39
40 * GtkBuilder no longer sets the "name" property of widgets to the ID
41   attribute of the <object>. Use gtk_buildable_get_name() instead of
42   gtk_widget_get_name() to obtain the ID.
43
44 Release notes for 2.18
45 ======================
46
47 * gtk_tooltip_set_custom now accept a NULL custom_widget to unset the
48   old custom_widget. Custom_widget does not get destroyed when the
49   tooltip goes away.
50
51 * JPEG2000 support is no longer enabled by default. It must be
52   explicitly turned on, by passing --with-libjasper to configure.
53
54 * GDK has been reworked to implement 'client-side windows'. This offers
55   exciting new possibilities, such as transformed, offscreen rendering,
56   but it breaks some long-standing assumptions that applications may
57   have about GDK windows. Setting the environment variable
58   GDK_NATIVE_WINDOWS makes GDK create a native X11 window for each
59   GDK window, which might make problematic applications work better.
60
61 * GTK+ calls signal (SIGPIPE, SIG_IGN) during initialization, to ignore
62   SIGPIPE signals, since these are almost never wanted in graphical
63   applications. If you do need to handle SIGPIPE for some reason, reset
64   the handler after gtk_init(), but notice that other libraries (e.g.
65   libdbus or gvfs) might do similar things.
66
67 Release notes for 2.16
68 ======================
69
70 * Password entries now display a caps-lock warning. This can be turned off
71   with the caps-lock-warning property.
72
73 * Various orientation-related functions have been deprecated in favour
74   of the new GtkOrientable interface: gtk_scale_button_get_orientation,
75   gtk_scale_button_set_orientation, gtk_toolbar_set_orientation.
76
77 * The action-proxy interaction has been changed. Widgets that operate as
78   proxies have to implement the GtkActivatable interface now. GtkActivatable
79   implementation are responsible for syncing their appearance with the
80   action and for activating the action. All GTK+ widgets that are commonly
81   used as proxies implement the GtkActivatable interface.
82
83 * The handling of keyboard shortcuts has been changed, to help with a
84   longstanding complaint about the way GTK+ handles multiple layouts. GTK+
85   now only uses keys from groups other than the current group if they are
86   not present in the current group.
87
88 Release notes for 2.14
89 ======================
90
91 * gtkitemfactory.h is now completely deprecated.
92   As gtkactiongroup.h and gtkstock.h no longer include the gtkitemfactory.h
93   header, this might break application using gtk_item_factory_* symbols
94   without including gtkitemfactory.h - even though this behaviour has never
95   been supported in the first place.
96
97 * The GtkFileSystem semi-private interface has been removed.
98   The GTK+ filechooser implementation now uses GIO directly, which has
99   rendered external filesystem implementations unnecessary. Consequently,
100   the GtkFileSystem interface is no longer available, nor the filechooser
101   will load any GtkFileSystem implementation.
102
103 * GtkComboBox now renders the popdown button insensitive when
104   the model is empty. Applications which want to populate the list
105   only before displaying it can set gtk_combo_box_set_button_sensitivity
106   to GTK_SENSITIVITY_ON, so that the button is always sensitive or
107   GTK_SENSITIVITY_OFF to make it insensitive respectively.
108
109 * In the early 2.14.x releases, GtkAdjustment was changed to enforce
110   that values are restricted to the range [lower, upper - page_size].
111   This has always been the documented behaviour, and the recommended
112   practice is to set page_size to 0 when using adjustments for simple
113   scalar values, like in a slider or spin button.
114   Due to the large number of applications that are affected by this
115   change, the behaviour has been reverted to the old behaviour in
116   2.14.3, with an explicit warning that this change will be
117   reintroduced in 2.90.
118
119 * gdk-pixbuf will use GIO for mime type detection if possible. For
120   this to work, shared-mime-info needs to be installed and XDG_DATA_DIRS
121   set accordingly at configure time. Otherwise, gdk-pixbuf falls
122   back to its built-in sniffing implementation.
123
124 Release notes for 2.12
125 ======================
126
127 * gtk_about_dialog_get/set_name() were deprecated in favour of
128   gtk_about_dialog_get/set_program_name(), the GtkAboutDialog now uses the
129   "program-name" property instead of the conflicting "name" property.
130
131 * The gdk-pixbuf tiff loader now requires libtiff 3.6.0 or later.
132
133 * Support for Windows 9x/ME has officially been removed. It hasn't worked
134   since 2.6 anyway.
135
136 * The GtkTextBufferTargetInfo enumeration values have been changed from
137   G_MAXUINT-0, G_MAXUINT-1, G_MAXUINT-2, etc, to -1, -2, -3 to stay within
138   ANSI C limits.
139
140 * A change in the handling of _NET_WM_USER_TIME properties on toplevel
141   windows can cause deadlock problems with window managers that are using
142   GDK for drawing decorations. In particular, metacity <= 2.18.0 is affected
143   by this. The problem has been fixed in metacity 2.18.1.
144
145 * Semi-private GtkTextLayout api has changed: new GtkTextLayout method
146   invalidate_cursors(), and new functions gtk_text_layout_invalidate_cursors()
147   and gtk_text_layout_cursors_changed(), which should be used in place of
148   gtk_text_layout_invalidate() and gtk_text_layout_changed() if invalidation
149   is due to marks moved or changed selection; new GtkTextLineDisplay structure
150   member. Source compatibility is preserved; binary compatibility may break
151   only if GtkTextLineDisplay structure was created on stack or as a part
152   of another structure (in particular GnomeCanvas and its clones do not need
153   recompiling).
154
155 * Another new signal has been added to GtkNotebook. The new signal
156   is called create-window, so this name can no longer be used for signals
157   in objects derived from GtkNotebook.
158
159 * The gtk_notebook_set/get_group_id() functions were found to be insufficient
160   and have been deprecated in favour of gtk_notebook_set/get_group().
161
162 * The move-focus signal has been moved to GtkWidget, to unify the 
163   various implementations of this signal in specific widgets. Great care 
164   has been taken to make sure that all code using this signal continues
165   to work.
166
167 * An unused and hardly visible GtkFrame has been removed from the menu 
168   widget hierarchy when GtkComboBox::appears-as-list style property is 
169   set. Any RC file applying a different style to any widget below the 
170   widget path "gtk-combobox-popup-window.GtkFrame" should take into 
171   account that the frame no longer exists.
172
173 * The external print preview application used by GtkPrintOperationPreview 
174   is now passed the print settings on the command line with the 
175   --print-settings parameter pointing to a temp file containing the 
176   settings. The preview application assumes ownership of the file and 
177   should delete it once it does not need it anymore. The --print-settings 
178   commandline option is understood by Evince 0.9.0 and newer. To use a 
179   different print preview application, change the gtk-print-preview-command 
180   setting in your gtkrc file, e.g. gtk-print-preview-command = "ggv %f"
181
182 * GtkMenuShell is now defined as an abstract type. It was already 
183   documented as an abstract class, and there is little reason to 
184   instantiate it.
185
186 * The GtkTooltips struct (this is the old tooltips API) is now considered
187   private. Code that used to access this struct, in particular the
188   tips_data_list field, will need to change. All of the old tooltips
189   API has been deprecated in favour of a new implementation and
190   API. This affects all of the gtk_tooltips_ functions, and functions 
191   which take a GtkTooltips argument, such as gtk_tool_item_set_tooltip()
192   and gtk_menu_tool_button_set_arrow_tooltip().
193   
194 * The memory management of the GtkRecentManager object has been changed,
195   as using the screen didn't guarantee that the singleton instance was
196   correctly destroyed. The screen-related functions have been deprecated,
197   and should not be used anymore; the GtkRecentManager instance returned by
198   the gtk_recent_manager_get_default() function is guaranteed to be valid
199   for the entire lifetime of an application.
200
201 * A number of interfaces that have been superseded by newer interfaces for 
202   a long time have finally been deprecated. This includes 
203   gtk_widget_ref/unref(), gtk_rc_style_ref/unref() and the old file selector.
204
205 * The various coordinate systems in use in GtkTreeView widgets have
206   been clarified in the documentation, and in the cause of doing so, 
207   the functions gtk_tree_view_widget_to_tree_coords() and
208   gtk_tree_view_tree_to_widget_coords() have been deprecated in 
209   favour of a new family of gtk_tree_view_convert_ functions.
210
211 * gtk_menu_item_remove_submenu() has been deprecated in favour of
212   gtk_menu_item_set_submenu (..., NULL).
213
214 * gtk_default_draw_check() has been fixed to really decrease the
215   indicator size by one pixel to ensure an odd size instead of
216   accidentially increasing it.
217   Consequently, gtk_cell_renderer_toggle_render() could be fixed to
218   not subtract 1 from the size passed to gtk_paint_option(), which
219   was just a workaround for above off-by-two for even sizes (theme
220   engines now get the real indicator size passed).
221   The default toggle size of GtkCheckMenuItem and GtkCellRendererToggle
222   has been changed to 13 to be consistent with GtkCheckButton.
223   The only visible change with default settings is that the indicator in
224   GtkCellRendererToggle has changed its size from 11 to 13 and is now
225   consistent with menus and toggle buttons.
226
227 * GTK+ has always required that gtk_init() (or a variant thereof) is
228   called before any other GTK+ function. Some applications call functions
229   like gtk_clipboard_get() to check if they need to call gtk_init(),
230   anyway. A change in GLib 2.14 has recently broken this unsupported
231   practise. It is worth pointing out that calling gtk_init() twice
232   does no harm.
233
234
235 Release notes for 2.10
236 ======================
237
238 * The hexadecimal Unicode input feature has been reworked. It no longer
239   blocks the use of the sixteen Ctrl-Shift-<hex digit> key sequences. Now
240   it only uses Ctrl-Shift-u.
241
242 * A memory leak in GtkStyle handling has been fixed. This may expose bugs
243   in third-party widgets which forget to call gtk_style_attach() in their
244   realize functions.
245
246 * Range widgets like GtkScrollbar now render their arrows insensitive
247   when the slider is at the end. Applications which react to arrow
248   clicks even if the slider is at the end may want to use the new
249   gtk_range_set_[upper/lower]_stepper_sensitivity() functions to
250   prevent the arrows from being rendered insensitive.
251
252 * GtkObject now uses the "floating reference" support in GObject. 
253   GTK_OBJECT_IS_FLOATING() will still work, but direct checking
254   of the GTK_FLOATING flag will no longer detect the floating 
255   reference. Details about floating references can be found in the docs:
256   http://developer.gnome.org/doc/API/2.0/gobject/gobject-The-Base-Object-Type.html#floating-ref
257
258 * Accelerators like (_F) are now stripped from labels when they are 
259   displayed in toolbars. If this is not wanted, the feature can be 
260   suppressed by inserting a Unicode control character, e.g ZWNJ.
261
262 * The pixbuf theme engine can now customize expanders (in GtkTreeView
263   and GtkExpander) and resize grips, using the new EXPANDER and
264   RESIZE_GRIP function values.
265
266 * Dialogs created by gtk_about_dialog_new() no longer hide automatically
267   when the user clicks close. It is the applications responsibility to
268   hide or destroy the dialog.
269
270 * Several new signals have been added to GtkNotebook. Care has been taken
271   to choose signal names which do not collide with signals added by well-known
272   derived classes. The names which can no longer be used for signals in 
273   objects derived from GtkNotebook are page-reordered, page-removed and
274   page-added.
275
276 * Due to the interface changes in the file chooser backend interface, 
277   the GTK+ ABI version has been bumped to 2.10.0. Third-party filesystem 
278   backends have to be ported to the new interface, other modules, such as 
279   theme engines, input method modules or pixbuf loaders have to be rebuilt 
280   so that they are installed in the right place for GTK+ to find them.
281
282
283 Release notes for 2.8
284 =====================
285
286 * GTK+ 2.8 and Pango 1.10 require the cairo library.
287
288 * The default theme has been renamed to "Raleigh". Existing configurations
289   specifying the "Default" theme name should still work.
290
291 * The GtkTreeView::enable-search property has been changed to control
292   only typeahead search, not the C-f keybinding to start an interactive
293   search. To turn off interactive searching completely, you have to
294   set GtkTreeView::search-column to -1.
295
296 * The restriction on using the same cell renderer in multiple columns
297   of a GtkTreeView is now more strictly enforced.
298
299 * In GTK+ 2.8, GtkCalendar uses nl_langinfo() (if available) to determine
300   the first day of the week. Thus, it is possible to select the first day
301   of the week independently from the language, by setting LC_TIME.
302
303 * In GTK+ 2.8, the gtk-update-icon-cache utility includes image data
304   in the icon caches, which will make the icon cache files larger than
305   the one produced by GTK+ 2.6. This change will reduce the memory
306   overhead of icon themes at runtime, since all GTK+ applications can
307   share the image data in memory.
308
309 * In 2.8, GDK emits GdkEventGrabBroken events when a keyboard or pointer
310   grab is broken. On X11, this can happen if the same application grabs
311   again, or if the window used for the grab becomes unviewable. It happens
312   more often on Win32. Applications which use grabs should pay attention
313   to these events and do the necessary cleanups when the grab is lost.
314 * The GIOChannel code for sockets on win32 has been rewritten.
315   Applications who make non-trivial use of GIOChannels on win32 should
316   be watched for possible problems.
317
318 * GLib 2.8 uses atomic operations to implement reference counting, thus
319   g_object_ref/unref, g_closure_ref/sink/unref and g_iochannel_ref/unref
320   can be used without locking in multithreaded applications. Note that
321   other modifications, like concurrent setting of properties still require
322   locking.
323
324 * g_convert() and related character set conversion functions have been
325   fixed to emit pending shift states and to not cache iconv descriptors
326   across multiple calls, since that is problematic for some encodings.
327   Note that these functions are not suitable for streaming conversions;
328   use g_iconv() to do streaming conversion.
329
330
331 Release notes for 2.6
332 =====================
333
334 * GTK+ 2.6 supports clipboard persistency. To make use of this feature,
335   a clipboard manager following the specification at
336   http://www.freedesktop.org/wiki/Standards/clipboard-manager-spec
337   must be running. A sample implementation of such a clipboard manager
338   is available at 
339   http://people.imendio.com/andersca/archives/clipboard-manager-0.3.tar.gz
340   Applications can use the function gdk_display_supports_clipboard_persistence() 
341   to find out if clipboard persistence is available.
342
343 * Notification on clipboard ownership changes via GdkOwnerChange events 
344   requires the XFIXES X extension. Applications can use the function
345   gdk_display_supports_selection_notification() to find out if ownerchip
346   change notification is available.
347
348 * The icon theme code in GTK+ 2.6 follows the freedesktop.org icon theme 
349   specification. Setting the XDG_DATA_DIRS environtment variable may be 
350   necessary if your icons aren't installed in the default location 
351   /usr/share/icons.
352
353 * The icon theme code in GTK+ 2.6 can make use of mmap()able cache files
354   to avoid a lot of disk searching overhead. GTK+ includes a utility named
355   gtk-update-icon-cache to generate these cache files. For further details,
356   see the gtk-update-icon-cache man page or the GTK+ documentation.
357
358 * To reduce code size and improve efficiency, GTK+, when compiled 
359   with the GNU toolchain, has separate internal and external entry 
360   points for exported functions. The internal names, which begin with 
361   IA__, may be seen when debugging a GTK+ program.
362
363 * The following functions have been deprecated in GTK+ 2.6:
364   gdk_pango_context_set_colormap
365   gtk_cell_renderer_editing_canceled
366
367 * The new GtkFileChooser widget emphasizes simplicity and thus does 
368   not provide a navigation entry by default when opening files. 
369   Experienced command line users will likely want to make heavy use of
370   the location dialog brought up by the Control-L key shortcut.
371
372 * The GTK+ libraries use an '_' prefix to indicate private symbols that
373   must not be used by applications. On some platforms, symbols beginning 
374   with prefixes such as _gtk, _gdk, and _pango will be exported
375   from the library, on others not. In no case can applications
376   use these private symbols. In addition to that, GTK+ 2.6 makes several
377   symbols private which were not in any installed header files and
378   were never intended to be exported.
379
380 * The gdk_pixbuf_xlib library included in the contrib/ directory 
381   and the framebuffer GDK backend included in the gdk/linux-fb directory
382   of GTK+ are provided on an as-is basis and have not been tested at all. 
383   No guarantees about the degree of workingness or about future
384   compatibility are provided.
385
386 * On Unix, the assumption of GLib and GTK+ by default is that filenames on 
387   the filesystem are encoded in UTF-8 rather than the encoding of the locale;
388   the GTK+ developers consider that having filenames whose interpretation
389   depends on the current locale is fundamentally a bad idea.
390
391   If you have filenames encoded in the encoding of your locale, then you 
392   may want to set the G_FILENAME_ENCODING environment variable:
393   
394    G_FILENAME_ENCODING=@locale
395    export G_FILENAME_ENCODING
396
397   (Earlier versions of GLib 2.x required a different environment variable
398   setting; G_BROKEN_FILENAMES=1 to achieve the same effect; this 
399   is still supported, but G_FILENAME_ENCODING is preferred.)
400   Best integration of GTK+ 2.6 with the environment is achieved by 
401   using a UTF-8 locale.
402
403   On Windows, filenames passed to GTK+ should always be in UTF-8, as
404   in GLib 2.6. This is different than in previous versions of GTK+
405   where the system codepage was used. As in GLib, for DLL ABI
406   stability, applications built against previous versions of GTK+ will
407   use entry points providing the old semantics.
408
409   When compiling against GTK+ 2.6, applications intended to be
410   portable to Windows must take the UTF-8 file name encoding into
411   consideration, and use the gstdio wrappers to access files whose 
412   names have been constructed from strings returned from GTK+ or GLib.
413
414
415 How to report bugs
416 ==================
417
418 Bugs should be reported to the GNOME bug tracking system.
419 (http://bugzilla.gnome.org, product gtk+.) You will need to create an
420 account for yourself.
421   
422 In the bug report please include:
423   
424 * Information about your system. For instance:
425
426    - What operating system and version
427    - What version of X
428    - For Linux, what version of the C library
429
430   And anything else you think is relevant.
431
432 * How to reproduce the bug. 
433
434   If you can reproduce it with one of the tests or demos built with GTK+, 
435   such as demos/gtk-demo/gtk-demo, that would be most convenient. Otherwise, 
436   please include a short test program that exhibits the behavior. As a 
437   last resort, you can also provide a pointer to a larger piece of software 
438   that can be downloaded.
439
440 * If the bug was a crash, the exact text that was printed out when the
441   crash occured.
442
443 * Further information such as stack traces may be useful, but is not
444   necessary. If you do send a stack trace, and the error is an X error,
445   it will be more useful if the stacktrace is produced running the test
446   program with the --sync command line option.
447
448
449 Patches
450 =======
451
452 Patches should also be submitted to bugzilla.gnome.org. If the patch
453 fixes an existing bug, add the patch as an attachment to that bug
454 report.
455
456 Otherwise, enter a new bug report that describes the patch, and attach
457 the patch to that bug report.
458
459 Patches should be in unified diff form. (The -up option to GNU diff.)