openuri portal: Introduce flags

This commit is contained in:
Matthias Clasen
2023-11-22 17:25:03 -05:00
parent 9b25257cbf
commit 7f53b3d3f4
3 changed files with 25 additions and 9 deletions

View File

@@ -433,7 +433,11 @@ gtk_file_launcher_launch (GtkFileLauncher *self,
#ifndef G_OS_WIN32
if (gtk_openuri_portal_is_available ())
{
gtk_openuri_portal_open_async (self->file, FALSE, self->always_ask, parent, cancellable, open_done, task);
GtkOpenuriFlags flags = 0;
if (self->always_ask)
flags |= GTK_OPENURI_FLAGS_ASK;
gtk_openuri_portal_open_async (self->file, FALSE, flags, parent, cancellable, open_done, task);
}
else
#endif
@@ -527,7 +531,9 @@ gtk_file_launcher_open_containing_folder (GtkFileLauncher *self,
#ifndef G_OS_WIN32
if (gtk_openuri_portal_is_available ())
{
gtk_openuri_portal_open_async (self->file, TRUE, FALSE, parent, cancellable, open_done, task);
GtkOpenuriFlags flags = 0;
gtk_openuri_portal_open_async (self->file, TRUE, flags, parent, cancellable, open_done, task);
}
else
#endif

View File

@@ -112,7 +112,7 @@ typedef struct {
GFile *file;
char *uri;
gboolean open_folder;
gboolean always_ask;
GtkOpenuriFlags flags;
GDBusConnection *connection;
GCancellable *cancellable;
GTask *task;
@@ -276,7 +276,6 @@ open_uri (OpenUriData *data,
{
GFile *file = data->file;
gboolean open_folder = data->open_folder;
gboolean always_ask = data->always_ask;
GTask *task;
GVariant *opts = NULL;
int i;
@@ -321,8 +320,13 @@ open_uri (OpenUriData *data,
if (activation_token)
g_variant_builder_add (&opt_builder, "{sv}", "activation_token", g_variant_new_string (activation_token));
if (always_ask && !open_folder)
g_variant_builder_add (&opt_builder, "{sv}", "ask", g_variant_new_boolean (always_ask));
if (!open_folder)
{
if (data->flags & GTK_OPENURI_FLAGS_ASK)
g_variant_builder_add (&opt_builder, "{sv}", "ask", g_variant_new_boolean (TRUE));
if (data->flags & GTK_OPENURI_FLAGS_WRITABLE)
g_variant_builder_add (&opt_builder, "{sv}", "writable", g_variant_new_boolean (TRUE));
}
opts = g_variant_builder_end (&opt_builder);
@@ -458,7 +462,7 @@ window_handle_exported (GtkWindow *window,
void
gtk_openuri_portal_open_async (GFile *file,
gboolean open_folder,
gboolean always_ask,
GtkOpenuriFlags flags,
GtkWindow *parent,
GCancellable *cancellable,
GAsyncReadyCallback callback,
@@ -478,7 +482,7 @@ gtk_openuri_portal_open_async (GFile *file,
data->parent = parent ? g_object_ref (parent) : NULL;
data->file = g_object_ref (file);
data->open_folder = open_folder;
data->always_ask = always_ask;
data->flags = flags;
data->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
data->task = g_task_new (parent, cancellable, callback, user_data);
g_task_set_check_cancellable (data->task, FALSE);

View File

@@ -28,9 +28,15 @@ G_BEGIN_DECLS
gboolean gtk_openuri_portal_is_available (void);
typedef enum
{
GTK_OPENURI_FLAGS_ASK = 1 << 0,
GTK_OPENURI_FLAGS_WRITABLE = 1 << 1,
} GtkOpenuriFlags;
void gtk_openuri_portal_open_async (GFile *file,
gboolean open_folder,
gboolean always_ask,
GtkOpenuriFlags flags,
GtkWindow *window,
GCancellable *cancellable,
GAsyncReadyCallback callback,