summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/gtkapplication-dbus.c20
-rw-r--r--gtk/gtkcolorpickerportal.c14
-rw-r--r--gtk/gtkfilechoosernativeportal.c22
-rw-r--r--gtk/gtkfontchooserwidget.c9
-rw-r--r--gtk/gtkprintoperation-portal.c24
-rw-r--r--gtk/gtkprivate.h8
-rw-r--r--gtk/gtkwindow.c1
-rw-r--r--gtk/updateiconcache.c9
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 */