evas_object_layer_set(sd->popup, evas_object_layer_get(data));
evas_object_raise(sd->popup);
evas_object_show(sd->popup);
+ sd->popup_visible = EINA_TRUE;
edje_object_signal_emit(sd->popup, "popup,show", "elm"); // XXX: for compat
edje_object_signal_emit(sd->popup, "elm,popup,show", "elm");
}
const char *source EINA_UNUSED)
{
ELM_SLIDER_DATA_GET(data, sd);
- if (sd->popup)
+
+ if (!sd->popup_visible || !sd->popup) return;
+
+ if (!(elm_widget_focus_get(data) && sd->always_popup_show))
{
- if (!(elm_widget_focus_get(data) && sd->always_popup_show))
- {
- edje_object_signal_emit(sd->popup, "popup,hide", "elm"); // XXX: for compat
- edje_object_signal_emit(sd->popup, "elm,popup,hide", "elm");
- }
+ // XXX: for compat
+ edje_object_signal_emit(sd->popup, "popup,hide", "elm");
+ edje_object_signal_emit(sd->popup, "elm,popup,hide", "elm");
}
}
if (sd->popup)
{
if (!(elm_widget_focus_get(data) && sd->always_popup_show))
- evas_object_hide(sd->popup);
+ {
+ evas_object_hide(sd->popup);
+ sd->popup_visible = EINA_FALSE;
+ }
}
}
}
else if (type == EVAS_CALLBACK_KEY_UP)
{
- if (evas_object_visible_get(sd->popup))
_popup_hide(obj, NULL, NULL, NULL);
return EINA_FALSE;
}