Merge branch 'tizen_3.0' into tizen 60/107060/2 accepted/tizen/common/20161229.135941 accepted/tizen/ivi/20161229.113040 accepted/tizen/mobile/20161229.112941 accepted/tizen/tv/20161229.112957 accepted/tizen/wearable/20161229.113012 submit/tizen/20161228.222653
authorInHong Han <inhong1.han@samsung.com>
Mon, 26 Dec 2016 09:29:57 +0000 (18:29 +0900)
committerInHong Han <inhong1.han@samsung.com>
Mon, 26 Dec 2016 10:12:32 +0000 (19:12 +0900)
Change-Id: Id5a67fcffecbed83a3c4101e924a8ac0ec72b115

1  2 
packaging/e-mod-tizen-wl-textinput.spec
src/e_mod_input_panel.c
src/e_mod_main.c
src/e_mod_main.h

@@@ -241,31 -277,31 +275,35 @@@ _e_input_panel_surface_visible_update(E
     if (!(ec = ips->ec)) return;
  
     if (e_object_is_del(E_OBJECT(ec))) return;
     if ((ips->showing) && (e_pixmap_usable_get(ec->pixmap)))
       {
 -#ifdef _TV
 -        _e_input_panel_position_set(ec, ec->client.w, ec->client.h);
 -        ec->visible = EINA_TRUE;
 -        evas_object_geometry_set(ec->frame, ec->x, ec->y, ec->w, ec->h);
 -        evas_object_show(ec->frame);
 -        e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
 -#else
 -        if (ec->visible)
 -          return;
+         /* Now we can assure that previous SHOW request actually succeeded,
+          * no need for trying re-run panel show command */
+         if (panel_show_need_rerun)
+           e_input_panel_show_need_rerun_set(EINA_FALSE);
 -        WTI_LOG("IPS::DEFER_SHOW::ADD");
 -        ips->wait_update = EINA_TRUE;
 -        if (!ips->eh.buf_change)
 +        if (_TV)
            {
 -             ips->eh.buf_change =
 -                ecore_event_handler_add(E_EVENT_CLIENT_BUFFER_CHANGE,
 -                                        _ips_cb_buffer_change, ips);
 +             _e_input_panel_position_set(ec, ec->client.w, ec->client.h);
 +             ec->visible = EINA_TRUE;
 +             evas_object_geometry_set(ec->frame, ec->x, ec->y, ec->w, ec->h);
 +             evas_object_show(ec->frame);
 +             e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
 +          }
 +        else
 +          {
 +             if (ec->visible)
 +               return;
 +
 +             WTI_LOG("IPS::DEFER_SHOW::ADD");
 +             ips->wait_update = EINA_TRUE;
 +             if (!ips->eh.buf_change)
 +               {
 +                  ips->eh.buf_change =
 +                     ecore_event_handler_add(E_EVENT_CLIENT_BUFFER_CHANGE,
 +                                             _ips_cb_buffer_change, ips);
 +               }
            }
 -#endif
       }
     else
       {
@@@ -1110,11 -1088,13 +1125,12 @@@ _e_text_input_cb_activate(struct wl_cli
          context->input_method = input_method;
          input_method->context = context;
  
-         wl_input_method_send_activate(input_method->resource, context->resource, text_input->id);
+         if (context->resource)
+           wl_input_method_send_activate(input_method->resource, context->resource, text_input->id);
       }
  
 -#ifdef _TV
 -   set_soft_keyboard_mode();
 -#endif
 +   if (_TV)
 +     set_soft_keyboard_mode();
  
     if (text_input->resource)
       wl_text_input_send_enter(text_input->resource, surface);
@@@ -7,17 -7,9 +7,19 @@@ Eina_Bool   e_input_panel_init(void)
  void        e_input_panel_shutdown(void);
  void        e_input_panel_visibility_change(Eina_Bool visible);
  Eina_Bool   e_input_panel_client_find(E_Client *ec);
+ Eina_Bool   e_input_panel_client_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h);
  EINTERN void   e_input_panel_wait_update_set(Eina_Bool wait_update);
  EINTERN void   e_input_panel_transient_for_set(E_Client *parent);
+ void        e_input_panel_show_need_rerun_set(Eina_Bool need_rerun);
  
 +typedef enum {
 +   TIZEN_PROFILE_UNKNOWN = 0,
 +   TIZEN_PROFILE_MOBILE = 0x1,
 +   TIZEN_PROFILE_WEARABLE = 0x2,
 +   TIZEN_PROFILE_TV = 0x4,
 +   TIZEN_PROFILE_IVI = 0x8,
 +   TIZEN_PROFILE_COMMON = 0x10,
 +} tizen_profile_t;
 +extern tizen_profile_t _get_tizen_profile();
 +#define _TV (_get_tizen_profile() == TIZEN_PROFILE_TV)
  #endif