Modified to deliver floating IME requests by ISF 89/255889/1
authorInHong Han <inhong1.han@samsung.com>
Wed, 24 Mar 2021 10:03:15 +0000 (19:03 +0900)
committerInHong Han <inhong1.han@samsung.com>
Thu, 25 Mar 2021 01:12:42 +0000 (10:12 +0900)
Change-Id: If1dec3b4225c2ccf0a10dc46649d66143052fd7b

src/e_mod_input_panel.c
src/e_mod_main.c
src/e_mod_main.h

index 3200bab..668cc39 100644 (file)
@@ -333,53 +333,10 @@ _e_input_panel_surface_cb_ready_set(struct wl_client *client EINA_UNUSED, struct
    _e_input_panel_surface_show(ips);
 }
 
-static void
- _e_input_panel_surface_cb_floating_panel_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t state)
-{
-   E_Input_Panel_Surface *ips = wl_resource_get_user_data(resource);
-
-   if (!ips)
-     {
-        WTI_WARNING(resource,
-                    WL_DISPLAY_ERROR_INVALID_OBJECT,
-                    "No Input Panel Surface For Surface");
-        return;
-     }
-
-   if (!ips->ec) return;
-
-   if (ips->ec->vkbd.floating == state) return;
-
-   ips->ec->vkbd.floating = !!state;
-
-   if (ips->ec->vkbd.floating)
-     e_policy_conformant_part_del(ips->ec);
-   else
-     e_policy_conformant_part_add(ips->ec);
-}
-
-static void
-_e_input_panel_surface_cb_floating_drag_enabled_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t enabled)
-{
-   E_Input_Panel_Surface *ips = wl_resource_get_user_data(resource);
-
-   if (!ips)
-     {
-        WTI_WARNING(resource,
-                    WL_DISPLAY_ERROR_INVALID_OBJECT,
-                    "No Input Panel Surface For Surface");
-        return;
-     }
-
-   g_floating_info->moving_req = !!enabled;
-}
-
 static const struct wl_input_panel_surface_interface _e_input_panel_surface_implementation = {
      _e_input_panel_surface_cb_toplevel_set,
      _e_input_panel_surface_cb_overlay_panel_set,
      _e_input_panel_surface_cb_ready_set,
-     _e_input_panel_surface_cb_floating_panel_set,
-     _e_input_panel_surface_cb_floating_drag_enabled_set
 };
 
 static void
@@ -1679,3 +1636,30 @@ int e_input_panel_is_effect_running(void)
 
    return run_type;
 }
+
+void e_input_panel_floating_panel_set(Eina_Bool state)
+{
+   E_Input_Panel_Surface *ips;
+   Eina_List *l;
+   Eina_List *l_next;
+
+   if (!g_input_panel) return;
+
+   EINA_LIST_FOREACH_SAFE(g_input_panel->surfaces, l, l_next, ips)
+     {
+        if (ips && ips->ec)
+          {
+             if (ips->ec->vkbd.floating == state) continue;
+             ips->ec->vkbd.floating = state;
+             if (ips->ec->vkbd.floating)
+               e_policy_conformant_part_del(ips->ec);
+             else
+               e_policy_conformant_part_add(ips->ec);
+          }
+     }
+}
+
+void e_input_panel_floating_drag_enabled(Eina_Bool enabled)
+{
+   g_floating_info->moving_req = enabled;
+}
\ No newline at end of file
index 3399a7e..49f8f9d 100644 (file)
@@ -1104,6 +1104,18 @@ _e_text_input_method_context_cb_reshow_input_panel(struct wl_client *client EINA
     e_input_panel_wait_update_set(EINA_TRUE);
 }
 
+static void
+_e_text_input_moethod_context_cb_set_floating_panel(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t state)
+{
+    e_input_panel_floating_panel_set(state ? EINA_TRUE : EINA_FALSE);
+}
+
+static void
+_e_text_input_moethod_context_cb_set_floating_drag_enabled(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t enabled)
+{
+    e_input_panel_floating_drag_enabled(enabled ? EINA_TRUE : EINA_FALSE);
+}
+
 static const struct wl_input_method_context_interface _e_text_input_method_context_implementation = {
      _e_text_input_method_context_cb_destroy,
      _e_text_input_method_context_cb_string_commit,
@@ -1132,6 +1144,8 @@ static const struct wl_input_method_context_interface _e_text_input_method_conte
      _e_text_input_method_context_cb_commit_content,
      _e_text_input_method_context_cb_update_candidate_state,
      _e_text_input_method_context_cb_reshow_input_panel,
+     _e_text_input_moethod_context_cb_set_floating_panel,
+     _e_text_input_moethod_context_cb_set_floating_drag_enabled,
 };
 
 static void
index ce5311b..8809418 100644 (file)
@@ -25,6 +25,8 @@ void        e_text_input_update_input_panel_state(Eina_Bool state);
 void        e_text_input_update_input_panel_geometry(E_Client *ec);
 Eina_Bool   e_input_panel_surface_destroy(E_Client *ec);
 int         e_input_panel_is_effect_running(void);
+void        e_input_panel_floating_panel_set(Eina_Bool state);
+void        e_input_panel_floating_drag_enabled(Eina_Bool enabled);
 
 typedef enum {
    TIZEN_PROFILE_UNKNOWN = 0,