[gnome-panel/wip/muktupavels/lock-screen-applet: 4/5] menu: create lock-screen applet from drag
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/muktupavels/lock-screen-applet: 4/5] menu: create lock-screen applet from drag
- Date: Thu, 16 Apr 2020 16:13:18 +0000 (UTC)
commit 376677b8af257bc64f5338e2bbd39b2d59e1ae79
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Thu Apr 16 18:11:21 2020 +0300
menu: create lock-screen applet from drag
modules/menu/gp-lock-logout.c | 37 +++++++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
---
diff --git a/modules/menu/gp-lock-logout.c b/modules/menu/gp-lock-logout.c
index f1624c026..f73c67b73 100644
--- a/modules/menu/gp-lock-logout.c
+++ b/modules/menu/gp-lock-logout.c
@@ -730,6 +730,34 @@ create_menu_item (GpLockLogout *lock_logout,
return item;
}
+static void
+setup_drag_source (GpLockLogout *self,
+ GtkWidget *item,
+ const char *icon_name,
+ const char *iid)
+{
+ static const GtkTargetEntry drag_targets[] =
+ {
+ { (gchar *) "application/x-panel-applet-iid", 0, 0 }
+ };
+
+ if (self->locked_down)
+ return;
+
+ gtk_drag_source_set (item, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
+ drag_targets, G_N_ELEMENTS (drag_targets),
+ GDK_ACTION_COPY);
+
+ if (icon_name != NULL)
+ gtk_drag_source_set_icon_name (item, icon_name);
+
+ g_signal_connect_data (item, "drag-data-get",
+ G_CALLBACK (drag_data_get_cb),
+ g_strdup (iid),
+ (GClosureNotify) free_drag_id,
+ 0);
+}
+
static void
gp_lock_logout_constructed (GObject *object)
{
@@ -1000,12 +1028,17 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
{
label = _("Lock Screen");
tooltip = _("Protect your computer from unauthorized use");
- drag_id = "ACTION:lock:NEW";
+ drag_id = "org.gnome.gnome-panel.action-button::lock-screen";
lock_screen = create_menu_item (lock_logout,
"system-lock-screen",
label, tooltip,
- drag_id);
+ NULL);
+
+ setup_drag_source (lock_logout,
+ lock_screen,
+ "system-lock-screen",
+ drag_id);
g_signal_connect (lock_screen, "activate",
G_CALLBACK (lock_screen_activate_cb),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]