mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-29 15:01:23 +00:00
364 lines
15 KiB
Plaintext
364 lines
15 KiB
Plaintext
General Information
|
|
===================
|
|
|
|
This is GTK+ version @GTK_VERSION@. GTK+ is a multi-platform toolkit for
|
|
creating graphical user interfaces. Offering a complete set of widgets,
|
|
GTK+ is suitable for projects ranging from small one-off projects to
|
|
complete application suites.
|
|
|
|
GTK+ is free software and part of the GNU Project. However, the
|
|
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
|
|
developers, including those developing proprietary software, without any
|
|
license fees or royalties.
|
|
|
|
The official download locations are:
|
|
ftp://ftp.gtk.org/pub/gtk
|
|
http://download.gnome.org/sources/gtk+
|
|
|
|
The official web site is:
|
|
http://www.gtk.org/
|
|
|
|
Information about mailing lists can be found at
|
|
http://www.gtk.org/mailing-lists.php
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
See the file 'INSTALL'
|
|
|
|
|
|
How to report bugs
|
|
==================
|
|
|
|
Bugs should be reported to the GNOME bug tracking system.
|
|
(http://bugzilla.gnome.org, product glib.) You will need
|
|
to create an account for yourself.
|
|
|
|
In the bug report please include:
|
|
|
|
* Information about your system. For instance:
|
|
|
|
- What operating system and version
|
|
- For Linux, what version of the C library
|
|
|
|
And anything else you think is relevant.
|
|
|
|
* How to reproduce the bug.
|
|
|
|
If you can reproduce it with one of the test programs that are built
|
|
in the tests/ 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 that can be downloaded.
|
|
|
|
* If the bug was a crash, the exact text that was printed out
|
|
when the crash occurred.
|
|
|
|
* Further information such as stack traces may be useful, but
|
|
is not necessary.
|
|
|
|
|
|
Patches
|
|
=======
|
|
|
|
Patches should also be submitted to bugzilla.gnome.org. If the
|
|
patch fixes an existing bug, add the patch as an attachment
|
|
to that bug report.
|
|
|
|
Otherwise, enter a new bug report that describes the patch,
|
|
and attach the patch to that bug report.
|
|
|
|
Patches should be in unified diff form. (The -up option to GNU diff)
|
|
Even better are git-formatted patches. (Use git format-patch)
|
|
|
|
|
|
Release notes for 3.20
|
|
======================
|
|
|
|
* The way theming works in GTK+ has been reworked fundamentally, to
|
|
implement many more CSS features and make themes more expressive.
|
|
As a result, custom CSS that is shipped with applications and third-
|
|
party themes will need adjustments. Widgets now use element names much
|
|
more than style classes; type names are no longer used in style matching.
|
|
Every widget now documents the element names it has and the style classes
|
|
it uses. The GTK+ inspector can also help with finding this information.
|
|
|
|
* GTK+ now uses internal subobjects (also known as gadgets) for allocating
|
|
and drawing widget parts. Applications that subclass GTK+ widgets may see
|
|
warnings if they override the size_allocate vfunc and don't chain up.
|
|
The proper way to subclass is to chain up in size_allocate. If you do not
|
|
want to do that for some reason, you have to override the draw vfunc as
|
|
well.
|
|
|
|
* Several fixes for window sizing and window placement with client-side
|
|
decorations may affect applications that are saving and restoring window
|
|
sizes. The recommended best practice for this which is known to work with
|
|
client-side and server-side decorations and with older and newer versions
|
|
of GTK+ is to use gtk_window_get_size() to save window sizes and
|
|
gtk_window_set_default_size() to restore it.
|
|
See https://wiki.gnome.org/HowDoI/SaveWindowState for a detailed example.
|
|
|
|
* Geometry handling in GtkWindow has been removed. If you are using the
|
|
functions gtk_window_resize_to_geometry, gtk_window_set_default_geometry,
|
|
gtk_window_parse_geometry or gtk_window_set_geometry_hints, you may need
|
|
to make some changes to your code.
|
|
|
|
* GtkDrawingArea used to implicitly render the theme background before
|
|
calling the ::draw handler. This is no longer the case. If you rely
|
|
on having a theme-provided background, call gtk_render_background()
|
|
from your ::draw handler.
|
|
|
|
* The GtkFileChooser interface prerequisite changed from GtkWidget
|
|
to GObject, allowing non-widget implementations of this interface.
|
|
This is a minor change in ABI, as applications are no longer guaranteed
|
|
that a GtkFileChooser also supports all GtkWidget methods. However, all
|
|
previously existing implementations still derive from GtkWidget, so no
|
|
existing code should break.
|
|
|
|
* The way in which GtkLevelBar determines the offset to apply was a bit
|
|
inconsistent in the past; this has been fixed. Applications that are using
|
|
custom offsets should double-check that their levels look as expected.
|
|
|
|
Release notes for 3.18
|
|
======================
|
|
|
|
* The GtkListBox model support that was introduced in 3.16 has been
|
|
changed to no longer call gtk_widget_show_all on rows created by
|
|
the create_widget_func. You need to manage the visibility of child
|
|
widgets yourself in your create_widget_func.
|
|
|
|
* The alpha component of foreground colors that are applied to
|
|
GtkCellRendererText is no longer ignored. If you don't want your
|
|
text to be translucent, use opaque colors.
|
|
|
|
Release notes for 3.16
|
|
======================
|
|
|
|
* GTK+ now includes an OpenGL rendering widget. To support GL on various
|
|
platforms, GTK+ uses libepoxy.
|
|
|
|
* GTK+ no longer uses gtk-update-icon-cache during its build. The
|
|
--enable-gtk2-dependency configure option has been removed.
|
|
|
|
* The introspection annotations for the x and y parameters of
|
|
GtkMenuPositionFunc have been corrected from 'out' to 'inout'.
|
|
If you are using such a function from language-bindings, this
|
|
may require adjustments.
|
|
|
|
* The lookup order for actions that are activated via keyboard
|
|
accelerators has been changed to start at the currently focused
|
|
widget. If your application is making use fo nested action groups
|
|
via gtk_widget_insert_action_group, you may want to check that
|
|
this change does not upset your accelerators.
|
|
|
|
* The GtkScrollable interface has gained a new vfunc, get_border,
|
|
that is used to position overshoot and undershoot indications that
|
|
are drawn over the content by GtkScrolledWindow. Unless your scrollable
|
|
has non-scrolling parts similar to treeview headers, there is no need
|
|
to implement this vfunc.
|
|
|
|
* The GtkSearchEntry widget has gained a number of new signals that
|
|
are emitted when certain key sequences are seen. In particular, it
|
|
now handles the Escape key and emits ::stop-search. Applications that
|
|
expect to handle Escape themselves will need to be updated.
|
|
|
|
Release notes for 3.14
|
|
======================
|
|
|
|
* A new state, GTK_STATE_FLAG_CHECKED, has been added for checked states
|
|
of radio and check buttons and menuitems. Applications that are using
|
|
GTK+ styles without widgets will need adjustments.
|
|
|
|
* Adwaita is now the default theme on all platforms.
|
|
|
|
* The icon theme code has become a little pickier about sizes and is not
|
|
automatically scaling icons beyond the limits defined in the icon theme
|
|
unless explicitly asked to do so with GTK_ICON_LOOKUP_FORCE_SIZE.
|
|
|
|
* GTK+ now includes an interactive debugger which can be activated with
|
|
the keyboard shortcuts Ctrl-Shift-d or Ctrl-Shift-i. If these shortcuts
|
|
interfere with application keybindings, they can be disabled with the
|
|
setting org.gtk.Settings.Debug.enable-inspector-keybinding.
|
|
|
|
* Most widgets have been ported to use the new gesture framework internally
|
|
for event handling. Traditional event handlers in derived widgets are still
|
|
being called.
|
|
|
|
* Using GTK+ under X11 without the X Render extension has been observed
|
|
to be problematic. This combination is using code paths in cairo and
|
|
graphics drivers which are rarely tested and likely buggy.
|
|
|
|
* GtkTextView is now using a pixel-cache internally, and is drawing
|
|
a background underneath the text. This can cause problems for applications
|
|
which assumed that they could draw things below and above the text
|
|
by chaining up in the ::draw implementation of their GtkTextView subclass.
|
|
As a short-term workaround, you can make the application apply a
|
|
custom theme to the text view with a transparent background. For
|
|
a proper fix, use the new ::draw_layer vfunc.
|
|
|
|
Release notes for 3.12
|
|
======================
|
|
|
|
* GtkWidget had a hack where if opacity is 0.999 we set up an opacity
|
|
group when rendering the widget. This is no longer needed in 3.10,
|
|
and GtkStack doesn't use it anymore. It has been removed in 3.12.
|
|
GdStack is using it, so applications should be ported from GdStack
|
|
to GtkStack in 3.12.
|
|
|
|
* GtkHeaderBar in 3.10 was not ordering its pack-end children in
|
|
the right way. This has been fixed in 3.12. Applications which
|
|
pack multiple widgets at the end of a headerbar will have to
|
|
be updated.
|
|
|
|
* gtk_text_view_add_child_in_window has changed behaviour a bit.
|
|
It now always positions the child in buffer coordinates, where
|
|
it used to inconsistently scroll with the buffer but then go
|
|
reposition to a window-relative position on redraw.
|
|
|
|
* A number of container widgets have been made more compliant with
|
|
the uniform CSS rendering model by making them render backgrounds
|
|
and borders. This may require some adjustments in applications that
|
|
were making assumptions about containers never rendering backgrounds.
|
|
|
|
Release notes for 3.10
|
|
======================
|
|
|
|
* GDK has been changed to allow only a single screen per display.
|
|
Only the X11 backend had multiple screens before, and multi-screen
|
|
setups (not multi-monitor!) are very rare nowadays. If you really
|
|
need multiple X screens, open them as separate displays.
|
|
|
|
* The behavior of GtkBox::expand has been changed to never propagate
|
|
up. Previously, this was happening inconsistently. If you want the
|
|
expand to propagate, use the GtkWidget h/v expand properties.
|
|
If you experience sizing problems with widgets in ported code,
|
|
carefully check the expand and fill flags of your boxes.
|
|
|
|
* GtkBin no longer provides default implementations for
|
|
get_height_for_width, subclasses now have to provide their own
|
|
implementation if they need height-for-width functionality.
|
|
|
|
* Widget state propagation has been changed. Historically, all of
|
|
active, prelight, selected, insensitive, inconsistent and backdrop
|
|
have been propagated to children. This has now been restricted
|
|
to just the insensitive and backdrop states. This mostly affects
|
|
theming.
|
|
|
|
* The way widget drawing happens has changed. Earlier versions handled
|
|
one expose event per GdkWindow, each with a separate cairo_t. Now we
|
|
only handle the expose event on the toplevel and reuse the same
|
|
cairo_t (with the right translation and clipping) for the entire
|
|
widget hierarchy, recursing down via the GtkWidget::draw signal.
|
|
Having all rendering in the same call tree allows effects like
|
|
opacity and offscreen rendering of entire widget sub-hierarchies.
|
|
Generally this should not require any changes in widgets, but
|
|
code looking at e.g. the current expose event may see different
|
|
behavior than before.
|
|
|
|
* The Gtk+ scrolling implementation has changed. gdk_window_scroll()
|
|
and gdk_window_move_region() no longer copy the region on the
|
|
window, but rather invalidate the entire scrolled region. This is
|
|
slightly slower, but allowed us to implement a offscreen surface
|
|
scrolling method which better fits modern hardware. Most scrolling
|
|
widgets in Gtk+ have been converted to use this model for scrolling,
|
|
but external widgets implementing scrolling using GdkWindow may see
|
|
some slowdown.
|
|
|
|
Release notes for 3.8
|
|
=====================
|
|
|
|
* GtkIconInfo has changed from being a boxed type to a GObject. This
|
|
is technically an ABI change, but basically all existing code
|
|
will keep working if its used as a boxed type, and its not
|
|
possible to instantiate GtkIconInfos outside Gtk, so this is not
|
|
expected to be a big problem.
|
|
|
|
Release notes for 3.6
|
|
=====================
|
|
|
|
* The accessibility bridge code that exports accessible objects
|
|
on the bus is now used by default; atk-bridge has been converted
|
|
into a library that GTK+ links against. To void the linking,
|
|
pass --without-atk-bridge when configuring GTK+.
|
|
|
|
* GDK threading support has been deprecated. It is recommended to
|
|
use g_idle_add(), g_main_context_invoke() and similar funtions
|
|
to make all GTK+ calls from the main thread.
|
|
|
|
* GTK+ now follows the XDG Base Directory specification for
|
|
user configuration and data files. In detail,
|
|
* $XDG_CONFIG_HOME/gtk-3.0/custom-papers is the new location
|
|
for $HOME/.gtk-custom-papers
|
|
* $XDG_CONFIG_HOME/gtk-3.0/bookmarks is the new location
|
|
for $HOME/.gtk-bookmarks
|
|
* $XDG_DATA_HOME/themes is preferred over $HOME/.themes
|
|
* $XDG_DATA_HOME/icons is preferred over $HOME/.icons.
|
|
Existing files from the old location will still be read
|
|
if the new location does not exist.
|
|
|
|
* $HOME/.gtk-3.0 is no longer in the default module load path.
|
|
If you want to load modules from there, add it to the GTK_PATH
|
|
environment variable.
|
|
|
|
Release notes for 3.4
|
|
=====================
|
|
|
|
* Scroll events have been separated from button events, and smooth
|
|
scrolling has been added with a separate event mask. Widgets now
|
|
need to have either GDK_SCROLL_MASK or GDK_SMOOTH_SCROLL_MASK in
|
|
their event mask to receive scroll events. In addition, the
|
|
GdkScrollDirection enumeration has gained a new member,
|
|
GDK_SCROLL_SMOOTH, so switch statements will have to be amended
|
|
to cover this case.
|
|
|
|
* GTK+ now uses <Primary> instead of <Control> in keyboard accelerators,
|
|
for improved cross-platform handling. This should not affect
|
|
applications, unless they parse or create these accelerator
|
|
manually.
|
|
|
|
* The tacit assumption that the Alt key corresponds to the MOD1
|
|
modifier under X11 is now a hard requirement.
|
|
|
|
* The beagle search backend for the file chooser has been dropped.
|
|
Tracker is the only supported search backend on Linux now.
|
|
|
|
* GtkNotebook has been changed to destroy its action widgets when
|
|
it gets destroyed itself. If your application is using action
|
|
widgets in notebooks, you may have to adjust your code to take
|
|
this into account.
|
|
|
|
* GtkApplication no longer uses the gtk mainloop wrappers, so
|
|
it is no longer possible to use gtk_main_quit() to stop it.
|
|
|
|
* The -uninstalled variants of the pkg-config files have been dropped.
|
|
|
|
* Excessive dependencies have been culled from Requires: lines
|
|
in .pc files. Dependent modules may have to declare dependencies
|
|
that there were getting 'for free' in the past.
|
|
|
|
Release notes for 3.2
|
|
=====================
|
|
|
|
* The accessible implementations for GTK+ widgets have been integrated
|
|
into libgtk itself, and the gail module does not exist anymore. This
|
|
change should not affect applications very much.
|
|
|
|
Release notes for 3.0
|
|
=====================
|
|
|
|
* GTK+ 3 is a major new version of GTK+, which is parallel installable
|
|
with GTK+ 2.x. For information about porting applications from GTK+ 2.x
|
|
to GTK+ 3, see the file:
|
|
|
|
docs/reference/gtk/html/migrating.html
|
|
|
|
Or online at:
|
|
|
|
http://library.gnome.org/devel/gtk/3.0/migrating.html
|
|
|
|
* Note that the library sonames in this release have been changed from
|
|
libgtk-3.0 and libgdk-3.0 to libgtk-3 and libgdk-3, to prevent the
|
|
library versions from going backwards, compared to the 2.90/91/99
|
|
releases. Applications will have to be recompiled.
|