raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c233274529cdd5e343acdfae840dbab8902218c1

commit c233274529cdd5e343acdfae840dbab8902218c1
Author: Vincent Torri <[email protected]>
Date:   Thu Jun 15 15:58:05 2017 +0900

    elm+evas - windows - fix alt+f4 to work without losing alt key
    
    fixes  T5581
---
 src/lib/ecore_win32/ecore_win32.c |  4 ++--
 src/lib/elementary/efl_ui_win.c   | 23 +++++++++++++++++++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore_win32/ecore_win32.c 
b/src/lib/ecore_win32/ecore_win32.c
index 7b170c954d..bbcb22d177 100644
--- a/src/lib/ecore_win32/ecore_win32.c
+++ b/src/lib/ecore_win32/ecore_win32.c
@@ -75,14 +75,14 @@ _ecore_win32_window_procedure(HWND   window,
      {
        /* Keyboard input notifications */
      case WM_KEYDOWN:
-     /*case WM_SYSKEYDOWN:*/
+     case WM_SYSKEYDOWN:
        INF("key down message");
        _ecore_win32_event_handle_key_press(data);
        return 0;
      /* case WM_CHAR: */
      /* case WM_SYSCHAR: */
      case WM_KEYUP:
-     /*case WM_SYSKEYUP:*/
+     case WM_SYSKEYUP:
        INF("key up message");
        _ecore_win32_event_handle_key_release(data);
        return 0;
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index a47d5f3e5f..baa84bac47 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -97,6 +97,7 @@ struct _Efl_Ui_Win_Data
    struct
    {
       Ecore_Win32_Window *win;
+      Ecore_Event_Handler *key_down_handler;
    } win32;
 #endif
 
@@ -2803,6 +2804,9 @@ _efl_ui_win_efl_canvas_group_group_del(Eo *obj, 
Efl_Ui_Win_Data *sd)
    if (sd->pointer.ee) ecore_evas_free(sd->pointer.ee);
    sd->pointer.surf = NULL;
 #endif
+#ifdef HAVE_ELEMENTARY_WIN32
+   ecore_event_handler_del(sd->win32.key_down_handler);
+#endif
 
    if (sd->type == ELM_WIN_INLINED_IMAGE)
      {
@@ -3715,6 +3719,23 @@ _elm_win_property_change(void *data,
 }
 #endif
 
+#ifdef HAVE_ELEMENTARY_WIN32
+static Eina_Bool
+_elm_win_key_down(void *data,
+                  int type EINA_UNUSED,
+                  void *event)
+{
+   ELM_WIN_DATA_GET(data, sd);
+   Ecore_Event_Key *e = event;
+   if ((e->modifiers & ECORE_EVENT_MODIFIER_ALT) &&
+       (strcmp(e->key, "F4") == 0))
+     _elm_win_delete_request(sd->ee);
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+#endif
+
 static void
 _elm_win_focus_highlight_hide(void *data EINA_UNUSED,
                               Evas_Object *obj,
@@ -5012,6 +5033,8 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, 
const char *name, Elm_W
    _elm_win_cocoawindow_get(sd);
 #endif
 #ifdef HAVE_ELEMENTARY_WIN32
+   sd->win32.key_down_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
+                                                        _elm_win_key_down, 
obj);
    _internal_elm_win_win32window_get(sd);
 #endif
 

-- 


Reply via email to