forked from enlightenment/enlightenment
gadcon popup should lock shelf.
It's nasty to have shelf auto-hided when you have a popup like mixer or battery warning, so gadcon popups will now lock shelf while they're visible. Developers can go back to old behaviour setting the appropriate flag with e_gadcon_popup_shelf_lock_set(). SVN revision: 38530
This commit is contained in:
parent
af9c9c7df0
commit
4ae928cf1a
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
static void _e_gadcon_popup_free(E_Gadcon_Popup *pop);
|
static void _e_gadcon_popup_free(E_Gadcon_Popup *pop);
|
||||||
|
static void _e_gadcon_popup_shelf_lock_set(E_Gadcon_Popup *pop, Eina_Bool locked);
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
|
|
||||||
|
@ -29,6 +30,8 @@ e_gadcon_popup_new(E_Gadcon_Client *gcc, void (*resize_func) (Evas_Object *obj,
|
||||||
pop->o_bg = o;
|
pop->o_bg = o;
|
||||||
|
|
||||||
pop->gcc = gcc;
|
pop->gcc = gcc;
|
||||||
|
pop->shelf_lock = 1;
|
||||||
|
pop->shelf_was_locked = 0;
|
||||||
pop->resize_func = resize_func;
|
pop->resize_func = resize_func;
|
||||||
|
|
||||||
return pop;
|
return pop;
|
||||||
|
@ -153,6 +156,9 @@ e_gadcon_popup_show(E_Gadcon_Popup *pop)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
e_popup_move_resize(pop->win, px - zx, py - zy, pop->w, pop->h);
|
e_popup_move_resize(pop->win, px - zx, py - zy, pop->w, pop->h);
|
||||||
|
|
||||||
|
if (!pop->shelf_was_locked)
|
||||||
|
_e_gadcon_popup_shelf_lock_set(pop, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -163,6 +169,8 @@ e_gadcon_popup_hide(E_Gadcon_Popup *pop)
|
||||||
E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE);
|
E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE);
|
||||||
if (pop->pinned) return;
|
if (pop->pinned) return;
|
||||||
e_popup_hide(pop->win);
|
e_popup_hide(pop->win);
|
||||||
|
if (pop->shelf_was_locked)
|
||||||
|
_e_gadcon_popup_shelf_lock_set(pop, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -184,12 +192,39 @@ e_gadcon_popup_toggle_pinned(E_Gadcon_Popup *pop)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_gadcon_popup_shelf_lock_set(E_Gadcon_Popup *pop, Eina_Bool setting)
|
||||||
|
{
|
||||||
|
if (!pop) return;
|
||||||
|
E_OBJECT_CHECK(pop);
|
||||||
|
E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE);
|
||||||
|
|
||||||
|
setting = !!setting;
|
||||||
|
if (pop->shelf_lock == setting) return;
|
||||||
|
pop->shelf_lock = setting;
|
||||||
|
|
||||||
|
if ((!setting) && pop->shelf_was_locked)
|
||||||
|
_e_gadcon_popup_shelf_lock_set(pop, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_gadcon_popup_free(E_Gadcon_Popup *pop)
|
_e_gadcon_popup_free(E_Gadcon_Popup *pop)
|
||||||
{
|
{
|
||||||
|
if (pop->shelf_was_locked)
|
||||||
|
_e_gadcon_popup_shelf_lock_set(pop, 0);
|
||||||
pop->gcc = NULL;
|
pop->gcc = NULL;
|
||||||
e_object_del(E_OBJECT(pop->win));
|
e_object_del(E_OBJECT(pop->win));
|
||||||
free(pop);
|
free(pop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_gadcon_popup_shelf_lock_set(E_Gadcon_Popup *pop, Eina_Bool locked)
|
||||||
|
{
|
||||||
|
if ((!pop->gcc) || (!pop->gcc->gadcon) || (!pop->gcc->gadcon->shelf))
|
||||||
|
return;
|
||||||
|
|
||||||
|
e_shelf_locked_set(pop->gcc->gadcon->shelf, locked);
|
||||||
|
pop->shelf_was_locked = locked;
|
||||||
|
}
|
||||||
|
|
|
@ -20,7 +20,9 @@ struct _E_Gadcon_Popup
|
||||||
Evas_Coord w, h;
|
Evas_Coord w, h;
|
||||||
Evas_Object *o_bg;
|
Evas_Object *o_bg;
|
||||||
|
|
||||||
int pinned : 1;
|
Eina_Bool pinned : 1;
|
||||||
|
Eina_Bool shelf_lock : 1;
|
||||||
|
Eina_Bool shelf_was_locked : 1;
|
||||||
|
|
||||||
void (*resize_func) (Evas_Object *obj, int *w, int *h);
|
void (*resize_func) (Evas_Object *obj, int *w, int *h);
|
||||||
};
|
};
|
||||||
|
@ -30,6 +32,7 @@ EAPI void e_gadcon_popup_content_set(E_Gadcon_Popup *pop, Evas_Object *o);
|
||||||
EAPI void e_gadcon_popup_show(E_Gadcon_Popup *pop);
|
EAPI void e_gadcon_popup_show(E_Gadcon_Popup *pop);
|
||||||
EAPI void e_gadcon_popup_hide(E_Gadcon_Popup *pop);
|
EAPI void e_gadcon_popup_hide(E_Gadcon_Popup *pop);
|
||||||
EAPI void e_gadcon_popup_toggle_pinned(E_Gadcon_Popup *pop);
|
EAPI void e_gadcon_popup_toggle_pinned(E_Gadcon_Popup *pop);
|
||||||
|
EAPI void e_gadcon_popup_shelf_lock_set(E_Gadcon_Popup *pop, Eina_Bool setting);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue