fix: assign one active engine owner
This commit is contained in:
17
wayland.c
17
wayland.c
@@ -26,12 +26,15 @@ static int active;
|
||||
static int pending;
|
||||
static u32int imserial;
|
||||
static Channel *replyc;
|
||||
static uvlong owner;
|
||||
|
||||
static void
|
||||
sendkey(u32int ks, u32int mod, Keyres *res)
|
||||
{
|
||||
Keyreq kr;
|
||||
|
||||
kr.owner = owner;
|
||||
kr.op = Keypress;
|
||||
kr.ks = ks;
|
||||
kr.mod = mod;
|
||||
kr.want = 1;
|
||||
@@ -41,11 +44,17 @@ sendkey(u32int ks, u32int mod, Keyres *res)
|
||||
}
|
||||
|
||||
static void
|
||||
sendreset(void)
|
||||
sendrelease(void)
|
||||
{
|
||||
Keyreq kr;
|
||||
Keyres res;
|
||||
|
||||
sendkey(Kesc, 0, &res);
|
||||
memset(&kr, 0, sizeof kr);
|
||||
kr.owner = owner;
|
||||
kr.op = Keyrelease;
|
||||
kr.reply = replyc;
|
||||
chansend(keyc, &kr);
|
||||
chanrecv(replyc, &res);
|
||||
}
|
||||
|
||||
static u32int
|
||||
@@ -243,13 +252,15 @@ im_done(void *data, struct zwp_input_method_v2 *m)
|
||||
imserial++;
|
||||
if(pending && !active){
|
||||
active = 1;
|
||||
owner = ownernew();
|
||||
grab = zwp_input_method_v2_grab_keyboard(im);
|
||||
if(grab != nil)
|
||||
zwp_input_method_keyboard_grab_v2_add_listener(grab,
|
||||
&grab_listener, nil);
|
||||
}else if(!pending && active){
|
||||
active = 0;
|
||||
sendreset();
|
||||
sendrelease();
|
||||
owner = 0;
|
||||
if(grab != nil){
|
||||
zwp_input_method_keyboard_grab_v2_release(grab);
|
||||
grab = nil;
|
||||
|
||||
Reference in New Issue
Block a user