summaryrefslogtreecommitdiff
path: root/src/local.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/local.c')
-rw-r--r--src/local.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/local.c b/src/local.c
index 36f1bbe..c3b24f0 100644
--- a/src/local.c
+++ b/src/local.c
@@ -58,6 +58,29 @@ local_set_sak(struct local_message *msg)
}
static void
+local_switch(struct local_message *msg)
+{
+ struct buffer *b;
+ struct display *d;
+
+ switch (msg->param1) {
+ case -1:
+ d = server_display;
+ break;
+ case -2:
+ d = desktop_display;
+ break;
+ default:
+ b = buffer_lookup(msg->param1, 0);
+ d = b ? b->bg_view->display : server_display;
+ break;
+ }
+
+ display_switch(d);
+ display_update_seclabel(d);
+}
+
+static void
local_process(void *closure)
{
struct local_message msg;
@@ -79,6 +102,9 @@ local_process(void *closure)
case LINPICKER_LOCAL_SET_SAK:
local_set_sak(&msg);
break;
+ case LINPICKER_LOCAL_SWITCH:
+ local_switch(&msg);
+ break;
default:
break;
}