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