[gtk/matthiasc/for-master: 2/16] docs: Some touchups to the migration guide
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/for-master: 2/16] docs: Some touchups to the migration guide
- Date: Mon, 14 Sep 2020 03:45:02 +0000 (UTC)
commit b7d42502ce4481a1fe73b5da94ac4f567f82bf6f
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Sep 13 21:17:51 2020 -0400
docs: Some touchups to the migration guide
docs/reference/gtk/migrating-3to4.md | 56 ++++++++++++++++++++++--------------
1 file changed, 35 insertions(+), 21 deletions(-)
---
diff --git a/docs/reference/gtk/migrating-3to4.md b/docs/reference/gtk/migrating-3to4.md
index 14171a745e..8f99501358 100644
--- a/docs/reference/gtk/migrating-3to4.md
+++ b/docs/reference/gtk/migrating-3to4.md
@@ -301,9 +301,9 @@ GdkEvent is now a strictly read-only type, and you can no longer
change any of its fields, or construct new events. All event fields
have accessors that you will have to use.
-Event compression is always enabled in GTK 4. If you need to see
-the uncoalesced motion history, use gdk_motion_event_get_history()
-on the latest motion event.
+Event compression is always enabled in GTK 4, for both motion and
+scroll events. If you need to see the uncoalesced motion or scroll
+history, use gdk_event_get_history() on the latest event.
### Stop using grabs
@@ -464,7 +464,7 @@ the title of the window, so if you were setting the title of the header
bar, consider setting the window title instead. If you need to show a
title that's different from the window title, use the
#GtkHeaderBar:title-widget property to add a #GtkLabel as shown in the
-example in #GtkHeaderBar documentation.
+example in the #GtkHeaderBar documentation.
The gtk_header_bar_set_subtitle() function has been removed along with
its corresponding getter and the property. The old "subtitle" behavior
@@ -479,6 +479,10 @@ replicated by setting the #GtkHeaderBar:title-widget property to a
#GtkStack with #GtkStack:vhomogeneous property set to %TRUE and two
pages, each with a #GtkBox with title and subtitle as described above.
+Some of the internal structure of #GtkHeaderBar has been made available
+as public API: #GtkWindowHandle and #GtkWindowControls. If you have
+unusual needs for custom headerbars, these might be useful to you.
+
The ::pack-type child properties of GtkHeaderBar and GtkActionBar have
been removed. If you need to programmatically place children, use the
pack_start() and pack_end() APIs. In ui files, use the type attribute
@@ -494,7 +498,7 @@ converted into child meta objects.
Instead of gtk_container_child_set (stack, child, …), you can now use
g_object_set (gtk_stack_get_page (stack, child), …). In .ui files, the
GtkStackPage objects must be created explicitly, and take the child widget
-as property. GtkNotebook and GtkAssistant are similar.
+as property. The changes to GtkNotebook and GtkAssistant are similar.
gtk4-builder-tool can help with this conversion, with the --3to4 option
of the simplify command.
@@ -510,6 +514,9 @@ check buttons for traditional radio groups, and used grouped toggle
buttons for view switchers. The new API to set up groups of buttons
is gtk_check_button_set_group() and gtk_toggle_button_set_group().
+gtk4-builder-tool can help with this conversion, with the --3to4 option
+of the simplify command.
+
### Adapt to GtkScrolledWindow API changes
The constructor for GtkScrolledWindow no longer takes the adjustments
@@ -581,14 +588,14 @@ using child properties. If you have custom widgets using child properties,
they will have to be converted either to layout properties provided
by a layout manager (if they are layout-related), or handled in some
other way. One possibility is to use child meta objects, as seen with
-GtkAssistantPage, GtkStackPage and the like.
+#GtkAssistantPage, #GtkStackPage and the like.
The replacements for gtk_container_add() are:
| Widget | Replacement |
| ------ | ----------- |
| GtkActionBar | gtk_action_bar_pack_start(), gtk_action_bar_pack_end() |
-| GtkBox | gtk_box_append() |
+| GtkBox | gtk_box_prepend(), gtk_box_append() |
| GtkExpander | gtk_expander_set_child() |
| GtkFixed | gtk_fixed_put() |
| GtkFlowBox | gtk_flow_box_insert() |
@@ -608,14 +615,14 @@ The replacements for gtk_container_add() are:
GTK 4 has removed the #GtkContainer::border-width property (together
with the rest of GtkContainer). Use other means to influence the spacing
of your containers, such as the CSS margin and padding properties on child
-widgets.
+widgets, or the CSS border-spacing property on containers.
### Adapt to gtk_widget_destroy() removal
The function gtk_widget_destroy() has been removed. To explicitly destroy
a toplevel window, use gtk_window_destroy(). To destroy a widget that is
part of a hierarchy, remove it from its parent using a container-specific
-remove api, such as gtk_box_remove() or gtk_stack_remove(). To destroy
+remove API, such as gtk_box_remove() or gtk_stack_remove(). To destroy
a freestanding non-toplevel widget, use g_object_unref() to drop your
reference.
@@ -689,13 +696,18 @@ gradients, just use those.
### Don't use -gtk-icon-effect in your CSS
-GTK now supports a more versatile -gtk-icon-filter instead. Replace
--gtk-icon-effect: dim; with -gtk-icon-filter: opacity(0.5); and
--gtk-icon-effect: highlight; with -gtk-icon-filter: brightness(1.2);.
+GTK now supports a more versatile -gtk-icon-filter instead.
+
+Replace
+
+| Old | Replacement |
+| ------ | ----------- |
+| -gtk-icon-effect: dim | -gtk-icon-filter: opacity(0.5) |
+| -gtk-icon-effect: highlight | -gtk-icon-filter: brightness(1.2) |
### Don't use -gtk-icon-theme in your CSS
-GTK now uses the current icon theme, without a way to change this.
+GTK 4 always uses the current icon theme, with no way to change this.
### Don't use -gtk-outline-...-radius in your CSS
@@ -746,15 +758,16 @@ using them.
Widgets that appear and disappear with an animation, such as GtkPopover,
GtkInfoBar, GtkRevealer no longer use gtk_widget_show() and gtk_widget_hide()
for this, but have gained dedicated APIs for this purpose that you should
-use.
+use instead.
### Stop passing commandline arguments to gtk_init
The gtk_init() and gtk_init_check() functions no longer accept commandline
arguments. Just call them without arguments. Other initialization functions
that were purely related to commandline argument handling, such as
-gtk_parse_args() and gtk_get_option_group(), are gone. The APIs to
-initialize GDK separately are also gone, but it is very unlikely
+gtk_parse_args() and gtk_get_option_group(), are gone.
+
+The APIs to initialize GDK separately are also gone, but it is very unlikely
that you are affected by that.
### GdkPixbuf is deemphasized
@@ -768,7 +781,8 @@ gdk_texture_new_for_pixbuf() to convert them to texture objects where needed.
Event controllers and #GtkGestures have already been introduced in GTK 3 to handle
input for many cases. In GTK 4, the traditional widget signals for handling input,
-such as #GtkWidget::motion-event or #GtkWidget::event have been removed.
+such as #GtkWidget::motion-event or #GtkWidget::event have been removed. All event
+handling is done via event controllers now.
### Invalidation handling has changed
@@ -1022,10 +1036,10 @@ that are not under the toolkit or the application developer's
control. Additionally, "stop-the-world" functions do not fit
the event-driven programming model of GTK.
-You can replace calls to <function>gtk_dialog_run()</function>
-by specifying that the #GtkDialog must be modal using
-gtk_window_set_modal() or the %GTK_DIALOG_MODAL flag, and
-connecting to the #GtkDialog::response signal.
+You can replace calls to gtk_dialog_run() by specifying that the
+#GtkDialog must be modal using gtk_window_set_modal() or the
+%GTK_DIALOG_MODAL flag, and connecting to the #GtkDialog::response
+signal.
## Changes to consider after the switch
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]