popup: If popup's parent is resized, popup need to resized, too 39/69139/2
authorJinyong Park <j4939.park@samsung.com>
Thu, 12 May 2016 01:42:02 +0000 (10:42 +0900)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 24 May 2016 10:17:00 +0000 (03:17 -0700)
When window's size is not enough to show popup, popup resize smaller to show it in appropriate size.
But if window resize larger enough to show popup, popup is locked in small size.
On the contrary to this case, if window resize too smaller, popup has still large size, so popup doesn't display properly.

Change-Id: Iea7587c63e26940444d3e82f685f68d6b604d74f
Signed-off-by: Jinyong Park <j4939.park@samsung.com>
src/lib/elc_popup.c

index e672dca812e1255a7f3341ebd9d782422ddba03d..a02b67786c3e5a9f7a4b2ce557adc54e04c5c19c 100644 (file)
@@ -200,6 +200,20 @@ _size_hints_changed_cb(void *data,
    elm_layout_sizing_eval(data);
 }
 
+static void
+_notify_resize_cb(void *data,
+                  Evas *e EINA_UNUSED,
+                  Evas_Object *obj EINA_UNUSED,
+                  void *event_info EINA_UNUSED)
+{
+   Evas_Object *popup = data;
+
+   ELM_POPUP_CHECK(popup);
+
+   _scroller_size_calc(popup);
+   elm_layout_sizing_eval(popup);
+}
+
 static void
 _list_del(Elm_Popup_Data *sd)
 {
@@ -234,6 +248,7 @@ _elm_popup_evas_object_smart_del(Eo *obj, Elm_Popup_Data *sd)
 
    evas_object_event_callback_del_full(sd->parent, EVAS_CALLBACK_RESIZE, _parent_geom_cb, obj);
    evas_object_event_callback_del_full(sd->parent, EVAS_CALLBACK_MOVE, _parent_geom_cb, obj);
+   evas_object_event_callback_del_full(sd->notify, EVAS_CALLBACK_RESIZE, _notify_resize_cb, obj);
 
    eo_do(sd->notify,
          eo_event_callback_array_del(_notify_cb(), obj));
@@ -1684,6 +1699,8 @@ _elm_popup_evas_object_smart_add(Eo *obj, Elm_Popup_Data *priv)
      (priv->notify, EVAS_HINT_FILL, EVAS_HINT_FILL);
    evas_object_smart_member_add(priv->notify, obj);
 
+   evas_object_event_callback_add(priv->notify, EVAS_CALLBACK_RESIZE, _notify_resize_cb, obj);
+
    priv->main_layout = elm_layout_add(obj);
    if (!elm_layout_theme_set(priv->main_layout, "popup", "base",
                              elm_widget_style_get(obj)))