diff options
-rw-r--r-- | gtk/gtkapplication-dbus.c | 20 | ||||
-rw-r--r-- | gtk/gtkcolorpickerportal.c | 14 | ||||
-rw-r--r-- | gtk/gtkfilechoosernativeportal.c | 22 | ||||
-rw-r--r-- | gtk/gtkfontchooserwidget.c | 9 | ||||
-rw-r--r-- | gtk/gtkprintoperation-portal.c | 24 | ||||
-rw-r--r-- | gtk/gtkprivate.h | 8 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 1 | ||||
-rw-r--r-- | gtk/updateiconcache.c | 9 |
8 files changed, 64 insertions, 43 deletions
diff --git a/gtk/gtkapplication-dbus.c b/gtk/gtkapplication-dbus.c index 561848eb0c..14f7bcc49c 100644 --- a/gtk/gtkapplication-dbus.c +++ b/gtk/gtkapplication-dbus.c @@ -24,9 +24,13 @@ #include "gtkapplicationprivate.h" #include "gtksettings.h" +#include "gtkprivate.h" G_DEFINE_TYPE (GtkApplicationImplDBus, gtk_application_impl_dbus, GTK_TYPE_APPLICATION_IMPL) +#define DBUS_BUS_NAME "org.freedesktop.DBus" +#define DBUS_OBJECT_PATH "/org/freedesktop/DBus" +#define DBUS_BUS_INTERFACE "org.freedesktop.DBus" #define GNOME_DBUS_NAME "org.gnome.SessionManager" #define GNOME_DBUS_OBJECT_PATH "/org/gnome/SessionManager" #define GNOME_DBUS_INTERFACE "org.gnome.SessionManager" @@ -304,9 +308,9 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl, if (id && id[0]) { res = g_dbus_connection_call_sync (dbus->session, - "org.freedesktop.DBus", - "/org/freedesktop/DBus", - "org.freedesktop.DBus", + DBUS_BUS_NAME, + DBUS_OBJECT_PATH, + DBUS_BUS_INTERFACE, "GetId", NULL, NULL, @@ -340,9 +344,9 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl, { dbus->inhibit_proxy = gtk_application_get_proxy_if_service_present (dbus->session, G_DBUS_PROXY_FLAGS_NONE, - "org.freedesktop.portal.Desktop", - "/org/freedesktop/portal/desktop", - "org.freedesktop.portal.Inhibit", + PORTAL_BUS_NAME, + PORTAL_OBJECT_PATH, + PORTAL_INHIBIT_INTERFACE, &error); if (error) { @@ -608,9 +612,9 @@ gtk_application_impl_dbus_uninhibit (GtkApplicationImpl *impl, if (handle->cookie == cookie) { g_dbus_connection_call (dbus->session, - "org.freedesktop.portal.Desktop", + PORTAL_BUS_NAME, handle->handle, - "org.freedesktop.portal.Request", + PORTAL_REQUEST_INTERFACE, "Close", g_variant_new ("()"), G_VARIANT_TYPE_UNIT, diff --git a/gtk/gtkcolorpickerportal.c b/gtk/gtkcolorpickerportal.c index da567ae0b9..90a7b2dbc7 100644 --- a/gtk/gtkcolorpickerportal.c +++ b/gtk/gtkcolorpickerportal.c @@ -59,9 +59,9 @@ gtk_color_picker_portal_initable_init (GInitable *initable, picker->portal_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, - "org.freedesktop.portal.Desktop", - "/org/freedesktop/portal/desktop", - "org.freedesktop.portal.Screenshot", + PORTAL_BUS_NAME, + PORTAL_OBJECT_PATH, + PORTAL_SCREENSHOT_INTERFACE, NULL, error); @@ -74,7 +74,7 @@ gtk_color_picker_portal_initable_init (GInitable *initable, owner = g_dbus_proxy_get_name_owner (picker->portal_proxy); if (owner == NULL) { - g_debug ("org.freedesktop.portal.Screenshot not provided"); + g_debug ("%s not provided", PORTAL_SCREENSHOT_INTERFACE); g_clear_object (&picker->portal_proxy); return FALSE; } @@ -197,10 +197,10 @@ gtk_color_picker_portal_pick (GtkColorPicker *cp, if (sender[i] == '.') sender[i] = '_'; - handle = g_strdup_printf ("/org/freedesktop/portal/desktop/request/%s/%s", sender, token); + handle = g_strconcat (PORTAL_OBJECT_PATH "/request/", sender, "/", token, NULL); picker->portal_signal_id = g_dbus_connection_signal_subscribe (connection, - "org.freedesktop.portal.Desktop", - "org.freedesktop.portal.Request", + PORTAL_BUS_NAME, + PORTAL_REQUEST_INTERFACE, "Response", handle, NULL, diff --git a/gtk/gtkfilechoosernativeportal.c b/gtk/gtkfilechoosernativeportal.c index f6d7c4283c..aaaa13a8eb 100644 --- a/gtk/gtkfilechoosernativeportal.c +++ b/gtk/gtkfilechoosernativeportal.c @@ -152,9 +152,9 @@ send_close (FilechooserPortalData *data) GDBusMessage *message; GError *error = NULL; - message = g_dbus_message_new_method_call ("org.freedesktop.portal.Desktop", - "/org/freedesktop/portal/desktop", - "org.freedesktop.portal.FileChooser", + message = g_dbus_message_new_method_call (PORTAL_BUS_NAME, + PORTAL_OBJECT_PATH, + PORTAL_FILECHOOSER_INTERFACE, "Close"); g_dbus_message_set_body (message, g_variant_new ("(o)", data->portal_handle)); @@ -216,8 +216,8 @@ open_file_msg_cb (GObject *source_object, data->portal_response_signal_id = g_dbus_connection_signal_subscribe (data->connection, - "org.freedesktop.portal.Desktop", - "org.freedesktop.portal.Request", + PORTAL_BUS_NAME, + PORTAL_REQUEST_INTERFACE, "Response", data->portal_handle, NULL, @@ -299,9 +299,9 @@ show_portal_file_chooser (GtkFileChooserNative *self, char *sender; int i; - message = g_dbus_message_new_method_call ("org.freedesktop.portal.Desktop", - "/org/freedesktop/portal/desktop", - "org.freedesktop.portal.FileChooser", + message = g_dbus_message_new_method_call (PORTAL_BUS_NAME, + PORTAL_OBJECT_PATH, + PORTAL_FILECHOOSER_INTERFACE, data->method_name); token = g_strdup_printf ("gtk%d", g_random_int_range (0, G_MAXINT)); @@ -310,13 +310,13 @@ show_portal_file_chooser (GtkFileChooserNative *self, if (sender[i] == '.') sender[i] = '_'; - data->portal_handle = g_strdup_printf ("/org/fredesktop/portal/desktop/request/%s/%s", sender, token); + data->portal_handle = g_strconcat (PORTAL_OBJECT_PATH "/request/", sender, "/", token, NULL); g_free (sender); data->portal_response_signal_id = g_dbus_connection_signal_subscribe (data->connection, - "org.freedesktop.portal.Desktop", - "org.freedesktop.portal.Request", + PORTAL_BUS_NAME, + PORTAL_REQUEST_INTERFACE, "Response", data->portal_handle, NULL, diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c index 442bc81540..1b1be3d9a2 100644 --- a/gtk/gtkfontchooserwidget.c +++ b/gtk/gtkfontchooserwidget.c @@ -773,8 +773,6 @@ change_tweak (GSimpleAction *action, g_simple_action_set_state (action, state); } -#if defined(HAVE_HARFBUZZ) && defined(HAVE_PANGOFT) - typedef struct { guint32 tag; GtkAdjustment *adjustment; @@ -821,8 +819,6 @@ axis_free (gpointer v) g_free (a); } -#endif - static void gtk_font_chooser_widget_init (GtkFontChooserWidget *fontchooser) { @@ -835,9 +831,7 @@ gtk_font_chooser_widget_init (GtkFontChooserWidget *fontchooser) gtk_widget_init_template (GTK_WIDGET (fontchooser)); -#if defined(HAVE_HARFBUZZ) && defined(HAVE_PANGOFT) priv->axes = g_hash_table_new_full (axis_hash, axis_equal, NULL, axis_free); -#endif /* Default preview string */ priv->preview_text = g_strdup (pango_language_get_sample_string (NULL)); @@ -1189,8 +1183,7 @@ gtk_font_chooser_widget_finalize (GObject *object) g_list_free_full (priv->feature_items, g_free); - if (priv->axes) - g_hash_table_unref (priv->axes); + g_hash_table_unref (priv->axes); g_free (priv->font_features); diff --git a/gtk/gtkprintoperation-portal.c b/gtk/gtkprintoperation-portal.c index 2081c4a7ee..ded550262b 100644 --- a/gtk/gtkprintoperation-portal.c +++ b/gtk/gtkprintoperation-portal.c @@ -37,6 +37,7 @@ #include "gtkshow.h" #include "gtkintl.h" #include "gtkwindowprivate.h" +#include "gtkprivate.h" typedef struct { @@ -61,6 +62,8 @@ portal_data_free (gpointer data) { PortalData *portal = data; + if (portal->parent) + gtk_window_unexport_handle (portal->parent); g_object_unref (portal->op); g_object_unref (portal->proxy); if (portal->loop) @@ -377,7 +380,7 @@ prepare_print_response (GDBusConnection *connection, { PortalData *portal = data; guint32 response; - GVariant *options; + GVariant *options = NULL; if (portal->response_signal_id != 0) { @@ -426,6 +429,9 @@ prepare_print_response (GDBusConnection *connection, else portal->result = GTK_PRINT_OPERATION_RESULT_CANCEL; + if (options) + g_variant_unref (options); + if (portal->loop) g_main_loop_quit (portal->loop); } @@ -461,8 +467,8 @@ prepare_print_called (GObject *source, portal->response_signal_id); portal->response_signal_id = g_dbus_connection_signal_subscribe (g_dbus_proxy_get_connection (G_DBUS_PROXY (portal->proxy)), - "org.freedesktop.portal.Desktop", - "org.freedesktop.portal.Request", + PORTAL_BUS_NAME, + PORTAL_REQUEST_INTERFACE, "Response", handle, NULL, @@ -491,9 +497,9 @@ create_portal_data (GtkPrintOperation *op, proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, - "org.freedesktop.portal.Desktop", - "/org/freedesktop/portal/desktop", - "org.freedesktop.portal.Print", + PORTAL_BUS_NAME, + PORTAL_OBJECT_PATH, + PORTAL_PRINT_INTERFACE, NULL, &error); @@ -564,13 +570,13 @@ call_prepare_print (GtkPrintOperation *op, if (sender[i] == '.') sender[i] = '_'; - portal->prepare_print_handle = g_strdup_printf ("/org/fredesktop/portal/desktop/request/%s/%s", sender, token); + portal->prepare_print_handle = g_strconcat (PORTAL_OBJECT_PATH "/request/", sender, "/", token, NULL); g_free (sender); portal->response_signal_id = g_dbus_connection_signal_subscribe (g_dbus_proxy_get_connection (G_DBUS_PROXY (portal->proxy)), - "org.freedesktop.portal.Desktop", - "org.freedesktop.portal.Request", + PORTAL_BUS_NAME, + PORTAL_REQUEST_INTERFACE, "Response", portal->prepare_print_handle, NULL, diff --git a/gtk/gtkprivate.h b/gtk/gtkprivate.h index 3ecb4c36b7..2675889953 100644 --- a/gtk/gtkprivate.h +++ b/gtk/gtkprivate.h @@ -111,6 +111,14 @@ void _gtk_set_slowdown (gdouble slowdown_factor); gboolean gtk_should_use_portal (void); +#define PORTAL_BUS_NAME "org.freedesktop.portal.Desktop" +#define PORTAL_OBJECT_PATH "/org/freedesktop/portal/desktop" +#define PORTAL_REQUEST_INTERFACE "org.freedesktop.portal.Request" +#define PORTAL_FILECHOOSER_INTERFACE "org.freedesktop.portal.FileChooser" +#define PORTAL_PRINT_INTERFACE "org.freedesktop.portal.Print" +#define PORTAL_SCREENSHOT_INTERFACE "org.freedesktop.portal.Screenshot" +#define PORTAL_INHIBIT_INTERFACE "org.freedesktop.portal.Inhibit" + #ifdef G_OS_WIN32 void _gtk_load_dll_with_libgtk3_manifest (const char *dllname); #endif diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 500cef8e53..f65a7b98e8 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -10985,6 +10985,7 @@ gtk_window_export_handle (GtkWindow *window, handle_str = g_strdup_printf ("x11:%x", xid); callback (window, handle_str, user_data); + g_free (handle_str); return TRUE; } diff --git a/gtk/updateiconcache.c b/gtk/updateiconcache.c index cc681c16be..507c790b41 100644 --- a/gtk/updateiconcache.c +++ b/gtk/updateiconcache.c @@ -595,6 +595,7 @@ scan_directory (const gchar *base_path, { GHashTable *dir_hash; GDir *dir; + GList *list = NULL, *iterator = NULL; const gchar *name; gchar *dir_path; gboolean dir_added = FALSE; @@ -612,6 +613,13 @@ scan_directory (const gchar *base_path, while ((name = g_dir_read_name (dir))) { + list = g_list_prepend (list, g_strdup (name)); + } + list = g_list_sort (list, (GCompareFunc) strcmp); + for (iterator = list; iterator; iterator = iterator->next) + { + name = iterator->data; + gchar *path; gboolean retval; int flags = 0; @@ -690,6 +698,7 @@ scan_directory (const gchar *base_path, g_free (path); } + g_list_free_full (list, g_free); g_dir_close (dir); /* Move dir into the big file hash */ |