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