e_comp_wl: refactors handling state change callback 67/288967/1 accepted/tizen/unified/20230227.152734
authorDoyoun Kang <doyoun.kang@samsung.com>
Thu, 16 Feb 2023 01:35:09 +0000 (10:35 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 27 Feb 2023 05:19:51 +0000 (14:19 +0900)
We refactor code to handle each evas_object_smart_callback for changing state
(such as maximize/unmaximize, fullscreen, etc) separately.

Change-Id: I676e5a7b44dbf2f013fb6aebbd6690c00971bff3

src/bin/e_comp_wl.c

index 98cdcb20dd349e13756723bc2981d099700e2414..53418e3923d24236e43a2ac2c4f51604eef9d1d3 100644 (file)
@@ -1987,7 +1987,39 @@ _e_comp_wl_evas_cb_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event
 }
 
 static void
-_e_comp_wl_evas_cb_state_update(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_comp_wl_evas_cb_maximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+   E_Client *ec = data;
+
+   ec->comp_data->maximize_pre = 1;
+}
+
+static void
+_e_comp_wl_evas_cb_maximize_done(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+   E_Client *ec = data;
+   int w, h;
+
+   if (e_object_is_del(E_OBJECT(ec))) return;
+
+   if (ec->comp_data->shell.configure_send)
+     {
+        e_client_maximized_geometry_get(ec, NULL, NULL, &w, &h);
+        ec->comp_data->shell.configure_send(ec->comp_data->shell.surface, 0, w, h);
+     }
+   ec->comp_data->maximize_pre = 0;
+}
+
+static void
+_e_comp_wl_evas_cb_unmaximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+   E_Client *ec = data;
+
+   ec->comp_data->maximize_pre = 1;
+}
+
+static void
+_e_comp_wl_evas_cb_unmaximize_done(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
 {
    E_Client *ec = data;
 
@@ -1997,30 +2029,37 @@ _e_comp_wl_evas_cb_state_update(void *data, Evas_Object *obj EINA_UNUSED, void *
 
    if (ec->comp_data->shell.configure_send)
      _e_comp_wl_configure_send(ec, 0, 0);
+
    ec->comp_data->maximize_pre = 0;
 }
 
 static void
-_e_comp_wl_evas_cb_maximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_comp_wl_evas_cb_fullscreen(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
 {
    E_Client *ec = data;
 
-   ec->comp_data->maximize_pre = 1;
+   if (e_object_is_del(E_OBJECT(ec))) return;
+
+   /* check for wayland pixmap */
+
+   if (ec->comp_data->shell.configure_send)
+     _e_comp_wl_configure_send(ec, 0, 1);
+
+   ec->comp_data->maximize_pre = 0;
 }
 
 static void
-_e_comp_wl_evas_cb_maximize_done(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_comp_wl_evas_cb_unfullscreen(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
 {
    E_Client *ec = data;
-   int w, h;
 
    if (e_object_is_del(E_OBJECT(ec))) return;
 
+   /* check for wayland pixmap */
+
    if (ec->comp_data->shell.configure_send)
-     {
-        e_client_maximized_geometry_get(ec, NULL, NULL, &w, &h);
-        ec->comp_data->shell.configure_send(ec->comp_data->shell.surface, 0, w, h);
-     }
+     _e_comp_wl_configure_send(ec, 0, 0);
+
    ec->comp_data->maximize_pre = 0;
 }
 
@@ -2196,13 +2235,13 @@ _e_comp_wl_client_evas_init(E_Client *ec)
 
    if (!ec->override)
      {
-        evas_object_smart_callback_add(ec->frame, "client_resize",   _e_comp_wl_evas_cb_resize,       ec);
-        evas_object_smart_callback_add(ec->frame, "maximize_done",   _e_comp_wl_evas_cb_maximize_done,ec);
-        evas_object_smart_callback_add(ec->frame, "unmaximize_done", _e_comp_wl_evas_cb_state_update, ec);
-        evas_object_smart_callback_add(ec->frame, "maximize_pre",    _e_comp_wl_evas_cb_maximize_pre, ec);
-        evas_object_smart_callback_add(ec->frame, "unmaximize_pre",  _e_comp_wl_evas_cb_maximize_pre, ec);
-        evas_object_smart_callback_add(ec->frame, "fullscreen",      _e_comp_wl_evas_cb_state_update, ec);
-        evas_object_smart_callback_add(ec->frame, "unfullscreen",    _e_comp_wl_evas_cb_state_update, ec);
+        evas_object_smart_callback_add(ec->frame, "client_resize",   _e_comp_wl_evas_cb_resize,          ec);
+        evas_object_smart_callback_add(ec->frame, "maximize_pre",    _e_comp_wl_evas_cb_maximize_pre,    ec);
+        evas_object_smart_callback_add(ec->frame, "maximize_done",   _e_comp_wl_evas_cb_maximize_done,   ec);
+        evas_object_smart_callback_add(ec->frame, "unmaximize_pre",  _e_comp_wl_evas_cb_unmaximize_pre,  ec);
+        evas_object_smart_callback_add(ec->frame, "unmaximize_done", _e_comp_wl_evas_cb_unmaximize_done, ec);
+        evas_object_smart_callback_add(ec->frame, "fullscreen",      _e_comp_wl_evas_cb_fullscreen,      ec);
+        evas_object_smart_callback_add(ec->frame, "unfullscreen",    _e_comp_wl_evas_cb_unfullscreen,    ec);
      }
 
    /* setup delete/kill callbacks */
@@ -2243,12 +2282,12 @@ _e_comp_wl_client_evas_deinit(E_Client *ec)
    if (!ec->override)
      {
         evas_object_smart_callback_del(ec->frame, "client_resize",   _e_comp_wl_evas_cb_resize);
-        evas_object_smart_callback_del(ec->frame, "maximize_done",   _e_comp_wl_evas_cb_maximize_done);
-        evas_object_smart_callback_del(ec->frame, "unmaximize_done", _e_comp_wl_evas_cb_state_update);
         evas_object_smart_callback_del(ec->frame, "maximize_pre",    _e_comp_wl_evas_cb_maximize_pre);
-        evas_object_smart_callback_del(ec->frame, "unmaximize_pre",  _e_comp_wl_evas_cb_maximize_pre);
-        evas_object_smart_callback_del(ec->frame, "fullscreen",      _e_comp_wl_evas_cb_state_update);
-        evas_object_smart_callback_del(ec->frame, "unfullscreen",    _e_comp_wl_evas_cb_state_update);
+        evas_object_smart_callback_del(ec->frame, "maximize_done",   _e_comp_wl_evas_cb_maximize_done);
+        evas_object_smart_callback_del(ec->frame, "unmaximize_pre",  _e_comp_wl_evas_cb_unmaximize_pre);
+        evas_object_smart_callback_del(ec->frame, "unmaximize_done", _e_comp_wl_evas_cb_unmaximize_done);
+        evas_object_smart_callback_del(ec->frame, "fullscreen",      _e_comp_wl_evas_cb_fullscreen);
+        evas_object_smart_callback_del(ec->frame, "unfullscreen",    _e_comp_wl_evas_cb_unfullscreen);
      }
 
    evas_object_smart_callback_del(ec->frame, "delete_request", _e_comp_wl_evas_cb_delete_request);