jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=cb172de3dae148c0722b8d7d09aff6af57268637

commit cb172de3dae148c0722b8d7d09aff6af57268637
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Wed Nov 9 18:25:47 2016 +0900

    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.
---
 data/elementary/themes/edc/elm/border.edc | 45 ++++++++++++++++++++++++++++++-
 src/lib/elementary/efl_ui_win.c           | 33 ++++++++++++++++++-----
 src/lib/elementary/elm_menu.c             |  3 +--
 3 files changed, 71 insertions(+), 10 deletions(-)

diff --git a/data/elementary/themes/edc/elm/border.edc 
b/data/elementary/themes/edc/elm/border.edc
index fff5a31..eb9584e 100644
--- a/data/elementary/themes/edc/elm/border.edc
+++ b/data/elementary/themes/edc/elm/border.edc
@@ -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;
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 7b6688d..65775ce 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -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);
-   evas_object_geometry_get(sd->edje, &ox, &oy, &ow, &oh);
-
-   evas_output_framespace_set(sd->evas, (ox - fx), (oy - fy), (fw - ow), (fh - 
oh));
+   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);
      }
 }
diff --git a/src/lib/elementary/elm_menu.c b/src/lib/elementary/elm_menu.c
index 5127ef0..491320f 100644
--- a/src/lib/elementary/elm_menu.c
+++ b/src/lib/elementary/elm_menu.c
@@ -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 *

-- 


Reply via email to