summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-12-13 22:27:14 +0000
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-12-13 22:27:14 +0000
commite9037af87166790d600b0dfecd9532686f5470e1 (patch)
treeca1d5c5541b6c7431b5ce9631509e2f462b2218f
parent2fee3083191e0126c0855bf041b37c35c1d02385 (diff)
downloadenlightenment-e9037af87166790d600b0dfecd9532686f5470e1.tar.gz
menus - fix position of menus when broiught up with key bindings
on other screens the menus were ... wrong - coords were not right (previous commit)b ut then scroll-to-fix also moved them badly. this is now fixed too. @fix
-rw-r--r--src/bin/e_menu.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c
index 60dc12a27b..e680bcad2b 100644
--- a/src/bin/e_menu.c
+++ b/src/bin/e_menu.c
@@ -263,6 +263,7 @@ e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir
m->cur.y = y;
if ((m->cur.y + m->cur.h) > (m->zone->y + m->zone->h))
m->cur.y = y + h - m->cur.h;
+ e_menu_idler_before();
_e_menu_activate_first();
break;
@@ -270,6 +271,7 @@ e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir
_e_menu_realize(m);
m->cur.x = x + w;
m->cur.y = y;
+ e_menu_idler_before();
_e_menu_activate_first();
break;
@@ -279,6 +281,7 @@ e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir
if ((m->cur.x + m->cur.w) > (m->zone->x + m->zone->w))
m->cur.x = x + w - m->cur.w;
m->cur.y = y - m->cur.h;
+ e_menu_idler_before();
_e_menu_activate_last();
break;
@@ -290,24 +293,25 @@ e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir
m->cur.y = y + h;
if ((m->cur.y + m->cur.h) > (m->zone->y + m->zone->h))
m->cur.y = y + h - m->cur.h;
+ e_menu_idler_before();
_e_menu_activate_first();
break;
case E_MENU_POP_DIRECTION_AUTO:
- {
- int pos = 0;
-
- pos = _e_menu_auto_place(m, x, y, w, h);
- if (pos == 4)
- _e_menu_activate_last();
- else
- _e_menu_activate_first();
- }
+ {
+ int pos = 0;
+
+ pos = _e_menu_auto_place(m, x, y, w, h);
+ e_menu_idler_before();
+ 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_idler_before();
_e_menu_activate_first();
break;
}
@@ -343,12 +347,14 @@ e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int d
m->cur.y = y;
if ((m->cur.y + m->cur.h) > (m->zone->y + m->zone->h))
m->cur.y = y + h - m->cur.h;
+ e_menu_idler_before();
break;
case E_MENU_POP_DIRECTION_RIGHT:
_e_menu_realize(m);
m->cur.x = x + w;
m->cur.y = y;
+ e_menu_idler_before();
break;
case E_MENU_POP_DIRECTION_UP:
@@ -357,6 +363,7 @@ e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int d
if ((m->cur.x + m->cur.w) > (m->zone->x + m->zone->w))
m->cur.x = x + w - m->cur.w;
m->cur.y = y - m->cur.h;
+ e_menu_idler_before();
break;
case E_MENU_POP_DIRECTION_DOWN:
@@ -367,15 +374,18 @@ e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int d
m->cur.y = y + h;
if ((m->cur.y + m->cur.h) > (m->zone->y + m->zone->h))
m->cur.y = y + h - m->cur.h;
+ e_menu_idler_before();
break;
case E_MENU_POP_DIRECTION_AUTO:
+ e_menu_idler_before();
_e_menu_auto_place(m, x, y, w, h);
break;
default:
m->cur.x = x + w;
m->cur.y = y + h;
+ e_menu_idler_before();
break;
}
pmi = _e_menu_item_active_get();
@@ -413,6 +423,7 @@ e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir)
m->cur.y = y;
if ((m->cur.y + m->cur.h) > (m->zone->y + m->zone->h))
m->cur.y = y + h - m->cur.h;
+ e_menu_idler_before();
_e_menu_activate_first();
break;
@@ -420,6 +431,7 @@ e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir)
_e_menu_realize(m);
m->cur.x = x + w;
m->cur.y = y;
+ e_menu_idler_before();
_e_menu_activate_first();
break;
@@ -429,6 +441,7 @@ e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir)
if ((m->cur.x + m->cur.w) > (m->zone->x + m->zone->w))
m->cur.x = x + w - m->cur.w;
m->cur.y = y - m->cur.h;
+ e_menu_idler_before();
_e_menu_activate_last();
break;
@@ -440,16 +453,19 @@ e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir)
m->cur.y = y + h;
if ((m->cur.y + m->cur.h) > (m->zone->y + m->zone->h))
m->cur.y = y + h - m->cur.h;
+ e_menu_idler_before();
_e_menu_activate_first();
break;
case E_MENU_POP_DIRECTION_AUTO:
+ e_menu_idler_before();
_e_menu_auto_place(m, x, y, w, h);
break;
default:
m->cur.x = x + w;
m->cur.y = y + h;
+ e_menu_idler_before();
break;
}
pmi = _e_menu_item_active_get();