diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c index 0c7c83b222..0cef40d130 100644 --- a/legacy/elementary/src/lib/elm_win.c +++ b/legacy/elementary/src/lib/elm_win.c @@ -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);