aboutsummaryrefslogtreecommitdiffstats
path: root/meta-efl/recipes-efl
diff options
context:
space:
mode:
Diffstat (limited to 'meta-efl/recipes-efl')
-rw-r--r--meta-efl/recipes-efl/e17/e-wm/Fix-Illume-Home-Button.diff166
-rw-r--r--meta-efl/recipes-efl/e17/e-wm_svn.bb3
2 files changed, 168 insertions, 1 deletions
diff --git a/meta-efl/recipes-efl/e17/e-wm/Fix-Illume-Home-Button.diff b/meta-efl/recipes-efl/e17/e-wm/Fix-Illume-Home-Button.diff
new file mode 100644
index 0000000000..09b5feb877
--- /dev/null
+++ b/meta-efl/recipes-efl/e17/e-wm/Fix-Illume-Home-Button.diff
@@ -0,0 +1,166 @@
+Index: e/src/modules/illume2/policies/illume/policy.c
+===================================================================
+--- e/src/modules/illume2/policies/illume/policy.c (revision 67951)
++++ e/src/modules/illume2/policies/illume/policy.c (revision 76646)
+@@ -13,4 +13,5 @@
+ static void _policy_border_move(E_Border *bd, int x, int y);
+ static void _policy_border_resize(E_Border *bd, int w, int h);
++static void _policy_border_hide_above(E_Border *bd);
+ static void _policy_border_hide_below(E_Border *bd);
+ static void _policy_border_show_below(E_Border *bd);
+@@ -124,23 +125,57 @@
+
+ static void
++_policy_border_hide_above(E_Border *bd)
++{
++ int pos = 0, layer = 0, i;
++
++ if (!bd) return;
++
++ /* determine layering position */
++ layer = bd->layer;
++ if (layer < 0) layer = 0;
++ pos = 1 + (layer / 50);
++ if (pos > 10) pos = 10;
++
++ /* Find the windows above this one */
++ for (i = (pos + 1); i < 11; i++)
++ {
++ Eina_List *l;
++ E_Border *b;
++
++ EINA_LIST_REVERSE_FOREACH(bd->zone->container->layers[i].clients, l, b)
++ {
++ /* skip if it's the same border */
++ if (b == bd) continue;
++
++ /* skip if it's not on this zone */
++ if (b->zone != bd->zone) continue;
++
++ /* skip special borders */
++ if (e_illume_border_is_indicator(b)) continue;
++ if (e_illume_border_is_softkey(b)) continue;
++ if (e_illume_border_is_keyboard(b)) continue;
++ if (e_illume_border_is_quickpanel(b)) continue;
++ if (e_illume_border_is_home(b)) continue;
++
++ e_border_iconify(b);
++ }
++ }
++}
++
++static void
+ _policy_border_hide_below(E_Border *bd)
+ {
+- int pos = 0, i;
+-
+-// printf("Hide Borders Below: %s %d %d\n",
+-// bd->client.icccm.name, bd->x, bd->y);
++ int pos = 0, layer = 0, i;
+
+ if (!bd) return;
+
+ /* determine layering position */
+- if (bd->layer <= 0) pos = 0;
+- else if ((bd->layer > 0) && (bd->layer <= 50)) pos = 1;
+- else if ((bd->layer > 50) && (bd->layer <= 100)) pos = 2;
+- else if ((bd->layer > 100) && (bd->layer <= 150)) pos = 3;
+- else if ((bd->layer > 150) && (bd->layer <= 200)) pos = 4;
+- else pos = 5;
++ layer = bd->layer;
++ if (layer < 0) layer = 0;
++ pos = 1 + (layer / 50);
++ if (pos > 10) pos = 10;
+
+ /* Find the windows below this one */
+- for (i = pos; i >= 2; i--)
++ for (i = (pos - 1); i >= 0; i--)
+ {
+ Eina_List *l;
+@@ -184,5 +219,5 @@
+ Eina_List *l;
+ E_Border *prev;
+- int pos = 0, i;
++ int pos = 0, layer = 0, i;
+
+ // printf("Show Borders Below: %s %d %d\n",
+@@ -201,13 +236,11 @@
+
+ /* determine layering position */
+- if (bd->layer <= 0) pos = 0;
+- else if ((bd->layer > 0) && (bd->layer <= 50)) pos = 1;
+- else if ((bd->layer > 50) && (bd->layer <= 100)) pos = 2;
+- else if ((bd->layer > 100) && (bd->layer <= 150)) pos = 3;
+- else if ((bd->layer > 150) && (bd->layer <= 200)) pos = 4;
+- else pos = 5;
++ layer = bd->layer;
++ if (layer < 0) layer = 0;
++ pos = 1 + (layer / 50);
++ if (pos > 10) pos = 10;
+
+ /* Find the windows below this one */
+- for (i = pos; i >= 2; i--)
++ for (i = (pos + 1); i < 11; i++)
+ {
+ E_Border *b;
+@@ -1039,7 +1072,7 @@
+ _policy_border_add(E_Border *bd)
+ {
+-// printf("Border added: %s\n", bd->client.icccm.class);
+-
+ if (!bd) return;
++
++// printf("\nBorder added: %s\n", bd->client.icccm.class);
+
+ /* NB: this call sets an atom on the window that specifices the zone.
+@@ -1159,5 +1192,5 @@
+ if ((ind = e_illume_border_indicator_get(bd->zone)))
+ {
+- /* we have the indicator, show it if needed */
++ /* we have the indicator, hide it if needed */
+ if (ind->visible) e_illume_border_hide(ind);
+ }
+@@ -1178,7 +1211,7 @@
+ _policy_border_focus_out(E_Border *bd)
+ {
++ if (!bd) return;
++
+ // printf("Border focus out: %s\n", bd->client.icccm.name);
+-
+- if (!bd) return;
+
+ /* NB: if we got this focus_out event on a deleted border, we check if
+@@ -1202,5 +1235,5 @@
+ E_Border *sft;
+
+-// printf("Border Activate: %s\n", bd->client.icccm.name);
++ printf("Border Activate: %s\n", bd->client.icccm.name);
+
+ if (!bd) return;
+@@ -1707,5 +1740,18 @@
+ if (!zone) return;
+ if (!(bd = e_illume_border_home_get(zone))) return;
+- _policy_border_set_focus(bd);
++
++ /* if the border was hidden due to layout, we need to unhide */
++ if (!bd->visible) e_illume_border_show(bd);
++
++ if ((bd->iconic) && (!bd->lock_user_iconify))
++ e_border_uniconify(bd);
++
++ if (!bd->lock_user_stacking) e_border_raise(bd);
++
++ /* hide the border(s) above this one */
++ _policy_border_hide_above(bd);
++
++ /* focus the border */
++ e_border_focus_set(bd, 1, 1);
+ }
+
+@@ -1835,5 +1881,5 @@
+ h = kbd->border->h;
+
+- /* adjust Y for keyboard visibility because keyboard uses fx_offset */
++ /* adjust for keyboard visibility because keyboard uses fx_offset */
+ y = 0;
+ if (kbd->border->fx.y <= 0) y = kbd->border->y;
diff --git a/meta-efl/recipes-efl/e17/e-wm_svn.bb b/meta-efl/recipes-efl/e17/e-wm_svn.bb
index a6f56bd72e..af3f9cfe75 100644
--- a/meta-efl/recipes-efl/e17/e-wm_svn.bb
+++ b/meta-efl/recipes-efl/e17/e-wm_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "MIT BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=76de290eb3fdda12121830191c152a7d"
SRCNAME = "e"
PV = "0.16.999.060+svnr${SRCPV}"
-PR = "r6"
+PR = "r7"
SRCREV = "${EFL_SRCREV}"
inherit e update-alternatives gettext
@@ -14,6 +14,7 @@ SRC_URI = "\
${E_SVN}/trunk;module=${SRCNAME};protocol=http \
file://enlightenment_start.oe \
file://applications.menu \
+ file://Fix-Illume-Home-Button.diff \
"
EXTRA_OECONF = "\