more_option: fix the delay for opened get API
authorTaehyub Kim <taehyub.kim@samsung.com>
Fri, 31 Jan 2020 05:40:07 +0000 (14:40 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Mon, 3 Feb 2020 04:02:15 +0000 (13:02 +0900)
Change-Id: I86988ca90cba8100ba9f2e890603fcd15fb80b41

inc/wearable/efl_extension_common_private.h
src/wearable/efl_extension_more_option.c

index af1ef026d9111989afac7b8c6dbb0d6136310f5c..3b305979d9a97c949bfdf6f46a0b98001700bab1 100644 (file)
@@ -304,6 +304,7 @@ struct _Eext_More_Option_Data {
    Eina_Stringshare *scrollbar_fg_color_class;
    Eina_Stringshare *scrollbar_bg_color_class;
    //
+   Eina_Bool is_opened;
    void *mask_buffer;
 };
 
index 65009224e666b8e3e034a2e77376e74861b3e851..243094aa218cd867cf96a9661f261c603bea1482 100644 (file)
@@ -1365,7 +1365,11 @@ _drawer_back_cb(void *data, Evas_Object *obj, void *event_info)
      eext_rotary_object_event_activated_set(mold->rotary_selector, EINA_FALSE);
 
    LOGI("Panel Status: %d",elm_panel_hidden_get(panel));
-   if (!elm_panel_hidden_get(panel)) elm_panel_toggle(panel);
+   if (!elm_panel_hidden_get(panel))
+     {
+        elm_panel_toggle(panel);
+        mold->is_opened = !elm_panel_hidden_get(panel);
+     }
 }
 
 static void
@@ -1516,6 +1520,7 @@ _panel_cue_clicked_cb(void *data, Evas_Object *obj, const char *emission, const
         return;
      }
 
+   mold->is_opened = EINA_TRUE;
    if (__elm_product_theme_is_loaded())
      {
         _eext_more_option_effect_create(mold);
@@ -1940,6 +1945,7 @@ eext_more_option_add(Evas_Object *parent)
      }
    LOGI("Panel Status: %d",elm_panel_hidden_get(mold->panel));
    elm_panel_toggle(mold->panel);
+   mold->is_opened = !elm_panel_hidden_get(mold->panel);
 
    //for accessibility
    evas_object_smart_callback_add(mold->more_option, "atspi,screen,reader,changed", _more_option_screen_reader_changed, mold);
@@ -2238,27 +2244,36 @@ eext_more_option_opened_set(Evas_Object *obj, Eina_Bool opened)
                }
              //
              //ONEUI1.5(20190424):Avoid panel close by api when panel is not active.
-             if (!opened && !mold->is_panel_active) return;
+             if (!opened && !mold->is_panel_active)
+               {
+                  mold->is_opened = opened;
+                  return;
+               }
              //
              if (elm_panel_hidden_get(mold->panel) && opened)
                {
+                  mold->is_opened = opened;
                   _eext_more_option_effect_create(mold);
                }
              else if (!elm_panel_hidden_get(mold->panel) && !opened)
                {
-                  LOGI("Panel Status: %d",elm_panel_hidden_get(mold->panel));
                   elm_panel_toggle(mold->panel);
+                  mold->is_opened = !elm_panel_hidden_get(mold->panel);
                }
           }
         else
           {
-             LOGI("Panel Status: %d",elm_panel_hidden_get(mold->panel));
              if (elm_panel_hidden_get(mold->panel) && opened)
                {
                   eext_rotary_object_event_activated_set(mold->rotary_selector, EINA_TRUE);
                   elm_panel_toggle(mold->panel);
+                  mold->is_opened = !elm_panel_hidden_get(mold->panel);
+               }
+             else if (!elm_panel_hidden_get(mold->panel) && !opened)
+               {
+                  elm_panel_toggle(mold->panel);
+                  mold->is_opened = !elm_panel_hidden_get(mold->panel);
                }
-             else if (!elm_panel_hidden_get(mold->panel) && !opened) elm_panel_toggle(mold->panel);
           }
      }
 }
@@ -2276,7 +2291,7 @@ eext_more_option_opened_get(Evas_Object *obj)
    mold = _more_option_data_get(obj);
    if (mold)
      {
-        return !elm_panel_hidden_get(mold->panel);
+        return mold->is_opened;
      }
 
    return EINA_FALSE;
@@ -2439,12 +2454,15 @@ _access_action_cb(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_i
 //ONEUI1.5(12MAR2019): fixed bug(The bezel is not operated when screen-reader is on)
                if (__elm_product_theme_is_loaded())
                  {
+                    //There are VI delays here, so turn on the is_opened flag directly
+                    mold->is_opened = EINA_TRUE;
                     _eext_more_option_effect_create(mold);
                  }
                else
                  {
                     eext_rotary_object_event_activated_set(mold->rotary_selector, EINA_TRUE);
                     elm_panel_toggle(mold->panel);
+                    mold->is_opened = !elm_panel_hidden_get(mold->panel);
                  }
 //
             }