summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-10-09 13:35:57 +0000
committerMatthias Clasen <mclasen@redhat.com>2020-10-09 13:35:57 +0000
commit758675f44efe6d64ee1614aee96600c23f73655f (patch)
treed91da3ebbe837c9963f7aba9a3fa21ce661949e5
parent4c3eb7c6f7ca2bee54c9805a9ac6768f8dbbe268 (diff)
parent8fcd4ac0f9ffb3513c4a55e9c018a43755bc7f4e (diff)
downloadgtk+-758675f44efe6d64ee1614aee96600c23f73655f.tar.gz
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master Closes #3242 and #3240 See merge request GNOME/gtk!2679
-rw-r--r--demos/gtk-demo/demo.gresource.xml2
-rw-r--r--demos/gtk-demo/listview_ucd.c20
-rw-r--r--docs/reference/gtk/migrating-3to4.md36
-rw-r--r--gtk/gtkmain.c7
-rw-r--r--gtk/gtkwindow.c4
-rw-r--r--meson.build3
6 files changed, 53 insertions, 19 deletions
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index e3f0a034c3..bcb2ebc3b5 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -184,7 +184,7 @@
<gresource prefix="/listview_settings">
<file>listview_settings.ui</file>
</gresource>
- <gresource prefix="/listview_ucd">
+ <gresource prefix="/listview_ucd_data/">
<file>ucdnames.data</file>
</gresource>
<gresource prefix="/listview_weather">
diff --git a/demos/gtk-demo/listview_ucd.c b/demos/gtk-demo/listview_ucd.c
index 4331d646fb..9fe85fcbd1 100644
--- a/demos/gtk-demo/listview_ucd.c
+++ b/demos/gtk-demo/listview_ucd.c
@@ -74,7 +74,7 @@ ucd_model_new (void)
guint u;
char *name;
- bytes = g_resources_lookup_data ("/listview_ucd/ucdnames.data", 0, NULL);
+ bytes = g_resources_lookup_data ("/listview_ucd_data/ucdnames.data", 0, NULL);
v = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(us)"), bytes, TRUE));
iter = g_variant_iter_new (v);
@@ -117,6 +117,18 @@ setup_label (GtkSignalListItemFactory *factory,
}
static void
+setup_ellipsizing_label (GtkSignalListItemFactory *factory,
+ GObject *listitem)
+{
+ GtkWidget *label;
+ label = gtk_label_new ("");
+ gtk_label_set_xalign (GTK_LABEL (label), 0);
+ gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
+ gtk_label_set_width_chars (GTK_LABEL (label), 20);
+ gtk_list_item_set_child (GTK_LIST_ITEM (listitem), label);
+}
+
+static void
bind_codepoint (GtkSignalListItemFactory *factory,
GObject *listitem)
{
@@ -279,21 +291,21 @@ create_ucd_view (GtkWidget *label)
gtk_column_view_append_column (GTK_COLUMN_VIEW (cv), column);
factory = gtk_signal_list_item_factory_new ();
- g_signal_connect (factory, "setup", G_CALLBACK (setup_label), NULL);
+ g_signal_connect (factory, "setup", G_CALLBACK (setup_ellipsizing_label), NULL);
g_signal_connect (factory, "bind", G_CALLBACK (bind_name), NULL);
column = gtk_column_view_column_new ("Name", factory);
gtk_column_view_column_set_resizable (column, TRUE);
gtk_column_view_append_column (GTK_COLUMN_VIEW (cv), column);
factory = gtk_signal_list_item_factory_new ();
- g_signal_connect (factory, "setup", G_CALLBACK (setup_label), NULL);
+ g_signal_connect (factory, "setup", G_CALLBACK (setup_ellipsizing_label), NULL);
g_signal_connect (factory, "bind", G_CALLBACK (bind_type), NULL);
column = gtk_column_view_column_new ("Type", factory);
gtk_column_view_column_set_resizable (column, TRUE);
gtk_column_view_append_column (GTK_COLUMN_VIEW (cv), column);
factory = gtk_signal_list_item_factory_new ();
- g_signal_connect (factory, "setup", G_CALLBACK (setup_label), NULL);
+ g_signal_connect (factory, "setup", G_CALLBACK (setup_ellipsizing_label), NULL);
g_signal_connect (factory, "bind", G_CALLBACK (bind_break_type), NULL);
column = gtk_column_view_column_new ("Break Type", factory);
gtk_column_view_column_set_resizable (column, TRUE);
diff --git a/docs/reference/gtk/migrating-3to4.md b/docs/reference/gtk/migrating-3to4.md
index 3dcb4ab27d..278ec2221d 100644
--- a/docs/reference/gtk/migrating-3to4.md
+++ b/docs/reference/gtk/migrating-3to4.md
@@ -277,15 +277,22 @@ with surfaces, you may have to change it to call the API in these
interfaces, depending on whether the surface you are dealing with
is a toplevel or a popup.
-As part of this reorganization, X11-only concepts such as sticky or
-keep-below have been removed. If you need to use them on your X11 windows,
-you will have to set the corresponding X11 properties (as specified in the
-EWMH) yourself. Subsurfaces are only supported with the Wayland backend,
-using gdk_wayland_surface_new_subsurface(). Native and foreign subwindows
-are no longer supported. These concepts were complicating the code and
-could not be supported across backends.
-
-gdk_window_reparent() is no longer available.
+As part of this reorganization, X11-only concepts such as sticky,
+keep-below, urgency, skip-taskbar or window groups have either been
+removed or moved to X11 backend api. If you need to use them on your
+X11 windows, you will have to use those backend apis or set the
+corresponding X11 properties (as specified in the EWMH) yourself.
+
+Subsurfaces are only supported with the Wayland backend, using
+gdk_wayland_surface_new_subsurface(). Native and foreign subwindows
+are no longer supported. These concepts were complicating the code
+and could not be supported across backends.
+
+A number of GdkWindow APIs are no longer available. This includes
+gdk_window_reparent(), gdk_window_set_geometry_hints(), gdk_window_raise(),
+gdk_window_restack(), gdk_window_move(), gdk_window_resize(). If
+you need to manually control the position or stacking of your X11
+windows, you you will have to use Xlib apis.
A number of minor API cleanups have happened in GdkSurface
as well. For example, gdk_surface_input_shape_combine_region()
@@ -459,6 +466,17 @@ GtkButtonBox has been removed. Use a GtkBox instead.
The GtkBox pack-start and -end methods have been replaced by gtk_box_prepend()
and gtk_box_append(). You can also reorder box children as necessary.
+### Adapt to GtkWindow API changes
+
+Following the GdkSurface changes, a number of GtkWindow APIs that were
+X11-specific have been removed. This includes gtk_window_set_geometry_hints(),
+gtk_window_set_gravity(), gtk_window_move(), gtk_window_parse_geometry(),
+gtk_window_set_keep_above(), gtk_window_set_keep_below(),
+gtk_window_begin_resize_drag(), gtk_window_begin_move_drag().
+Most likely, you should just stop using them. In some cases, you can
+fall back to using the underlying #GdkToplevel APIS (for example,
+gdk_toplevel_begin_resize()).
+
### Adapt to GtkHeaderBar and GtkActionBar API changes
The gtk_header_bar_set_show_close_button() function has been renamed to
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 10780b7684..bffb4cfa94 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1648,8 +1648,11 @@ gtk_main_do_event (GdkEvent *event)
break;
case GDK_FOCUS_CHANGE:
- if (!_gtk_widget_captured_event (target_widget, event, target_widget))
- gtk_widget_event (target_widget, event, target_widget);
+ {
+ GtkWidget *root = GTK_WIDGET (gtk_widget_get_root (target_widget));
+ if (!_gtk_widget_captured_event (root, event, root))
+ gtk_widget_event (root, event, root);
+ }
break;
case GDK_KEY_PRESS:
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index c5c69e2b33..a6f7f37912 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -5242,8 +5242,8 @@ _gtk_window_unset_focus_and_default (GtkWindow *window,
{
if (_gtk_widget_get_visible (parent))
{
- gtk_window_set_focus (window, parent);
- break;
+ if (gtk_widget_grab_focus (parent))
+ break;
}
parent = gtk_widget_get_parent (parent);
diff --git a/meson.build b/meson.build
index ab4e0a1f31..85a605c2c9 100644
--- a/meson.build
+++ b/meson.build
@@ -34,6 +34,7 @@ graphene_req = '>= 1.9.1'
epoxy_req = '>= 1.4'
cloudproviders_req = '>= 0.3.1'
xkbcommon_req = '>= 0.2.0'
+sysprof_req = '>= 3.38.0'
gnome = import('gnome')
@@ -680,7 +681,7 @@ cdata.set('HAVE_CLOUDPROVIDERS', cloudproviders_dep.found())
# libsysprof-capture support
if not get_option('sysprof').disabled()
- libsysprof_capture_dep = dependency('sysprof-capture-4',
+ libsysprof_capture_dep = dependency('sysprof-capture-4', version: sysprof_req,
required: get_option('sysprof'),
default_options: [
'enable_examples=false',