win: Move main menu to the border edje group

The main menu can now be contained inside the CSD border
rather than inside the win edje group.
This commit is contained in:
Jean-Philippe Andre 2016-11-09 18:25:47 +09:00
parent b2dbf9d9dd
commit cb172de3da
3 changed files with 71 additions and 10 deletions

View File

@ -837,11 +837,44 @@ group { name: "elm/border/base/default";
/* visible: 0; */
/* } */
}
/* main menu */
rect { "menu_bg";
desc { "default";
color: 64 64 64 255; // FIXME color_class
align: 0.5 0.0;
rel.to: "elm.swallow.menu";
}
}
swallow { "elm.swallow.menu";
required: 1; // since 1.19
desc { "default";
rel.to: "top";
rel1.relative: 0.0 1.0;
rel1.offset: 0 -1;
visible: 0;
align: 0.5 0.0;
fixed: 1 1;
}
desc { "visible"; inherit: "default";
visible: 1;
fixed: 0 1;
}
}
/* covers the entire client contents, including the main menu */
spacer { "elm.spacer.content";
required: 1; // since 1.19
desc {
rel1.to: "top";
rel1.relative: 0.0 1.0;
rel2.to: "bottom";
rel2.relative: 1.0 0.0;
}
}
part { name: "elm.swallow.client"; type: SWALLOW;
clip_to: "client_clip";
description { state: "default" 0.0;
rel1.relative: 0.0 1.0;
rel1.to: "top";
rel1.to: "elm.swallow.menu";
rel2.relative: 1.0 0.0;
rel2.to: "bottom";
}
@ -1498,6 +1531,16 @@ group { name: "elm/border/base/default";
target: "elm.event.resize.b";
target: "elm.event.resize.br";
}
program { name: "show_menu";
signal: "elm,action,show_menu"; source: "elm";
action: STATE_SET "visible" 0.0;
target: "elm.swallow.menu";
}
program { name: "hide_menu";
signal: "elm,action,hide"; source: "elm";
action: STATE_SET "default" 0.0;
target: "elm.swallow.menu";
}
program {
signal: "mouse,down,*"; source: "elm.event.close";
action: STATE_SET "selected" 0.0;

View File

@ -1417,9 +1417,16 @@ _elm_win_frame_obj_update(Efl_Ui_Win_Data *sd)
if (!sd->frame_obj) return;
evas_object_geometry_get(sd->frame_obj, &fx, &fy, &fw, &fh);
if (edje_object_part_exists(sd->frame_obj, "elm.spacer.content"))
{
edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.content", &ox, &oy, &ow, &oh);
evas_output_framespace_set(sd->evas, ox, oy, fw - ow, fh - oh);
}
else
{
evas_object_geometry_get(sd->edje, &ox, &oy, &ow, &oh);
evas_output_framespace_set(sd->evas, (ox - fx), (oy - fy), (fw - ow), (fh - oh));
}
}
static void
@ -5504,23 +5511,35 @@ _efl_ui_win_fullscreen_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
return sd->fullscreen;
}
static inline Eo *
_main_menu_swallow_get(Efl_Ui_Win_Data *sd)
{
if (sd->frame_obj)
{
if (edje_object_part_exists(sd->frame_obj, "elm.swallow.menu"))
return sd->frame_obj;
}
return sd->edje;
}
static void
_dbus_menu_set(Eina_Bool dbus_connect, void *data)
{
ELM_WIN_DATA_GET_OR_RETURN(data, sd);
Eo *swallow = _main_menu_swallow_get(sd);
if (dbus_connect)
{
DBG("Setting menu to D-Bus");
edje_object_part_unswallow(sd->edje, sd->main_menu);
edje_object_signal_emit(sd->edje, "elm,action,hide_menu", "elm");
edje_object_part_unswallow(swallow, sd->main_menu);
edje_object_signal_emit(swallow, "elm,action,hide_menu", "elm");
_elm_menu_menu_bar_hide(sd->main_menu);
}
else
{
DBG("Setting menu to local mode");
edje_object_part_swallow(sd->edje, "elm.swallow.menu", sd->main_menu);
edje_object_signal_emit(sd->edje, "elm,action,show_menu", "elm");
edje_object_part_swallow(swallow, "elm.swallow.menu", sd->main_menu);
edje_object_signal_emit(swallow, "elm,action,show_menu", "elm");
evas_object_show(sd->main_menu);
}
}

View File

@ -782,8 +782,7 @@ EAPI Evas_Object *
elm_menu_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
Evas_Object *obj = efl_add(MY_CLASS, parent);
return obj;
return efl_add(MY_CLASS, parent);
}
EOLIAN static Eo *