From: Junseok, Kim Date: Wed, 13 Oct 2021 00:40:44 +0000 (+0900) Subject: e_client: added to show guide rect while interactive resize instead of real time... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fdrafts%2Ffor%2Ftizen;p=platform%2Fupstream%2Fenlightenment.git e_client: added to show guide rect while interactive resize instead of real time resize Change-Id: I74ea8df8f844cd68bf059979764a939cc7d78733 --- diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 0e82e2a545..c9c5641734 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -1741,7 +1741,48 @@ _e_client_resize_handle(E_Client *ec) (ec->resize_mode == E_POINTER_RESIZE_TR)) new_y += (h - new_h); +# if 0 // JUNSEOK evas_object_geometry_set(ec->frame, new_x, new_y, new_w, new_h); +# else + if (ec->manage_resize.is_started) + { + evas_object_geometry_set(ec->manage_resize.resize_guide, new_x, new_y, new_w, new_h); + + ec->manage_resize.x = new_x; + ec->manage_resize.y = new_y; + ec->manage_resize.w = new_w; + ec->manage_resize.h = new_h; + } + else + { + if (ec->manage_resize.resize_guide == NULL) + { + ELOGF("JUNSEOK", "create resize guide rect", ec); + Evas_Object *guide_obj = evas_object_rectangle_add(ec->frame); + ELOGF("JUNSEOK", "new resize guide : %p", ec, guide_obj); + + /* This object doesn't care about mouse event. And It's also + * to avoid events of mouse on the E_Client. */ + evas_object_pass_events_set(guide_obj, EINA_TRUE); + + evas_object_layer_set(guide_obj, evas_object_layer_get(ec->frame)); + evas_object_stack_above(guide_obj, ec->frame); + evas_object_color_set(guide_obj, 128, 128, 128, 100); + evas_object_geometry_set(guide_obj, new_x, new_y, new_w, new_h); + evas_object_name_set(guide_obj, "guide_rectangle"); + evas_object_show(guide_obj); + ELOGF("JUNSEOK", "guide rect show: %p", ec, guide_obj); + + ec->manage_resize.resize_guide = guide_obj; + ec->manage_resize.is_started = EINA_TRUE; + + ec->manage_resize.x = new_x; + ec->manage_resize.y = new_y; + ec->manage_resize.w = new_w; + ec->manage_resize.h = new_h; + } + } +# endif } static int @@ -1766,6 +1807,25 @@ _e_client_resize_end(E_Client *ec) ecresize = NULL; + ELOGF("JUNSEOK", "resize is end", ec); + if (ec->manage_resize.is_started) + { + ELOGF("JUNSEOK", "resize adjust to ec", ec); + evas_object_geometry_set(ec->frame, + ec->manage_resize.x, + ec->manage_resize.y, + ec->manage_resize.w, + ec->manage_resize.h); + if (ec->manage_resize.resize_guide) + { + evas_object_hide(ec->manage_resize.resize_guide); + ELOGF("JUNSEOK", "guide rect hide: %p", ec, ec->manage_resize.resize_guide); + evas_object_del(ec->manage_resize.resize_guide); + ec->manage_resize.resize_guide = NULL; + } + ec->manage_resize.is_started = EINA_FALSE; + } + return 1; } @@ -4455,6 +4515,9 @@ e_client_new(E_Pixmap *cp, int first_map, int internal) _e_client_hook_call(E_CLIENT_HOOK_NEW_CLIENT_POST, ec); #endif + ec->manage_resize.resize_guide = NULL; + ec->manage_resize.is_started = EINA_FALSE; + return ec; } diff --git a/src/bin/e_client.h b/src/bin/e_client.h index d5798c5c70..30137a7a38 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -1025,6 +1025,13 @@ struct E_Client } show_pending; E_Layer floating_saved_layer; + + struct + { + int x, y, w, h; + Evas_Object *resize_guide; + Eina_Bool is_started; + } manage_resize; }; #define e_client_focus_policy_click(ec) \ diff --git a/src/bin/e_comp_wl_shell.c b/src/bin/e_comp_wl_shell.c index 12bdb3ade6..b8eed75cbd 100644 --- a/src/bin/e_comp_wl_shell.c +++ b/src/bin/e_comp_wl_shell.c @@ -274,6 +274,8 @@ e_shell_e_client_interactive_move(E_Client *ec, TRACE_DS_BEGIN(SHELL:SURFACE MOVE REQUEST CB); + ELOGF("JUNSEOK", "INTERACTIVE_MOVE START!!", ec); + switch (e_comp_wl->ptr.button) { case BTN_LEFT: ev.button = 1; break; @@ -315,6 +317,8 @@ e_shell_e_client_interactive_resize(E_Client *ec, TRACE_DS_BEGIN(SHELL:SURFACE RESIZE REQUEST CB); + ELOGF("JUNSEOK", "INTERACTIVE_RESIZE START!!", ec); + e_comp_wl->resize.resource = resource; e_comp_wl->resize.edges = edges; e_comp_wl->ptr.grab_x = e_comp_wl->ptr.x - wl_fixed_from_int(ec->client.x);