From e9037af87166790d600b0dfecd9532686f5470e1 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Sun, 13 Dec 2020 22:27:14 +0000 Subject: [PATCH] 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 --- src/bin/e_menu.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 60dc12a27..e680bcad2 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; + { + 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(); - } + 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();