ecore_win32: fix the mouse out behavior.
authorChunEon Park <hermet@hermet.pe.kr>
Wed, 30 Sep 2015 11:31:30 +0000 (20:31 +0900)
committerChunEon Park <hermet@hermet.pe.kr>
Wed, 30 Sep 2015 11:31:30 +0000 (20:31 +0900)
Current win32 let the mouse out regardless of mouse down status.
This is not quitely same with the x system so widget behaviors were not properly working.
Make the widget behaviors about mouse-out same to x window system
to keep the same behaviors on all window system always.

@fix

src/modules/ecore_evas/engines/win32/ecore_evas_win32.c

index b460f16..6216da8 100644 (file)
@@ -215,9 +215,13 @@ _ecore_evas_win32_event_mouse_out(void *data EINA_UNUSED, int type EINA_UNUSED,
 /*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
    _ecore_evas_mouse_move_process(ee, e->x, e->y, e->timestamp);
 
-   evas_event_feed_mouse_out(ee->evas, e->timestamp, NULL);
-   if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
-   if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
+   if (ee->in)
+     {
+        if ((evas_event_down_count_get(ee->evas) > 0) return ECORE_CALLBACK_PASS_ON;
+        evas_event_feed_mouse_out(ee->evas, e->timestamp, NULL);
+        if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
+        if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
+     }
 
    return ECORE_CALLBACK_PASS_ON;
 }