diff --git a/TODO b/TODO index e52b32c1e..ced1e2545 100644 --- a/TODO +++ b/TODO @@ -12,18 +12,12 @@ Some of the things (in very short form) that need to be done to E17... doesn't have any effect. * BUG: menu for gadgets while up and if it changes apearance will segv because its reference to the gcc is wrong as the gcc was destroyed and re-created -* BUG: if mouse is already grabbed when exebuf or winlist are activated - all - shit hits the fan after that (box can't be dismissed, keyboard grab fails - etc. etc.) * BUG: set any specific border type and when you maximize the border changes to default (unless its borderless) * BUG: change exe name in basic mode in eap editor and icon vanishes (don't extract existing icon and write out to tmp .png while rebuilding). -* BUG: resolution (xrandr) changes seem to screw the shelf up a bit. * BUG: ghost windows happen if windows close when on another desktop or if windows are very short-lived -* BUG: openoffice 2's impress presentation fullscreen has sizing and - configuration issues. * BUG: openoffice 2 when displaying a presentation with xinerama (multiple zones) weird things happen (the presentation doesnt display - it seemingly attaches to the 2nd zone, not the first), crashes have been reported too. diff --git a/src/bin/e_exebuf.c b/src/bin/e_exebuf.c index 6a69cf5a7..ef5428712 100644 --- a/src/bin/e_exebuf.c +++ b/src/bin/e_exebuf.c @@ -137,7 +137,12 @@ e_exebuf_show(E_Zone *zone) input_window = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1); ecore_x_window_show(input_window); - e_grabinput_get(input_window, 0, input_window); + if (!e_grabinput_get(input_window, 0, input_window)) + { + ecore_x_window_del(input_window); + input_window = 0; + return 0; + } x = zone->x + 20; y = zone->y + 20 + ((zone->h - 20 - 20 - 20) / 2); diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 2c79155e9..bfa482011 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -1667,7 +1667,12 @@ _e_menu_activate_internal(E_Menu *m, E_Zone *zone) zone->x, zone->y, zone->w, zone->h); ecore_x_window_show(_e_menu_win); - e_grabinput_get(_e_menu_win, 1, _e_menu_win); + if (!e_grabinput_get(_e_menu_win, 1, _e_menu_win)) + { + ecore_x_window_del(_e_menu_win); + _e_menu_win = 0; + return; + } } if ((m->zone) && (m->zone->container != zone->container)) { @@ -1691,16 +1696,16 @@ _e_menu_activate_internal(E_Menu *m, E_Zone *zone) } /* the foreign menu items */ cat = evas_hash_find(_e_menu_categories, m->category); - if(cat) - { - for(l = cat->callbacks; l; l = l->next) - { - E_Menu_Category_Callback *cb; - - cb = l->data; - if(cb->create) cb->create(m, cat->data, cb->data); - } - } + if (cat) + { + for (l = cat->callbacks; l; l = l->next) + { + E_Menu_Category_Callback *cb; + + cb = l->data; + if (cb->create) cb->create(m, cat->data, cb->data); + } + } m->cur.visible = 1; m->zone = zone; } diff --git a/src/bin/e_winlist.c b/src/bin/e_winlist.c index 08c4ed2c0..721ebcd04 100644 --- a/src/bin/e_winlist.c +++ b/src/bin/e_winlist.c @@ -86,7 +86,12 @@ e_winlist_show(E_Zone *zone) input_window = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1); ecore_x_window_show(input_window); - e_grabinput_get(input_window, 0, input_window); + if (!e_grabinput_get(input_window, 0, input_window)) + { + ecore_x_window_del(input_window); + input_window = 0; + return 0; + } w = (double)zone->w * e_config->winlist_pos_size_w; if (w > e_config->winlist_pos_max_w) w = e_config->winlist_pos_max_w;