fix remote type

start module actualyl has a semblance of working well... :)


SVN revision: 14835
This commit is contained in:
Carsten Haitzler 2005-05-18 10:18:02 +00:00
parent baad135e9f
commit 20ad23ab6c
6 changed files with 786 additions and 21 deletions

View File

@ -313,6 +313,7 @@ group {
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
rel1 {
relative: 0.0 0.0;
offset: 0 0;
@ -327,6 +328,7 @@ group {
}
description {
state: "visible" 0.0;
visible: 1;
rel1 {
relative: 0.0 0.0;
offset: 0 0;
@ -341,6 +343,7 @@ group {
}
description {
state: "hidden" 0.0;
visible: 1;
rel1 {
relative: -0.5 -0.5;
offset: 0 0;

View File

@ -1,22 +1,565 @@
group {
name: "modules/start/main";
max: 128 128;
script {
public is_active;
public is_hilited;
}
parts {
part {
name: "base";
name: "title_shadow2";
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
image {
normal: "e17_titlebar_shadow2.png";
border: 8 8 8 8;
}
fill {
smooth: 0;
}
color: 255 255 255 0;
}
description {
state: "active" 0.0;
visible: 1;
image {
normal: "e17_titlebar_shadow2.png";
border: 8 8 8 8;
}
fill {
smooth: 0;
}
color: 255 255 255 255;
}
}
part {
name: "title_shadow1";
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
image {
normal: "e17_titlebar_shadow1.png";
border: 8 8 8 8;
}
fill {
smooth: 0;
}
color: 255 255 255 0;
}
description {
state: "active" 0.0;
visible: 1;
image {
normal: "e17_titlebar_shadow1.png";
border: 8 8 8 8;
}
fill {
smooth: 0;
}
color: 255 255 255 255;
}
}
part {
name: "title_bar";
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
image {
normal: "e17_titlebar.png";
border: 8 8 8 8;
}
color: 255 255 255 0;
}
description {
state: "active" 0.0;
visible: 1;
image {
normal: "e17_titlebar.png";
border: 8 8 8 8;
}
color: 255 255 255 255;
}
}
part {
name: "logo";
description {
state: "default" 0.0;
aspect: 1.0 1.0;
rel1 {
relative: 0.1 0.1;
to: "title_bar";
offset: 7 7;
}
rel2 {
relative: 0.9 0.9;
to: "title_bar";
offset: -8 -8;
}
image {
normal: "e17_logo.png";
}
}
description {
state: "active" 0.0;
inherit: "default" 0.0;
rel1 {
to: "title_bar";
offset: 9 9;
}
rel2 {
to: "title_bar";
offset: -10 -10;
}
}
}
part {
name: "title_glint_clip";
type: RECT;
mouse_events: 0;
description {
state: "default" 0.0;
rel1 {
offset: 3 3;
to: "title_bar";
}
rel2 {
offset: -4 -4;
to: "title_bar";
}
color: 255 255 255 255;
}
}
part {
name: "title_glint_1";
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
color: 255 255 255 0;
align: 0.0 0.0;
max: 34 13;
rel1 {
relative: 0.0 0.0;
offset: 2 2;
to: "title_bar";
}
rel2 {
relative: 1.0 1.0;
offset: -3 -3;
to: "title_bar";
}
image {
normal: "e17_titlebar_glint1.png";
border: 5 0 5 0;
}
fill {
smooth: 0;
}
}
description {
state: "active" 0.0;
inherit: "default" 0.0;
visible: 1;
color: 255 255 255 255;
}
}
part {
name: "title_glint_2";
mouse_events: 0;
clip_to: "title_glint_clip";
description {
state: "default" 0.0;
visible: 0;
color: 255 255 255 0;
max: 0 0;
align: 1.0 0.5;
rel1 {
relative: 0.0 0.0;
offset: 3 3;
to: "title_bar";
}
rel2 {
relative: 0.0 1.0;
offset: 0 -4;
to: "title_bar";
}
image {
normal: "e17_titlebar_glint2.png";
border: 0 0 5 5;
}
fill {
smooth: 0;
}
}
description {
state: "active" 0.0;
inherit: "default" 0.0;
visible: 1;
color: 255 255 255 255;
max: 169 9999;
min: 169 8;
align: 0.5 0.5;
rel1 {
relative: 0.0 0.0;
offset: 3 3;
}
rel2 {
relative: 0.0 1.0;
offset: 3 -4;
}
}
description {
state: "active2" 0.0;
inherit: "default" 0.0;
visible: 1;
color: 255 255 255 128;
max: 169 9999;
min: 169 8;
align: 0.5 0.5;
rel1 {
relative: 1.0 0.0;
offset: -4 3;
}
rel2 {
relative: 1.0 1.0;
offset: -4 -4;
}
}
description {
state: "active3" 0.0;
inherit: "default" 0.0;
visible: 0;
color: 255 255 255 0;
max: 169 9999;
min: 169 8;
align: 0.0 0.5;
rel1 {
relative: 1.0 0.0;
offset: -4 3;
}
rel2 {
relative: 1.0 1.0;
offset: -4 -4;
}
}
}
part {
name: "title_glint_3";
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
color: 255 255 255 0;
align: 1.0 1.0;
max: 34 13;
rel1 {
relative: 0.0 0.0;
offset: 2 2;
to: "title_bar";
}
rel2 {
relative: 1.0 1.0;
offset: -3 -3;
to: "title_bar";
}
image {
normal: "e17_titlebar_glint3.png";
border: 0 5 0 5;
}
fill {
smooth: 0;
}
}
description {
state: "active" 0.0;
inherit: "default" 0.0;
visible: 1;
color: 255 255 255 255;
}
}
part {
name: "logo2";
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
rel1 {
to: "logo";
relative: 0.0 0.0;
offset: 0 0;
}
rel2 {
to: "logo";
relative: 1.0 1.0;
offset: -1 -1;
}
image {
normal: "e17_logo.png";
}
color: 255 255 255 0;
}
description {
state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
color: 255 255 255 255;
}
description {
state: "hidden" 0.0;
inherit: "default" 0.0;
visible: 1;
rel1 {
relative: -0.5 -0.5;
offset: 0 0;
}
rel2 {
relative: 1.5 1.5;
offset: -1 -1;
}
color: 255 255 255 0;
}
}
part {
name: "inout";
type: RECT;
mouse_events: 1;
description {
state: "default" 0.0;
color: 255 255 255 0;
}
}
}
programs {
program {
name: "init";
signal: "load";
source: "";
script {
set_int(is_active, 0);
set_int(is_hilited, 0);
}
}
program {
name: "mouse_in";
signal: "mouse,in";
source: "inout";
script {
new val;
val = get_int(is_active);
if (val == 0)
{
run_program(PROGRAM:"go_active_pre");
set_int(is_hilited, 1);
}
}
}
program {
name: "mouse_out";
signal: "mouse,out";
source: "inout";
script {
new val;
val = get_int(is_active);
if (val == 0)
{
run_program(PROGRAM:"go_passive_pre");
set_int(is_hilited, 0);
}
}
}
program {
name: "handle_active";
signal: "active";
source: "";
script {
new val;
set_int(is_active, 1);
val = get_int(is_hilited);
if (val == 0)
run_program(PROGRAM:"go_active_pre");
}
}
program {
name: "handle_passive";
signal: "passive";
source: "";
script {
new val;
set_int(is_active, 0);
val = get_int(is_hilited);
if (val == 1)
{
run_program(PROGRAM:"go_passive_pre");
set_int(is_hilited, 0);
}
}
}
program {
name: "go_active_pre";
signal: "";
source: "";
action: STATE_SET "default" 0.0;
target: "title_bar";
target: "title_shadow1";
target: "title_shadow2";
after: "go_active";
}
program {
name: "go_active";
action: STATE_SET "active" 0.0;
target: "title_bar";
transition: LINEAR 0.05;
after: "go_active2";
}
program {
name: "go_active2";
action: STATE_SET "active" 0.0;
target: "title_shadow1";
transition: LINEAR 0.05;
after: "go_active3";
after: "go_active3b";
}
program {
name: "go_active3";
action: STATE_SET "active" 0.0;
target: "title_shadow2";
transition: LINEAR 0.05;
}
program {
name: "go_active3b";
action: STATE_SET "active" 0.0;
target: "title_glint_1";
target: "title_glint_2";
transition: LINEAR 0.05;
after: "go_active4";
after: "go_active4b";
}
program {
name: "go_active4";
action: STATE_SET "active2" 0.0;
target: "title_glint_2";
transition: LINEAR 0.2;
after: "go_active5";
after: "go_active5b";
}
program {
name: "go_active4b";
action: STATE_SET "active" 0.0;
target: "title_glint_3";
transition: LINEAR 0.2;
}
program {
name: "go_active5";
action: STATE_SET "active3" 0.0;
target: "title_glint_2";
transition: LINEAR 0.05;
}
program {
name: "go_active5b";
action: STATE_SET "default" 0.0;
target: "title_glint_3";
transition: LINEAR 0.1;
after: "go_active6";
}
program {
name: "go_active6";
action: STATE_SET "default" 0.0;
target: "title_glint_1";
target: "title_glint_2";
target: "title_glint_3";
}
program {
name: "logo_go_active";
signal: "";
source: "";
action: STATE_SET "active" 0.0;
transition: LINEAR 0.2;
target: "logo";
}
program {
name: "go_passive_pre";
signal: "";
source: "";
action: STATE_SET "active" 0.0;
target: "title_bar";
target: "title_shadow1";
target: "title_shadow2";
after: "go_passive";
}
program {
name: "go_passive";
action: STATE_SET "default" 0.0;
target: "title_shadow2";
transition: LINEAR 0.1;
after: "go_passive2";
}
program {
name: "go_passive2";
action: STATE_SET "default" 0.0;
target: "title_shadow1";
transition: LINEAR 0.1;
after: "go_passive3";
}
program {
name: "go_passive3";
action: STATE_SET "default" 0.0;
target: "title_bar";
transition: LINEAR 0.1;
}
program {
name: "logo_go_passive";
signal: "";
source: "";
action: STATE_SET "default" 0.0;
target: "logo";
}
program {
name: "hover_go_active";
signal: "active";
source: "";
action: STATE_SET "visible" 0.0;
target: "logo2";
after: "hover_go_active2";
}
program {
name: "hover_go_active2";
signal: "";
source: "";
action: STATE_SET "hidden" 0.0;
transition: LINEAR 0.5;
target: "logo2";
after: "hover_go_active";
}
program {
name: "hover_go_passive";
signal: "passive";
source: "";
action: ACTION_STOP;
target: "hover_go_active";
target: "hover_go_active2";
after: "hover_go_passive2";
}
program {
name: "hover_go_passive2";
signal: "";
source: "";
action: STATE_SET "default" 0.0;
target: "logo2";
}
}
}

View File

@ -492,6 +492,9 @@ _e_int_menus_clients_pre_cb(void *data, E_Menu *m)
bd->client.icccm.class);
if (a) e_menu_item_icon_edje_set(mi, a->path, "icon");
}
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Cleanup Windows"));
e_menu_item_icon_edje_set(mi,

View File

@ -43,6 +43,7 @@ static void _e_menu_item_activate_previous (void);
static void _e_menu_activate_next (void);
static void _e_menu_activate_previous (void);
static void _e_menu_activate_first (void);
static void _e_menu_activate_last (void);
static void _e_menu_activate_nth (int n);
static E_Menu *_e_menu_active_get (void);
static E_Menu_Item *_e_menu_item_active_get (void);
@ -50,6 +51,7 @@ static int _e_menu_outside_bounds_get (int xdir, int ydir);
static void _e_menu_scroll_by (int dx, int dy);
static void _e_menu_mouse_autoscroll_check (void);
static void _e_menu_item_ensure_onscreen (E_Menu_Item *mi);
static int _e_menu_auto_place (E_Menu *m, int x, int y, int w, int h);
static void _e_menu_cb_intercept_item_move (void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y);
static void _e_menu_cb_intercept_item_resize (void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h);
static void _e_menu_cb_intercept_container_move (void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y);
@ -149,9 +151,47 @@ e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
_e_menu_activate_time = 0.0;
_e_menu_activate_internal(m, zone);
m->cur.x = x + w;
m->cur.y = y + h;
_e_menu_activate_first();
switch (dir)
{
case E_MENU_POP_DIRECTION_LEFT:
_e_menu_realize(m);
m->cur.x = x - m->cur.w;
m->cur.y = y ;
_e_menu_activate_first();
break;
case E_MENU_POP_DIRECTION_RIGHT:
m->cur.x = x + w;
m->cur.y = y ;
_e_menu_activate_first();
break;
case E_MENU_POP_DIRECTION_UP:
_e_menu_realize(m);
m->cur.x = x + w;
m->cur.y = y - m->cur.h;
_e_menu_activate_last();
break;
case E_MENU_POP_DIRECTION_DOWN:
m->cur.x = x + w;
m->cur.y = y + h;
_e_menu_activate_first();
break;
case E_MENU_POP_DIRECTION_AUTO:
{
int pos;
pos = _e_menu_auto_place(m, x, y, w, h);
if (pos == 4)
_e_menu_activate_last();
else
_e_menu_activate_first();
}
break;
default:
m->cur.x = x + w;
m->cur.y = y + h;
_e_menu_activate_first();
break;
}
}
void
@ -165,9 +205,34 @@ e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int d
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
_e_menu_activate_time = ecore_time_get();
_e_menu_activate_internal(m, zone);
m->cur.x = x + w;
m->cur.y = y + h;
switch (dir)
{
case E_MENU_POP_DIRECTION_LEFT:
_e_menu_realize(m);
m->cur.x = x - m->cur.w;
m->cur.y = y ;
break;
case E_MENU_POP_DIRECTION_RIGHT:
m->cur.x = x + w;
m->cur.y = y ;
break;
case E_MENU_POP_DIRECTION_UP:
_e_menu_realize(m);
m->cur.x = x + w;
m->cur.y = y - m->cur.h;
break;
case E_MENU_POP_DIRECTION_DOWN:
m->cur.x = x + w;
m->cur.y = y + h;
break;
case E_MENU_POP_DIRECTION_AUTO:
_e_menu_auto_place(m, x, y, w, h);
break;
default:
m->cur.x = x + w;
m->cur.y = y + h;
break;
}
pmi = _e_menu_item_active_get();
if (pmi) e_menu_item_active_set(pmi, 0);
}
@ -183,8 +248,34 @@ e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir)
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
_e_menu_activate_time = 0.0;
_e_menu_activate_internal(m, zone);
m->cur.x = x;
m->cur.y = y;
switch (dir)
{
case E_MENU_POP_DIRECTION_LEFT:
_e_menu_realize(m);
m->cur.x = x - m->cur.w;
m->cur.y = y ;
break;
case E_MENU_POP_DIRECTION_RIGHT:
m->cur.x = x + w;
m->cur.y = y ;
break;
case E_MENU_POP_DIRECTION_UP:
_e_menu_realize(m);
m->cur.x = x + w;
m->cur.y = y - m->cur.h;
break;
case E_MENU_POP_DIRECTION_DOWN:
m->cur.x = x + w;
m->cur.y = y + h;
break;
case E_MENU_POP_DIRECTION_AUTO:
_e_menu_auto_place(m, x, y, w, h);
break;
default:
m->cur.x = x + w;
m->cur.y = y + h;
break;
}
pmi = _e_menu_item_active_get();
if (pmi) e_menu_item_active_set(pmi, 0);
}
@ -1695,7 +1786,7 @@ _e_menu_activate_previous(void)
}
return;
}
_e_menu_activate_first();
_e_menu_activate_last();
}
static void
@ -1720,6 +1811,28 @@ _e_menu_activate_first(void)
_e_menu_item_ensure_onscreen(mi);
}
static void
_e_menu_activate_last(void)
{
E_Menu *m;
E_Menu_Item *mi;
Evas_List *ll;
if (!_e_active_menus) return;
m = _e_active_menus->data;
if (!m->items) return;
ll = evas_list_last(m->items);
mi = ll->data;
while ((mi->separator) && (ll->prev))
{
ll = ll->prev;
mi = ll->data;
}
if (mi->separator) return;
e_menu_item_active_set(mi, 1);
_e_menu_item_ensure_onscreen(mi);
}
static void
_e_menu_activate_nth(int n)
{
@ -1927,6 +2040,89 @@ _e_menu_item_ensure_onscreen(E_Menu_Item *mi)
_e_menu_scroll_by(dx, dy);
}
static int
_e_menu_auto_place(E_Menu *m, int x, int y, int w, int h)
{
double xr, yr;
_e_menu_realize(m);
/* +-----+
* |\ T /|
* | \ / |
* |L X R|
* | / \ |
* |/ B \|
* +-----+
*
* quadrants... which one
*/
if (w != m->zone->container->w)
xr = (double)(x - m->zone->container->x) /
(double)(m->zone->container->w - w);
else
xr = 0.0;
if (h != m->zone->container->h)
yr = (double)(y - m->zone->container->y) /
(double)(m->zone->container->h - h);
else
yr = 0.0;
if ((xr + yr) < 0.99) /* top or left */
{
if (((1.0 - yr) + xr) <= 1.0)
/* L */
{
m->cur.x = x + w;
if (y < (m->zone->container->y + ((m->zone->container->h * 1) / 3)))
m->cur.y = y;
else if (y < (m->zone->container->y + ((m->zone->container->h * 2) / 3)))
m->cur.y = y + ((h - m->cur.h) / 2);
else
m->cur.y = y + h - m->cur.h;
return 1;
}
else
/* T */
{
m->cur.y = y + h;
if (x < (m->zone->container->x + ((m->zone->container->w * 1) / 3)))
m->cur.x = x;
else if (x < (m->zone->container->x + ((m->zone->container->w * 2) / 3)))
m->cur.x = x + ((w - m->cur.w) / 2);
else
m->cur.x = x + w - m->cur.w;
return 3;
}
}
else /* bottom or right */
{
if (((1.0 - yr) + xr) <= 1.01)
/* B */
{
m->cur.y = y - m->cur.h;
if (x < (m->zone->container->x + ((m->zone->container->w * 1) / 3)))
m->cur.x = x;
else if (x < (m->zone->container->x + ((m->zone->container->w * 2) / 3)))
m->cur.x = x + ((w - m->cur.w) / 2);
else
m->cur.x = x + w - m->cur.w;
return 4;
}
else
/* R */
{
m->cur.x = x - m->cur.w;
if (y < (m->zone->container->y + ((m->zone->container->h * 1) / 3)))
m->cur.y = y;
else if (y < (m->zone->container->y + ((m->zone->container->h * 2) / 3)))
m->cur.y = y + ((h - m->cur.h) / 2);
else
m->cur.y = y + h - m->cur.h;
return 2;
}
}
return 0;
}
static void
_e_menu_cb_ecore_evas_resize(Ecore_Evas *ee)
{
@ -2006,7 +2202,6 @@ _e_menu_cb_key_down(void *data, int type, void *event)
_e_menu_activate_nth(8);
else if (!strcmp(ev->keysymbol, "0"))
_e_menu_activate_nth(9);
printf("kdn \"%s\" \"%s\"\n", ev->keyname, ev->keysymbol);
return 1;
}

View File

@ -310,8 +310,8 @@ E_IPC_Opt_Handler handlers[] =
OREQ("-edge-flip-get", "Get the edge flip flag", E_IPC_OP_USE_EDGE_FLIP_GET, 1),
ODBL("-edge-flip_timeout-set", "Set the edge flip timeout (sec)", E_IPC_OP_EDGE_FLIP_TIMEOUT_SET, 0),
OREQ("-edge-flip_timeout-get", "Get the edge flip timeout", E_IPC_OP_EDGE_FLIP_TIMEOUT_GET, 1),
O2INT("-desks-set", "Get the number of virtual desktops (X x Y. OPT1 = X, OPT2 = Y)", E_IPC_OP_DESKS_SET, 0),
OREQ("-desks-get", "Set the number of virtual desktops", E_IPC_OP_DESKS_GET, 1)
O2INT("-desks-set", "Set the number of virtual desktops (X x Y. OPT1 = X, OPT2 = Y)", E_IPC_OP_DESKS_SET, 0),
OREQ("-desks-get", "Get the number of virtual desktops", E_IPC_OP_DESKS_GET, 1)
};
/* externally accessible functions */

View File

@ -13,6 +13,7 @@ static void _start_face_menu_new(Start_Face *face);
static void _start_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
static void _start_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change);
static void _start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _start_menu_cb_post_deactivate(void *data, E_Menu *m);
static int button_count;
static E_Config_DD *conf_edd;
@ -37,7 +38,6 @@ e_modapi_init(E_Module *m)
/* Create the button */
e = _start_new();
m->config_menu = e->config_menu;
//m->main_menu = e_int_menus_main_new();
return e;
}
@ -179,6 +179,7 @@ _start_face_new(E_Container *con)
face->button_object = o;
e_theme_edje_object_set(o, "base/theme/modules/start", "modules/start/main");
edje_object_signal_emit(o, "passive", "");
evas_object_show(o);
o = evas_object_rectangle_add(con->bg_evas);
@ -234,7 +235,6 @@ _start_face_menu_new(Start_Face *face)
e_menu_item_label_set(mi, _("Edit Mode"));
e_menu_item_callback_set(mi, _start_face_cb_menu_edit, face);
face->main_menu = e_int_menus_main_new();
}
static void
@ -264,7 +264,7 @@ _start_face_free(Start_Face *face)
evas_object_del(face->button_object);
evas_object_del(face->event_object);
e_object_del(E_OBJECT(face->menu));
e_object_del(E_OBJECT(face->main_menu));
if (face->main_menu) e_object_del(E_OBJECT(face->main_menu));
free(face->conf);
free(face);
@ -341,13 +341,34 @@ _start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf
ev = event_info;
if (ev->button == 3)
{
e_menu_activate_mouse(face->menu, e_zone_current_get(face->con), ev->output.x, ev->output.y, 1, 1, E_MENU_POP_DIRECTION_DOWN);
e_menu_activate_mouse(face->menu, e_zone_current_get(face->con),
ev->output.x, ev->output.y, 1, 1,
E_MENU_POP_DIRECTION_AUTO);
e_util_container_fake_mouse_up_all_later(face->con);
}
else if (ev->button == 1)
{
/* Pop up main menu */
e_menu_activate_mouse(face->main_menu, e_zone_current_get(face->con), ev->output.x, ev->output.y, 1, 1, E_MENU_POP_DIRECTION_DOWN);
Evas_Coord x, y, w, h;
e_gadman_client_geometry_get(face->gmc, &x, &y, &w, &h);
if (!face->main_menu)
face->main_menu = e_int_menus_main_new();
e_menu_post_deactivate_callback_set(face->main_menu, _start_menu_cb_post_deactivate, face);
e_menu_activate_mouse(face->main_menu, e_zone_current_get(face->con),
x, y, w, h,
E_MENU_POP_DIRECTION_AUTO);
e_util_container_fake_mouse_up_all_later(face->con);
edje_object_signal_emit(face->button_object, "active", "");
}
}
static void
_start_menu_cb_post_deactivate(void *data, E_Menu *m)
{
Start_Face *face;
face = data;
if (!face->main_menu) return;
edje_object_signal_emit(face->button_object, "passive", "");
face->main_menu = NULL;
}