Hello community, here is the log from the commit of package libdazzle for openSUSE:Factory checked in at 2018-01-25 12:38:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libdazzle (Old) and /work/SRC/openSUSE:Factory/.libdazzle.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libdazzle" Thu Jan 25 12:38:06 2018 rev:4 rq:568067 version:3.26.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libdazzle/libdazzle.changes 2017-10-06 11:02:48.551161499 +0200 +++ /work/SRC/openSUSE:Factory/.libdazzle.new/libdazzle.changes 2018-01-25 12:38:07.901411161 +0100 @@ -1,0 +2,17 @@ +Fri Jan 19 23:30:40 UTC 2018 - bjorn....@gmail.com + +- Update to version 3.26.2: + + Progress menu button will now avoid spinning in some + conditions. + + Leak fixed in DzlTree text rendering. + + Shortcut mneumonics are now properly activated. + + Fixes to avoid various deprecated API. + + A number of leaks detected by ASAN were fixed. + + The directory reaper handles various mtime comparisons more + correctly now. + + Some G-I annotations were improved. + + DzlMenuMerger is more flexible with input. + + Some performance improvements when dealing with CSS and other + resources paths. + +------------------------------------------------------------------- Old: ---- libdazzle-3.26.1.tar.xz New: ---- libdazzle-3.26.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libdazzle.spec ++++++ --- /var/tmp/diff_new_pack.eZm59L/_old 2018-01-25 12:38:08.561380350 +0100 +++ /var/tmp/diff_new_pack.eZm59L/_new 2018-01-25 12:38:08.565380163 +0100 @@ -1,7 +1,7 @@ # # spec file for package libdazzle # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define base 3.25 Name: libdazzle -Version: 3.26.1 +Version: 3.26.2 Release: 0 Summary: Collection of fancy features for GLib and Gtk+ License: GPL-3.0+ AND LGPL-2.1+ ++++++ libdazzle-3.26.1.tar.xz -> libdazzle-3.26.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/NEWS new/libdazzle-3.26.2/NEWS --- old/libdazzle-3.26.1/NEWS 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/NEWS 2018-01-11 02:10:36.000000000 +0100 @@ -1,4 +1,24 @@ ============== +Version 3.26.2 +============== + +Changes in this release: + + • Progress menu button will now avoid spinning in some conditions. + • Leak fixed in DzlTree text rendering. + • Shortcut mneumonics are now properly activated. + • Fixes to avoid various deprecated API. + • A number of leaks detected by ASAN were fixed. + • The directory reaper handles various mtime comparisons more + correctly now. + • Some G-I annotations were improved. + • DzlMenuMerger is more flexible with input. + • Some performance improvements when dealing with CSS and other + resources paths. + +It's recommended that all distributions update to this release. + +============== Version 3.26.1 ============== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/meson.build new/libdazzle-3.26.2/meson.build --- old/libdazzle-3.26.1/meson.build 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/meson.build 2018-01-11 02:10:36.000000000 +0100 @@ -1,5 +1,5 @@ project('libdazzle', 'c', - version: '3.26.1', + version: '3.26.2', license: 'GPLv3+', meson_version: '>= 0.40.1', default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/files/dzl-directory-reaper.c new/libdazzle-3.26.2/src/files/dzl-directory-reaper.c --- old/libdazzle-3.26.1/src/files/dzl-directory-reaper.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/files/dzl-directory-reaper.c 2018-01-11 02:10:36.000000000 +0100 @@ -152,18 +152,6 @@ } static gboolean -has_expired (guint64 mtime, - guint64 min_age) -{ - guint64 now = g_get_real_time () / G_USEC_PER_SEC; - - if (now >= min_age) - return (now - min_age) >= mtime; - - return FALSE; -} - -static gboolean remove_directory_with_children (GFile *file, GCancellable *cancellable, GError **error) @@ -233,6 +221,7 @@ GCancellable *cancellable) { GArray *patterns = task_data; + gint64 now = g_get_real_time (); g_assert (G_IS_TASK (task)); g_assert (DZL_IS_DIRECTORY_REAPER (source_object)); @@ -267,7 +256,10 @@ v64 = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED); - if (has_expired (v64, p->min_age)) + /* mtime is in seconds */ + v64 *= G_USEC_PER_SEC; + + if (v64 < now - p->min_age) { if (!g_file_delete (p->file.file, cancellable, &error)) g_warning ("%s", error->message); @@ -306,7 +298,10 @@ name = g_file_info_get_name (info); v64 = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED); - if (has_expired (v64, p->min_age)) + /* mtime is in seconds */ + v64 *= G_USEC_PER_SEC; + + if (v64 < now - p->min_age) { g_autoptr(GFile) file = g_file_get_child (p->glob.directory, name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/menus/dzl-menu-button.c new/libdazzle-3.26.2/src/menus/dzl-menu-button.c --- old/libdazzle-3.26.1/src/menus/dzl-menu-button.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/menus/dzl-menu-button.c 2018-01-11 02:10:36.000000000 +0100 @@ -189,6 +189,12 @@ g_return_if_fail (DZL_IS_MENU_BUTTON (self)); + if (menu_id == NULL) + { + dzl_menu_button_set_model (self, NULL); + return; + } + app = g_application_get_default (); if (DZL_IS_APPLICATION (app)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/menus/dzl-menu-manager.c new/libdazzle-3.26.2/src/menus/dzl-menu-manager.c --- old/libdazzle-3.26.1/src/menus/dzl-menu-manager.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/menus/dzl-menu-manager.c 2018-01-11 02:10:36.000000000 +0100 @@ -38,8 +38,7 @@ #define DZL_MENU_ATTRIBUTE_MERGE_ID "dazzle-merge-id" /** - * SECTION:dzlmenumanager - * @short_description: UI merging for menus + * DzlMenuManager: * * The goal of #DzlMenuManager is to simplify the process of merging multiple * GtkBuilder .ui files containing menus into a single representation of the @@ -59,6 +58,8 @@ * dzl_menu_manager_get_menu_by_id() will always return a #GMenu, however * that menu may contain no children until something has extended it later * on during the application process. + * + * Since: 3.26 */ static const gchar * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/panel/dzl-dock-widget.c new/libdazzle-3.26.2/src/panel/dzl-dock-widget.c --- old/libdazzle-3.26.1/src/panel/dzl-dock-widget.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/panel/dzl-dock-widget.c 2018-01-11 02:10:36.000000000 +0100 @@ -139,7 +139,7 @@ break; case PROP_ICON_NAME: - g_value_set_string (value, dzl_dock_widget_item_get_icon_name (DZL_DOCK_ITEM (self))); + g_value_take_string (value, dzl_dock_widget_item_get_icon_name (DZL_DOCK_ITEM (self))); break; case PROP_MANAGER: @@ -147,7 +147,7 @@ break; case PROP_TITLE: - g_value_set_string (value, dzl_dock_widget_item_get_title (DZL_DOCK_ITEM (self))); + g_value_take_string (value, dzl_dock_widget_item_get_title (DZL_DOCK_ITEM (self))); break; default: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/search/dzl-fuzzy-index-builder.c new/libdazzle-3.26.2/src/search/dzl-fuzzy-index-builder.c --- old/libdazzle-3.26.1/src/search/dzl-fuzzy-index-builder.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/search/dzl-fuzzy-index-builder.c 2018-01-11 02:10:36.000000000 +0100 @@ -452,9 +452,9 @@ DzlFuzzyIndexBuilder *self = source_object; g_autoptr(GVariant) variant = NULL; g_autoptr(GVariant) documents = NULL; + g_autoptr(GError) error = NULL; GVariantDict dict; GFile *file = task_data; - GError *error = NULL; g_assert (G_IS_TASK (task)); g_assert (DZL_IS_FUZZY_INDEX_BUILDER (self)); @@ -518,7 +518,7 @@ NULL, cancellable, &error)) - g_task_return_error (task, error); + g_task_return_error (task, g_steal_pointer (&error)); else g_task_return_boolean (task, TRUE); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/search/dzl-fuzzy-index.c new/libdazzle-3.26.2/src/search/dzl-fuzzy-index.c --- old/libdazzle-3.26.1/src/search/dzl-fuzzy-index.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/search/dzl-fuzzy-index.c 2018-01-11 02:10:36.000000000 +0100 @@ -145,10 +145,10 @@ g_autoptr(GVariant) keys = NULL; g_autoptr(GVariant) tables = NULL; g_autoptr(GVariant) metadata = NULL; + g_autoptr(GError) error = NULL; DzlFuzzyIndex *self = source_object; GFile *file = task_data; GVariantDict dict; - GError *error = NULL; gint version = 0; gboolean case_sensitive = FALSE; @@ -178,7 +178,7 @@ if (NULL == (mapped_file = g_mapped_file_new (path, FALSE, &error))) { - g_task_return_error (task, error); + g_task_return_error (task, g_steal_pointer (&error)); return; } @@ -305,14 +305,14 @@ { DzlFuzzyIndexCursor *cursor = (DzlFuzzyIndexCursor *)object; g_autoptr(GTask) task = user_data; - GError *error = NULL; + g_autoptr(GError) error = NULL; g_assert (DZL_IS_FUZZY_INDEX_CURSOR (cursor)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (G_IS_TASK (task)); if (!g_async_initable_init_finish (G_ASYNC_INITABLE (cursor), result, &error)) - g_task_return_error (task, error); + g_task_return_error (task, g_steal_pointer (&error)); else g_task_return_pointer (task, g_object_ref (cursor), g_object_unref); } @@ -333,6 +333,7 @@ g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable)); task = g_task_new (self, cancellable, callback, user_data); + g_task_set_priority (task, G_PRIORITY_LOW); g_task_set_source_tag (task, dzl_fuzzy_index_query_async); cursor = g_object_new (DZL_TYPE_FUZZY_INDEX_CURSOR, @@ -347,7 +348,7 @@ G_PRIORITY_LOW, cancellable, dzl_fuzzy_index_query_cb, - g_object_ref (task)); + g_steal_pointer (&task)); } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-manager.c new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-manager.c --- old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-manager.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-manager.c 2018-01-11 02:10:36.000000000 +0100 @@ -517,7 +517,7 @@ { for (guint i = 0; children[i] != NULL; i++) { - g_autofree gchar *path = g_build_filename (resource_dir, children[i], NULL); + g_autofree gchar *path = g_build_path ("/", resource_dir, children[i], NULL); g_autoptr(DzlShortcutTheme) theme = NULL; g_autoptr(GError) local_error = NULL; g_autoptr(GBytes) bytes = NULL; @@ -804,6 +804,8 @@ GtkWidget *toplevel, const DzlShortcutChord *chord) { + DzlShortcutManagerPrivate *priv = dzl_shortcut_manager_get_instance_private (self); + g_assert (DZL_IS_SHORTCUT_MANAGER (self)); g_assert (GTK_IS_WIDGET (widget)); g_assert (GTK_IS_WIDGET (toplevel)); @@ -812,6 +814,7 @@ if (dzl_shortcut_chord_get_length (chord) == 1) { GApplication *app = g_application_get_default (); + const gchar *action; GdkModifierType state; guint keyval; @@ -821,6 +824,33 @@ if (gtk_bindings_activate (G_OBJECT (toplevel), keyval, state)) return TRUE; + /* See if there is a mnemonic active that should be activated */ + if (GTK_IS_WINDOW (toplevel) && + gtk_window_mnemonic_activate (GTK_WINDOW (toplevel), keyval, state)) + return TRUE; + + /* + * See if we have something defined for this theme that + * can be activated directly. + */ + action = _dzl_shortcut_theme_lookup_action (priv->internal_theme, chord); + + if (action != NULL) + { + g_autofree gchar *prefix = NULL; + g_autofree gchar *name = NULL; + g_autoptr(GVariant) target = NULL; + + dzl_g_action_name_parse_full (action, &prefix, &name, &target); + + if (dzl_gtk_widget_action (toplevel, prefix, name, target)) + return TRUE; + } + + /* + * Now fallback to trying to activate the action within GtkApplication + * as the legacy Gtk bindings would do. + */ if (GTK_IS_APPLICATION (app)) { g_autofree gchar *accel = dzl_shortcut_chord_to_string (chord); @@ -832,11 +862,12 @@ { for (guint i = 0; actions[i] != NULL; i++) { - const gchar *action = actions[i]; g_autofree gchar *prefix = NULL; g_autofree gchar *name = NULL; g_autoptr(GVariant) param = NULL; + action = actions[i]; + if (!dzl_g_action_name_parse_full (action, &prefix, &name, ¶m)) { g_warning ("Failed to parse: %s", action); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-private.h new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-private.h --- old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-private.h 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-private.h 2018-01-11 02:10:36.000000000 +0100 @@ -126,6 +126,8 @@ DzlShortcutManager *manager); void _dzl_shortcut_theme_set_name (DzlShortcutTheme *self, const gchar *name); +const gchar *_dzl_shortcut_theme_lookup_action (DzlShortcutTheme *self, + const DzlShortcutChord *chord); void _dzl_shortcut_theme_merge (DzlShortcutTheme *self, DzlShortcutTheme *layer); DzlShortcutMatch _dzl_shortcut_theme_match (DzlShortcutTheme *self, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-theme-load.c new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-theme-load.c --- old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-theme-load.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-theme-load.c 2018-01-11 02:10:36.000000000 +0100 @@ -239,7 +239,7 @@ state->stack->pspec->name, &value); - g_string_free (state->text, FALSE); + g_string_free (state->text, TRUE); state->text = NULL; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-theme.c new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-theme.c --- old/libdazzle-3.26.1/src/shortcuts/dzl-shortcut-theme.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/shortcuts/dzl-shortcut-theme.c 2018-01-11 02:10:36.000000000 +0100 @@ -352,7 +352,7 @@ g_return_if_fail (name != NULL); - g_hash_table_insert (priv->contexts, g_strdup (name), g_object_ref (context)); + g_hash_table_insert (priv->contexts, (gchar *)g_intern_string (name), g_object_ref (context)); } DzlShortcutTheme * @@ -447,6 +447,29 @@ } } +const gchar * +_dzl_shortcut_theme_lookup_action (DzlShortcutTheme *self, + const DzlShortcutChord *chord) +{ + DzlShortcutThemePrivate *priv = dzl_shortcut_theme_get_instance_private (self); + + g_return_val_if_fail (DZL_IS_SHORTCUT_THEME (self), NULL); + g_return_val_if_fail (chord != NULL, NULL); + + if (priv->actions_table != NULL) + { + const gchar *action = NULL; + DzlShortcutMatch match; + + match = dzl_shortcut_chord_table_lookup (priv->actions_table, chord, (gpointer *)&action); + + if (match == DZL_SHORTCUT_MATCH_EQUAL) + return action; + } + + return NULL; +} + void dzl_shortcut_theme_set_chord_for_action (DzlShortcutTheme *self, const gchar *detailed_action_name, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/statemachine/dzl-state-machine-buildable.c new/libdazzle-3.26.2/src/statemachine/dzl-state-machine-buildable.c --- old/libdazzle-3.26.1/src/statemachine/dzl-state-machine-buildable.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/statemachine/dzl-state-machine-buildable.c 2018-01-11 02:10:36.000000000 +0100 @@ -634,7 +634,7 @@ StatesParserData *parser_data; parser_data = g_slice_new0 (StatesParserData); - parser_data->self = g_object_ref (buildable); + parser_data->self = g_object_ref (DZL_STATE_MACHINE (buildable)); parser_data->builder = g_object_ref (builder); parser_data->stack = g_queue_new (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/suggestions/dzl-suggestion-popover.c new/libdazzle-3.26.2/src/suggestions/dzl-suggestion-popover.c --- old/libdazzle-3.26.1/src/suggestions/dzl-suggestion-popover.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/suggestions/dzl-suggestion-popover.c 2018-01-11 02:10:36.000000000 +0100 @@ -221,8 +221,12 @@ g_return_if_fail (DZL_IS_SUGGESTION_POPOVER (self)); if (self->transient_for != NULL) - gtk_window_group_remove_window (gtk_window_get_group (self->transient_for), - GTK_WINDOW (self)); + { + GtkWindowGroup *group = gtk_window_get_group (self->transient_for); + + if (group != NULL) + gtk_window_group_remove_window (group, GTK_WINDOW (self)); + } g_signal_handler_disconnect (self->transient_for, self->delete_event_handler); g_signal_handler_disconnect (self->transient_for, self->size_allocate_handler); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/theming/dzl-css-provider.c new/libdazzle-3.26.2/src/theming/dzl-css-provider.c --- old/libdazzle-3.26.1/src/theming/dzl-css-provider.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/theming/dzl-css-provider.c 2018-01-11 02:10:36.000000000 +0100 @@ -282,8 +282,18 @@ switch (prop_id) { case PROP_BASE_PATH: - self->base_path = g_value_dup_string (value); - break; + { + const gchar *str = g_value_get_string (value); + gsize len = str ? strlen (str) : 0; + + /* Ignore trailing slash to simplify building paths */ + if (str && len && str[len-1] == '/') + self->base_path = g_strndup (str, len - 1); + else + self->base_path = g_strdup (str); + + break; + } default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/theming/dzl-theme-manager.c new/libdazzle-3.26.2/src/theming/dzl-theme-manager.c --- old/libdazzle-3.26.1/src/theming/dzl-theme-manager.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/theming/dzl-theme-manager.c 2018-01-11 02:10:36.000000000 +0100 @@ -108,7 +108,7 @@ * current application theme, using @resource_path/css as the base directory * to locate theming files. */ - css_dir = g_build_filename (resource_path, "themes", NULL); + css_dir = g_build_path ("/", resource_path, "themes/", NULL); g_debug ("Including CSS overrides from %s", css_dir); provider = dzl_css_provider_new (css_dir); g_hash_table_insert (self->providers_by_path, g_strdup (resource_path), g_object_ref (provider)); @@ -120,7 +120,7 @@ * Add the icons sub-directory so that Gtk can locate the themed * icons (svg, png, etc). */ - icons_dir = g_build_filename (real_path, "icons", NULL); + icons_dir = g_build_path ("/", real_path, "icons/", NULL); g_debug ("Loading icon resources from %s", icons_dir); if (!g_str_equal (real_path, resource_path)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/tree/dzl-tree.c new/libdazzle-3.26.2/src/tree/dzl-tree.c --- old/libdazzle-3.26.1/src/tree/dzl-tree.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/tree/dzl-tree.c 2018-01-11 02:10:36.000000000 +0100 @@ -437,6 +437,8 @@ use_markup ? "markup" : "text", text, "foreground-rgba", rgba, NULL); + + g_object_unref (node); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/util/dzl-gdk.c new/libdazzle-3.26.2/src/util/dzl-gdk.c --- old/libdazzle-3.26.1/src/util/dzl-gdk.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/util/dzl-gdk.c 2018-01-11 02:10:36.000000000 +0100 @@ -32,6 +32,7 @@ gunichar ch) { GdkDisplay *display; + GdkKeymap *keymap; GdkDevice *device; GdkSeat *seat; GdkEvent *ev; @@ -74,7 +75,9 @@ break; } - gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + display = gdk_window_get_display (window); + keymap = gdk_keymap_get_for_display (display); + gdk_keymap_get_entries_for_keyval (keymap, ev->key.keyval, &keys, &n_keys); @@ -88,7 +91,6 @@ g_free (keys); } - display = gdk_window_get_display (ev->any.window); seat = gdk_display_get_default_seat (display); device = gdk_seat_get_keyboard (seat); gdk_event_set_device (ev, device); @@ -107,6 +109,7 @@ { GdkDisplay *display; GdkDevice *device; + GdkKeymap *keymap; GdkEvent *ev; GdkSeat *seat; GdkKeymapKey *keys = NULL; @@ -132,7 +135,9 @@ ev->key.string = g_strdup (str); ev->key.length = strlen (str); - gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + display = gdk_window_get_display (window); + keymap = gdk_keymap_get_for_display (display); + gdk_keymap_get_entries_for_keyval (keymap, ev->key.keyval, &keys, &n_keys); @@ -146,7 +151,6 @@ g_free (keys); } - display = gdk_window_get_display (ev->any.window); seat = gdk_display_get_default_seat (display); device = gdk_seat_get_keyboard (seat); gdk_event_set_device (ev, device); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/util/dzl-gtk.c new/libdazzle-3.26.2/src/util/dzl-gtk.c --- old/libdazzle-3.26.1/src/util/dzl-gtk.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/util/dzl-gtk.c 2018-01-11 02:10:36.000000000 +0100 @@ -217,6 +217,16 @@ } } +/** + * dzl_gtk_widget_find_child_typed: + * + * Tries to locate a widget in a hierarchy given it's #GType. + * + * There is not an efficient implementation of this method, so use it + * only when the hierarchy of widgets is small. + * + * Returns: (transfer none) (type Gtk.Widget) (nullable): A widget or %NULL + */ gpointer dzl_gtk_widget_find_child_typed (GtkWidget *widget, GType child_type) @@ -398,7 +408,7 @@ const gchar *mux_key) { const gchar * const *old_prefixes = NULL; - const gchar **prefixes = NULL; + g_autofree const gchar **prefixes = NULL; g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (!from_widget || GTK_IS_WIDGET (from_widget)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/widgets/dzl-list-box.c new/libdazzle-3.26.2/src/widgets/dzl-list-box.c --- old/libdazzle-3.26.1/src/widgets/dzl-list-box.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/widgets/dzl-list-box.c 2018-01-11 02:10:36.000000000 +0100 @@ -77,7 +77,7 @@ if (priv->trashed_rows.length < priv->recycle_max) { - g_autoptr(GtkWidget) held = g_object_ref (row); + g_autoptr(GtkWidget) held = g_object_ref (GTK_WIDGET (row)); gtk_list_box_unselect_row (GTK_LIST_BOX (self), GTK_LIST_BOX_ROW (row)); gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (row)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/src/widgets/dzl-progress-menu-button.c new/libdazzle-3.26.2/src/widgets/dzl-progress-menu-button.c --- old/libdazzle-3.26.1/src/widgets/dzl-progress-menu-button.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/src/widgets/dzl-progress-menu-button.c 2018-01-11 02:10:36.000000000 +0100 @@ -116,10 +116,14 @@ begin_theatrics_from_main (gpointer user_data) { DzlProgressMenuButton *self = user_data; + GtkAllocation rect; g_assert (DZL_IS_PROGRESS_MENU_BUTTON (self)); - dzl_progress_menu_button_begin_theatrics (self); + /* Ignore if still ont allocated */ + gtk_widget_get_allocation (GTK_WIDGET (self), &rect); + if (rect.x != -1 && rect.y != -1) + dzl_progress_menu_button_begin_theatrics (self); return G_SOURCE_REMOVE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdazzle-3.26.1/tests/test-fuzzy-index.c new/libdazzle-3.26.2/tests/test-fuzzy-index.c --- old/libdazzle-3.26.1/tests/test-fuzzy-index.c 2017-10-03 23:03:19.000000000 +0200 +++ new/libdazzle-3.26.2/tests/test-fuzzy-index.c 2018-01-11 02:10:36.000000000 +0100 @@ -117,6 +117,7 @@ g_assert (r); g_object_unref (file); + g_main_loop_unref (main_loop); } static void