114 lines
3.7 KiB
Diff
114 lines
3.7 KiB
Diff
--- trunk/common/gvfsdaemonprotocol.h 2009/02/27 12:59:47 2257
|
|
+++ trunk/common/gvfsdaemonprotocol.h 2009/03/18 21:03:15 2342
|
|
@@ -73,6 +73,7 @@
|
|
#define G_VFS_DBUS_MOUNT_OPERATION_INTERFACE "org.gtk.vfs.MountOperation"
|
|
#define G_VFS_DBUS_MOUNT_OPERATION_OP_ASK_PASSWORD "askPassword"
|
|
#define G_VFS_DBUS_MOUNT_OPERATION_OP_ASK_QUESTION "askQuestion"
|
|
+#define G_VFS_DBUS_MOUNT_OPERATION_OP_ABORTED "aborted"
|
|
|
|
/* Implemented by the spawner of a process, the spawned process sends the
|
|
spawned message (with noreply) when it has spawned and gotten a dbus id */
|
|
--- trunk/common/gmountoperationdbus.c 2008/08/25 13:27:36 1907
|
|
+++ trunk/common/gmountoperationdbus.c 2009/03/18 21:03:15 2342
|
|
@@ -51,6 +51,8 @@
|
|
DBusMessage *message);
|
|
static void mount_op_ask_question (GMountOperationDBus *op_dbus,
|
|
DBusMessage *message);
|
|
+static void mount_op_aborted (GMountOperationDBus *op_dbus,
|
|
+ DBusMessage *message);
|
|
|
|
static void
|
|
g_mount_operation_dbus_free (GMountOperationDBus *op_dbus)
|
|
@@ -131,6 +133,10 @@
|
|
G_VFS_DBUS_MOUNT_OPERATION_INTERFACE,
|
|
G_VFS_DBUS_MOUNT_OPERATION_OP_ASK_QUESTION))
|
|
mount_op_ask_question (op_dbus, message);
|
|
+ else if (dbus_message_is_method_call (message,
|
|
+ G_VFS_DBUS_MOUNT_OPERATION_INTERFACE,
|
|
+ G_VFS_DBUS_MOUNT_OPERATION_OP_ABORTED))
|
|
+ mount_op_aborted (op_dbus, message);
|
|
else
|
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
|
|
|
@@ -322,3 +328,10 @@
|
|
|
|
dbus_free_string_array (choices);
|
|
}
|
|
+
|
|
+static void
|
|
+mount_op_aborted (GMountOperationDBus *op_dbus,
|
|
+ DBusMessage *message)
|
|
+{
|
|
+ g_signal_emit_by_name (op_dbus->op, "aborted");
|
|
+}
|
|
--- trunk/common/gmountsource.c 2008/09/23 19:16:06 2021
|
|
+++ trunk/common/gmountsource.c 2009/03/18 21:03:15 2342
|
|
@@ -433,8 +433,8 @@
|
|
handled = g_mount_source_ask_password_finish (source,
|
|
res,
|
|
&aborted,
|
|
- &username,
|
|
&password,
|
|
+ &username,
|
|
&domain,
|
|
NULL,
|
|
&password_save);
|
|
@@ -475,6 +475,7 @@
|
|
flags,
|
|
op_ask_password_reply,
|
|
g_object_ref (op));
|
|
+ g_signal_stop_emission_by_name (op, "ask_password");
|
|
return TRUE;
|
|
}
|
|
|
|
@@ -695,9 +696,41 @@
|
|
n_choices,
|
|
op_ask_question_reply,
|
|
g_object_ref (op));
|
|
+ g_signal_stop_emission_by_name (op, "ask_question");
|
|
return TRUE;
|
|
}
|
|
|
|
+static gboolean
|
|
+op_aborted (GMountOperation *op,
|
|
+ GMountSource *source)
|
|
+{
|
|
+ DBusMessage *message;
|
|
+ DBusConnection *connection;
|
|
+
|
|
+ /* If no dbus id specified, reply that we weren't handled */
|
|
+ if (source->dbus_id[0] == 0)
|
|
+ goto out;
|
|
+
|
|
+ connection = dbus_bus_get (DBUS_BUS_SESSION, NULL);
|
|
+ if (connection == NULL)
|
|
+ goto out;
|
|
+
|
|
+ message = dbus_message_new_method_call (source->dbus_id,
|
|
+ source->obj_path,
|
|
+ G_VFS_DBUS_MOUNT_OPERATION_INTERFACE,
|
|
+ G_VFS_DBUS_MOUNT_OPERATION_OP_ABORTED);
|
|
+
|
|
+ if (message)
|
|
+ {
|
|
+ dbus_connection_send (connection, message, NULL);
|
|
+ dbus_message_unref (message);
|
|
+ }
|
|
+
|
|
+ out:
|
|
+ return TRUE;
|
|
+}
|
|
+
|
|
+
|
|
GMountOperation *
|
|
g_mount_source_get_operation (GMountSource *mount_source)
|
|
{
|
|
@@ -711,6 +744,7 @@
|
|
|
|
g_signal_connect (op, "ask_password", (GCallback)op_ask_password, mount_source);
|
|
g_signal_connect (op, "ask_question", (GCallback)op_ask_question, mount_source);
|
|
+ g_signal_connect (op, "aborted", (GCallback)op_aborted, mount_source);
|
|
|
|
return op;
|
|
}
|