Fix mike's "move pointer" problem with elm apps inside wayland-only. upstream_elm_1.8
authorChris Michael <cp.michael@samsung.com>
Wed, 28 Aug 2013 13:24:49 +0000 (14:24 +0100)
committerChris Michael <cp.michael@samsung.com>
Wed, 28 Aug 2013 13:26:06 +0000 (14:26 +0100)
On a move start signal, set the mouse cursor to "move".
Add hook for "move stop" to unset cursor.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
src/lib/elm_win.c

index 0c7c83b22256b0432a5a03956a0a3a6e7a3d1573..0cef40d1308d4b7cd0212cd1f73303b072aceceb 100644 (file)
@@ -2136,11 +2136,21 @@ static void
 _elm_win_frame_cb_move_start(void *data,
                              Evas_Object *obj __UNUSED__,
                              const char *sig __UNUSED__,
-                             const char *source __UNUSED__)
+                             const char *source)
 {
    ELM_WIN_DATA_GET(data, sd);
 
    if (!sd) return;
+
+#ifdef HAVE_ELEMENTARY_WAYLAND
+   if (!strcmp(source, "elm"))
+     ecore_wl_window_cursor_from_name_set(sd->wl.win, ELM_CURSOR_HAND1);
+   else
+     ecore_wl_window_cursor_default_restore(sd->wl.win);
+#else
+   (void)source;
+#endif
+
    /* FIXME: Change mouse pointer */
 
    /* NB: Wayland handles moving surfaces by itself so we cannot
@@ -2152,6 +2162,21 @@ _elm_win_frame_cb_move_start(void *data,
    ecore_evas_wayland_move(sd->ee, sd->screen.x, sd->screen.y);
 }
 
+static void
+_elm_win_frame_cb_move_stop(void *data,
+                            Evas_Object *obj __UNUSED__,
+                            const char *sig __UNUSED__,
+                            const char *source __UNUSED__)
+{
+   ELM_WIN_DATA_GET(data, sd);
+
+   if (!sd) return;
+
+#ifdef HAVE_ELEMENTARY_WAYLAND
+   ecore_wl_window_cursor_default_restore(sd->wl.win);
+#endif
+}
+
 #ifdef HAVE_ELEMENTARY_WAYLAND
 struct _resize_info
 {
@@ -2435,6 +2460,9 @@ _elm_win_frame_add(Elm_Win_Smart_Data *sd,
    edje_object_signal_callback_add
      (sd->frame_obj, "elm,action,move,start", "elm",
      _elm_win_frame_cb_move_start, obj);
+   edje_object_signal_callback_add
+     (sd->frame_obj, "elm,action,move,stop", "elm",
+     _elm_win_frame_cb_move_stop, obj);
    edje_object_signal_callback_add
      (sd->frame_obj, "elm,action,resize,show", "*",
      _elm_win_frame_cb_resize_show, obj);
@@ -2484,6 +2512,9 @@ _elm_win_frame_del(Elm_Win_Smart_Data *sd)
         edje_object_signal_callback_del
           (sd->frame_obj, "elm,action,move,start", "elm",
               _elm_win_frame_cb_move_start);
+        edje_object_signal_callback_del
+          (sd->frame_obj, "elm,action,move,stop", "elm",
+              _elm_win_frame_cb_move_stop);
         edje_object_signal_callback_del
           (sd->frame_obj, "elm,action,resize,show", "*",
               _elm_win_frame_cb_resize_show);