Information about mailing lists can be found at
http://www.gtk.org/mailinglists.html
+
Installation
============
See the file 'INSTALL'
-Release notes
-=============
+
+Release notes for 2.18
+======================
+
+* gtk_tooltip_set_custom now accept a NULL custom_widget to unset the
+ old custom_widget. Custom_widget does not get destroyed when the
+ tooltip goes away.
+
+
+Release notes for 2.16
+======================
+
+* Password entries now display a caps-lock warning. This can be turned off
+ with the caps-lock-warning property.
+
+* Various orientation-related functions have been deprecated in favour
+ of the new GtkOrientable interface: gtk_scale_button_get_orientation,
+ gtk_scale_button_set_orientation, gtk_toolbar_set_orientation.
+
+* The action-proxy interaction has been changed. Widgets that operate as
+ proxies have to implement the GtkActivatable interface now. GtkActivatable
+ implementation are responsible for syncing their appearance with the
+ action and for activating the action. All GTK+ widgets that are commonly
+ used as proxies implement the GtkActivatable interface.
+
+* The handling of keyboard shortcuts has been changed, to help with a
+ longstanding complaint about the way GTK+ handles multiple layouts. GTK+
+ now only uses keys from groups other than the current group if they are
+ not present in the current group.
+
+Release notes for 2.14
+======================
+
+* gtkitemfactory.h is now completely deprecated.
+ As gtkactiongroup.h and gtkstock.h no longer include the gtkitemfactory.h
+ header, this might break application using gtk_item_factory_* symbols
+ without including gtkitemfactory.h - even though this behaviour has never
+ been supported in the first place.
+
+* The GtkFileSystem semi-private interface has been removed.
+ The GTK+ filechooser implementation now uses GIO directly, which has
+ rendered external filesystem implementations unnecessary. Consequently,
+ the GtkFileSystem interface is no longer available, nor the filechooser
+ will load any GtkFileSystem implementation.
+
+* GtkComboBox now renders the popdown button insensitive when
+ the model is empty. Applications which want to populate the list
+ only before displaying it can set gtk_combo_box_set_button_sensitivity
+ to GTK_SENSITIVITY_ON, so that the button is always sensitive or
+ GTK_SENSITIVITY_OFF to make it insensitive respectively.
+
+* In the early 2.14.x releases, GtkAdjustment was changed to enforce
+ that values are restricted to the range [lower, upper - page_size].
+ This has always been the documented behaviour, and the recommended
+ practice is to set page_size to 0 when using adjustments for simple
+ scalar values, like in a slider or spin button.
+ Due to the large number of applications that are affected by this
+ change, the behaviour has been reverted to the old behaviour in
+ 2.14.3, with an explicit warning that this change will be
+ reintroduced in 2.90.
+
+* gdk-pixbuf will use GIO for mime type detection if possible. For
+ this to work, shared-mime-info needs to be installed and XDG_DATA_DIRS
+ set accordingly at configure time. Otherwise, gdk-pixbuf falls
+ back to its built-in sniffing implementation.
+
+Release notes for 2.12
+======================
+
+* gtk_about_dialog_get/set_name() were deprecated in favour of
+ gtk_about_dialog_get/set_program_name(), the GtkAboutDialog now uses the
+ "program-name" property instead of the conflicting "name" property.
+
+* The gdk-pixbuf tiff loader now requires libtiff 3.6.0 or later.
+
+* Support for Windows 9x/ME has officially been removed. It hasn't worked
+ since 2.6 anyway.
+
+* The GtkTextBufferTargetInfo enumeration values have been changed from
+ G_MAXUINT-0, G_MAXUINT-1, G_MAXUINT-2, etc, to -1, -2, -3 to stay within
+ ANSI C limits.
+
+* A change in the handling of _NET_WM_USER_TIME properties on toplevel
+ windows can cause deadlock problems with window managers that are using
+ GDK for drawing decorations. In particular, metacity <= 2.18.0 is affected
+ by this. The problem has been fixed in metacity 2.18.1.
+
+* Semi-private GtkTextLayout api has changed: new GtkTextLayout method
+ invalidate_cursors(), and new functions gtk_text_layout_invalidate_cursors()
+ and gtk_text_layout_cursors_changed(), which should be used in place of
+ gtk_text_layout_invalidate() and gtk_text_layout_changed() if invalidation
+ is due to marks moved or changed selection; new GtkTextLineDisplay structure
+ member. Source compatibility is preserved; binary compatibility may break
+ only if GtkTextLineDisplay structure was created on stack or as a part
+ of another structure (in particular GnomeCanvas and its clones do not need
+ recompiling).
+
+* Another new signal has been added to GtkNotebook. The new signal
+ is called create-window, so this name can no longer be used for signals
+ in objects derived from GtkNotebook.
+
+* The gtk_notebook_set/get_group_id() functions were found to be insufficient
+ and have been deprecated in favour of gtk_notebook_set/get_group().
+
+* The move-focus signal has been moved to GtkWidget, to unify the
+ various implementations of this signal in specific widgets. Great care
+ has been taken to make sure that all code using this signal continues
+ to work.
+
+* An unused and hardly visible GtkFrame has been removed from the menu
+ widget hierarchy when GtkComboBox::appears-as-list style property is
+ set. Any RC file applying a different style to any widget below the
+ widget path "gtk-combobox-popup-window.GtkFrame" should take into
+ account that the frame no longer exists.
+
+* The external print preview application used by GtkPrintOperationPreview
+ is now passed the print settings on the command line with the
+ --print-settings parameter pointing to a temp file containing the
+ settings. The preview application assumes ownership of the file and
+ should delete it once it does not need it anymore. The --print-settings
+ commandline option is understood by Evince 0.9.0 and newer. To use a
+ different print preview application, change the gtk-print-preview-command
+ setting in your gtkrc file, e.g. gtk-print-preview-command = "ggv %f"
+
+* GtkMenuShell is now defined as an abstract type. It was already
+ documented as an abstract class, and there is little reason to
+ instantiate it.
+
+* The GtkTooltips struct (this is the old tooltips API) is now considered
+ private. Code that used to access this struct, in particular the
+ tips_data_list field, will need to change. All of the old tooltips
+ API has been deprecated in favour of a new implementation and
+ API. This affects all of the gtk_tooltips_ functions, and functions
+ which take a GtkTooltips argument, such as gtk_tool_item_set_tooltip()
+ and gtk_menu_tool_button_set_arrow_tooltip().
+
+* The memory management of the GtkRecentManager object has been changed,
+ as using the screen didn't guarantee that the singleton instance was
+ correctly destroyed. The screen-related functions have been deprecated,
+ and should not be used anymore; the GtkRecentManager instance returned by
+ the gtk_recent_manager_get_default() function is guaranteed to be valid
+ for the entire lifetime of an application.
+
+* A number of interfaces that have been superseded by newer interfaces for
+ a long time have finally been deprecated. This includes
+ gtk_widget_ref/unref(), gtk_rc_style_ref/unref() and the old file selector.
+
+* The various coordinate systems in use in GtkTreeView widgets have
+ been clarified in the documentation, and in the cause of doing so,
+ the functions gtk_tree_view_widget_to_tree_coords() and
+ gtk_tree_view_tree_to_widget_coords() have been deprecated in
+ favour of a new family of gtk_tree_view_convert_ functions.
+
+* gtk_menu_item_remove_submenu() has been deprecated in favour of
+ gtk_menu_item_set_submenu (..., NULL).
+
+* gtk_default_draw_check() has been fixed to really decrease the
+ indicator size by one pixel to ensure an odd size instead of
+ accidentially increasing it.
+ Consequently, gtk_cell_renderer_toggle_render() could be fixed to
+ not subtract 1 from the size passed to gtk_paint_option(), which
+ was just a workaround for above off-by-two for even sizes (theme
+ engines now get the real indicator size passed).
+ The default toggle size of GtkCheckMenuItem and GtkCellRendererToggle
+ has been changed to 13 to be consistent with GtkCheckButton.
+ The only visible change with default settings is that the indicator in
+ GtkCellRendererToggle has changed its size from 11 to 13 and is now
+ consistent with menus and toggle buttons.
+
+* GTK+ has always required that gtk_init() (or a variant thereof) is
+ called before any other GTK+ function. Some applications call functions
+ like gtk_clipboard_get() to check if they need to call gtk_init(),
+ anyway. A change in GLib 2.14 has recently broken this unsupported
+ practise. It is worth pointing out that calling gtk_init() twice
+ does no harm.
+
+
+Release notes for 2.10
+======================
+
+* The hexadecimal Unicode input feature has been reworked. It no longer
+ blocks the use of the sixteen Ctrl-Shift-<hex digit> key sequences. Now
+ it only uses Ctrl-Shift-u.
+
+* A memory leak in GtkStyle handling has been fixed. This may expose bugs
+ in third-party widgets which forget to call gtk_style_attach() in their
+ realize functions.
+
+* Range widgets like GtkScrollbar now render their arrows insensitive
+ when the slider is at the end. Applications which react to arrow
+ clicks even if the slider is at the end may want to use the new
+ gtk_range_set_[upper/lower]_stepper_sensitivity() functions to
+ prevent the arrows from being rendered insensitive.
+
+* GtkObject now uses the "floating reference" support in GObject.
+ GTK_OBJECT_IS_FLOATING() will still work, but direct checking
+ of the GTK_FLOATING flag will no longer detect the floating
+ reference. Details about floating references can be found in the docs:
+ http://developer.gnome.org/doc/API/2.0/gobject/gobject-The-Base-Object-Type.html#floating-ref
+
+* Accelerators like (_F) are now stripped from labels when they are
+ displayed in toolbars. If this is not wanted, the feature can be
+ suppressed by inserting a Unicode control character, e.g ZWNJ.
+
+* The pixbuf theme engine can now customize expanders (in GtkTreeView
+ and GtkExpander) and resize grips, using the new EXPANDER and
+ RESIZE_GRIP function values.
+
+* Dialogs created by gtk_about_dialog_new() no longer hide automatically
+ when the user clicks close. It is the applications responsibility to
+ hide or destroy the dialog.
+
+* Several new signals have been added to GtkNotebook. Care has been taken
+ to choose signal names which do not collide with signals added by well-known
+ derived classes. The names which can no longer be used for signals in
+ objects derived from GtkNotebook are page-reordered, page-removed and
+ page-added.
+
+* Due to the interface changes in the file chooser backend interface,
+ the GTK+ ABI version has been bumped to 2.10.0. Third-party filesystem
+ backends have to be ported to the new interface, other modules, such as
+ theme engines, input method modules or pixbuf loaders have to be rebuilt
+ so that they are installed in the right place for GTK+ to find them.
+
+
+Release notes for 2.8
+=====================
+
+* GTK+ 2.8 and Pango 1.10 require the cairo library.
+
+* The default theme has been renamed to "Raleigh". Existing configurations
+ specifying the "Default" theme name should still work.
+
+* The GtkTreeView::enable-search property has been changed to control
+ only typeahead search, not the C-f keybinding to start an interactive
+ search. To turn off interactive searching completely, you have to
+ set GtkTreeView::search-column to -1.
+
+* The restriction on using the same cell renderer in multiple columns
+ of a GtkTreeView is now more strictly enforced.
+
+* In GTK+ 2.8, GtkCalendar uses nl_langinfo() (if available) to determine
+ the first day of the week. Thus, it is possible to select the first day
+ of the week independently from the language, by setting LC_TIME.
+
+* In GTK+ 2.8, the gtk-update-icon-cache utility includes image data
+ in the icon caches, which will make the icon cache files larger than
+ the one produced by GTK+ 2.6. This change will reduce the memory
+ overhead of icon themes at runtime, since all GTK+ applications can
+ share the image data in memory.
+
+* In 2.8, GDK emits GdkEventGrabBroken events when a keyboard or pointer
+ grab is broken. On X11, this can happen if the same application grabs
+ again, or if the window used for the grab becomes unviewable. It happens
+ more often on Win32. Applications which use grabs should pay attention
+ to these events and do the necessary cleanups when the grab is lost.
+* The GIOChannel code for sockets on win32 has been rewritten.
+ Applications who make non-trivial use of GIOChannels on win32 should
+ be watched for possible problems.
+
+* GLib 2.8 uses atomic operations to implement reference counting, thus
+ g_object_ref/unref, g_closure_ref/sink/unref and g_iochannel_ref/unref
+ can be used without locking in multithreaded applications. Note that
+ other modifications, like concurrent setting of properties still require
+ locking.
+
+* g_convert() and related character set conversion functions have been
+ fixed to emit pending shift states and to not cache iconv descriptors
+ across multiple calls, since that is problematic for some encodings.
+ Note that these functions are not suitable for streaming conversions;
+ use g_iconv() to do streaming conversion.
+
+
+Release notes for 2.6
+=====================
* GTK+ 2.6 supports clipboard persistency. To make use of this feature,
a clipboard manager following the specification at
- http://www.freedesktop.org/wiki/Standards_2fclipboard_2dmanager_2dspec
+ http://www.freedesktop.org/wiki/Standards/clipboard-manager-spec
must be running. A sample implementation of such a clipboard manager
is available at
http://people.imendio.com/andersca/archives/clipboard-manager-0.3.tar.gz
+ Applications can use the function gdk_display_supports_clipboard_persistence()
+ to find out if clipboard persistence is available.
-* The icon theme code in GTK+ 2.6 follows the icon theme specification.
- Therefore, icon themes are looked for in $HOME/.icons, $XDG_DATA_HOME/icons,
- $XDG_DATA_DIRS/icons and /usr/share/pixmaps.
+* Notification on clipboard ownership changes via GdkOwnerChange events
+ requires the XFIXES X extension. Applications can use the function
+ gdk_display_supports_selection_notification() to find out if ownerchip
+ change notification is available.
+
+* The icon theme code in GTK+ 2.6 follows the freedesktop.org icon theme
+ specification. Setting the XDG_DATA_DIRS environtment variable may be
+ necessary if your icons aren't installed in the default location
+ /usr/share/icons.
* The icon theme code in GTK+ 2.6 can make use of mmap()able cache files
to avoid a lot of disk searching overhead. GTK+ includes a utility named
gtk-update-icon-cache to generate these cache files. For further details,
see the gtk-update-icon-cache man page or the GTK+ documentation.
-* GTK+ uses a technique involving macros for reducing the amount of PLT
- redirections which has the side effect that the names of internally used
- GLib functions are prefixed with IA__. The g_return_if_fail() macros
- strip this prefix away, but it will show up e.g. in a debugger.
-
-* The linux framebuffer GDK backend included in the gdk/linux-fb of GTK+
- is provided on a as-is basis and has not been tested at all. No
- guarantees about the degree of workingness or about future
- compatibility are provided.
+* To reduce code size and improve efficiency, GTK+, when compiled
+ with the GNU toolchain, has separate internal and external entry
+ points for exported functions. The internal names, which begin with
+ IA__, may be seen when debugging a GTK+ program.
* The following functions have been deprecated in GTK+ 2.6:
gdk_pango_context_set_colormap
symbols private which were not in any installed header files and
were never intended to be exported.
-* The gdk_pixbuf_xlib library included in the contrib/ directory of GTK+
- is provided on a as-is basis and has not been tested at all. No
- guarantees about the degree of workingness or about future
+* The gdk_pixbuf_xlib library included in the contrib/ directory
+ and the framebuffer GDK backend included in the gdk/linux-fb directory
+ of GTK+ are provided on an as-is basis and have not been tested at all.
+ No guarantees about the degree of workingness or about future
compatibility are provided.
-* The assumption of GLib and GTK+ by default is that filenames on the
- filesystem are encoded in UTF-8 rather than the encoding of the locale;
+* On Unix, the assumption of GLib and GTK+ by default is that filenames on
+ the filesystem are encoded in UTF-8 rather than the encoding of the locale;
the GTK+ developers consider that having filenames whose interpretation
depends on the current locale is fundamentally a bad idea.
- On Unix, if you have filenames encoded in the encoding of your
- locale, then you may want to set the G_FILENAME_ENCODING environment
- variable:
+ If you have filenames encoded in the encoding of your locale, then you
+ may want to set the G_FILENAME_ENCODING environment variable:
- G_FILENAME_ENCODING=@local
+ G_FILENAME_ENCODING=@locale
export G_FILENAME_ENCODING
(Earlier versions of GLib 2.x required a different environment variable
Best integration of GTK+ 2.6 with the environment is achieved by
using a UTF-8 locale.
- On Windows, filenames passed to GTK+ should always be in UTF-8, like
+ On Windows, filenames passed to GTK+ should always be in UTF-8, as
in GLib 2.6. This is different than in previous versions of GTK+
- where the system codepage was used. Like in GLib, for DLL ABI
+ where the system codepage was used. As in GLib, for DLL ABI
stability, applications built against previous versions of GTK+ will
use entry points providing the old semantics.
When compiling against GTK+ 2.6, applications intended to be
portable to Windows must take the UTF-8 file name encoding into
- consideration, and for instance use the gstdio wrappers to access
- files whose names have been constructed from strings returned from
- GTK+ or GLib.
+ consideration, and use the gstdio wrappers to access files whose
+ names have been constructed from strings returned from GTK+ or GLib.
+
How to report bugs
==================
* How to reproduce the bug.
- If you can reproduce it with the testgtk program that is built in the
- gtk/ subdirectory, that will be most convenient. Otherwise, please
- include a short test program that exhibits the behavior. As a last
- resort, you can also provide a pointer to a larger piece of software
+ If you can reproduce it with one of the tests or demos built with GTK+,
+ such as demos/gtk-demo/gtk-demo, that would be most convenient. Otherwise,
+ please include a short test program that exhibits the behavior. As a
+ last resort, you can also provide a pointer to a larger piece of software
that can be downloaded.
* If the bug was a crash, the exact text that was printed out when the
it will be more useful if the stacktrace is produced running the test
program with the --sync command line option.
+
Patches
=======
Otherwise, enter a new bug report that describes the patch, and attach
the patch to that bug report.
-Bug reports containing patches should include the PATCH keyword in their
-keyword fields. If the patch adds to or changes the GTK+ programming
-interface, the API keyword should also be included.
-
-Patches should be in unified diff form. (The -u option to GNU diff.)
+Patches should be in unified diff form. (The -up option to GNU diff.)