diff options
Diffstat (limited to 'src/local.c')
-rw-r--r-- | src/local.c | 26 |
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; } |