e-comp-wl: Update keyboard and modifier state AFTER we send them to clients
authorChris Michael <cp.michael@samsung.com>
Tue, 14 Jul 2015 18:18:21 +0000 (14:18 -0400)
committerChris Michael <cp.michael@samsung.com>
Tue, 14 Jul 2015 18:18:21 +0000 (14:18 -0400)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
src/bin/e_comp_wl.c

index 56881df..ac69028 100644 (file)
@@ -863,7 +863,7 @@ _e_comp_wl_cb_key_down(void *event)
      exit(0);
 #endif
 
-   end = (uint32_t *)cdata->kbd.keys.data + (cdata->kbd.keys.size / sizeof(*k));
+   end = (uint32_t *)cdata->kbd.keys.data + cdata->kbd.keys.size;
 
    for (k = cdata->kbd.keys.data; k < end; k++)
      {
@@ -879,9 +879,6 @@ _e_comp_wl_cb_key_down(void *event)
      }
    *k = keycode;
 
-   /* update modifier state */
-   e_comp_wl_input_keyboard_state_update(keycode, EINA_TRUE);
-
    if ((ec = e_client_focused_get()))
      {
         if (ec->comp_data->surface && (!e_client_action_get()) && (!e_comp->input_key_grabs))
@@ -904,7 +901,8 @@ _e_comp_wl_cb_key_down(void *event)
           }
      }
 
-   /* e_comp_wl_input_keyboard_modifiers_update(); */
+   /* update modifier state */
+   e_comp_wl_input_keyboard_state_update(keycode, EINA_TRUE);
 }
 
 static void
@@ -922,15 +920,12 @@ _e_comp_wl_cb_key_up(void *event)
    keycode = (ev->keycode - 8);
    if (!(cdata = e_comp->wl_comp_data)) return;
 
-   end = (uint32_t *)cdata->kbd.keys.data + (cdata->kbd.keys.size / sizeof(*k));
+   end = (uint32_t *)cdata->kbd.keys.data + cdata->kbd.keys.size;
    for (k = cdata->kbd.keys.data; k < end; k++)
      if (*k == keycode) *k = *--end;
 
    cdata->kbd.keys.size = (const char *)end - (const char *)cdata->kbd.keys.data;
 
-   /* update modifier state */
-   e_comp_wl_input_keyboard_state_update(keycode, EINA_FALSE);
-
    ec = e_client_focused_get();
    if ((ec) && (ec->comp_data->surface) && (!e_client_action_get()) && (!e_comp->input_key_grabs))
      {
@@ -952,7 +947,8 @@ _e_comp_wl_cb_key_up(void *event)
           }
      }
 
-   /* e_comp_wl_input_keyboard_modifiers_update(); */
+   /* update modifier state */
+   e_comp_wl_input_keyboard_state_update(keycode, EINA_FALSE);
 }
 
 static void