SVN revision: 15670
This commit is contained in:
Carsten Haitzler 2005-07-08 08:43:27 +00:00
parent 78192f5973
commit edbe48cda4
8 changed files with 51 additions and 19 deletions

19
TODO
View File

@ -44,6 +44,7 @@ Some of the things (in very short form) that need to be done to E17...
ESSENTIAL FEATURES
-------------------------------------------------------------------------------
* be able to set window to skip window list (and remember this)
* emit signal to submenu entries if they have a submenu shown for them or not
* add window placement options like place at pointer
* shaded windows should not allow border changes by the user
@ -86,9 +87,9 @@ Some of the things (in very short form) that need to be done to E17...
* break out ipc to set names for desktops (and get names/list them)
* some sort of gui display of a desktop name (in the pager?)
* window icons should be able to be chosen if e eapp icon overrides netwm
icon or the other way around.
icon or the other way around (and remember this).
* transients should have option to always follow parent
(move/resize/raise/lower)
(move/resize/raise/lower) (and remember this).
* actions to make current zone different (warp mouse to there)
* actions to make the current container different
* titlebar/border expansion/gadget panel for modules to put window widgets in
@ -128,22 +129,12 @@ Some of the things (in very short form) that need to be done to E17...
* make xrandr support get rotation and store it
* add separate app menu bars at top of screen support
* add really nice "about" box with theme, authors credits list etc etc.
* "immortal" windows (e will not allow that window to be closed or will
refuse to exit as long as the immortal flags is set until it is unset to
stop users from doing silly things like logging out while important stuff
is happening in that window -a menu option for this woudl be nice)
* need to be able to remember client positons/etc.
* with remember need to be able lock in attributes so the app (or user or both)
cannot change them (eg this window is a fixed size and location - app cannot
ask for a new size or location)
* gui config tools for bg's, keybindings, etc. etc. etc.
* "control panel" app to launch the gui config tools
* make it possible to disable border buttons/actions (tell theme what is
disabled)
* modules need config executables with proper widgets (sliders, check boxes,
radio etc. not massive menus)
* remove module config menus (make them part of the module control panel and
as separate executables)
* modules need config dialogs instead of long winded menus
* remove module config menus (make them part of the module control panel etc.)
]]]
[[[

View File

@ -1878,6 +1878,22 @@ e_border_resize_cancel(void)
}
}
Evas_List *
e_border_immortal_windows_get(void)
{
Evas_List *list = NULL, *l;
for (l = borders; l; l = l->next)
{
E_Border *bd;
bd = l->data;
if (bd->lock_life)
list = evas_list_append(list, bd);
}
return list;
}
/* local subsystem functions */
static void
_e_border_free(E_Border *bd)
@ -5532,7 +5548,7 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
NEW_LOCK_MI(_("Close"), lock_close);
/* NEW_LOCK_MI(_("Focus In"), lock_focus_in);*/
/* NEW_LOCK_MI(_("Focus Out"), lock_focus_out);*/
/* NEW_LOCK_MI(_("Lifespan"), lock_life);*/
NEW_LOCK_MI(_("Lifespan"), lock_life);
m = e_menu_new();
bd->border_remember_menu = m;

View File

@ -511,6 +511,7 @@ EAPI Evas_List *e_border_lost_windows_get(E_Zone *zone);
EAPI void e_border_ping(E_Border *bd);
EAPI void e_border_move_cancel(void);
EAPI void e_border_resize_cancel(void);
EAPI Evas_List *e_border_immortal_windows_get(void);
extern EAPI int E_EVENT_BORDER_RESIZE;
extern EAPI int E_EVENT_BORDER_MOVE;

View File

@ -331,7 +331,7 @@ _e_int_menus_main_restart(void *data, E_Menu *m, E_Menu_Item *mi)
static void
_e_int_menus_main_exit(void *data, E_Menu *m, E_Menu_Item *mi)
{
ecore_main_loop_quit();
if (!e_util_immortal_check()) ecore_main_loop_quit();
}
static void

View File

@ -1028,7 +1028,7 @@ break;
REQ_NULL(HDL);
#elif (TYPE == E_WM_IN)
GENERIC(HDL);
ecore_main_loop_quit();
if (!e_util_immortal_check()) ecore_main_loop_quit();
END_GENERIC();
#elif (TYPE == E_REMOTE_IN)
#endif

View File

@ -923,7 +923,7 @@ static int
_e_main_cb_signal_exit(void *data __UNUSED__, int ev_type __UNUSED__, void *ev __UNUSED__)
{
/* called on ctrl-c, kill (pid) (also SIGINT, SIGTERM and SIGQIT) */
ecore_main_loop_quit();
if (!e_util_immortal_check()) ecore_main_loop_quit();
return 1;
}

View File

@ -235,3 +235,26 @@ e_util_both_str_empty(char *s1, char *s2)
if (empty == 2) return 1;
return 0;
}
int
e_util_immortal_check(void)
{
Evas_List *wins;
wins = e_border_immortal_windows_get();
if (wins)
{
e_error_dialog_show(_("Cannot exit becaose of immortal windows."),
_("Some windows are left with still around with\n"
"the Lifespan lock enabled. This means that\n"
"Enlightenment will not allow itself to exit\n"
"until these windows have been closed or have\n"
"the lifespan lock removed.\n"));
/* FIXME: should really display a list of these lifespan locked */
/* windows in a dialog and let the user disable their locks in */
/* this dialog */
evas_list_free(wins);
return 1;
}
return 0;
}

View File

@ -19,6 +19,7 @@ EAPI E_Zone *e_util_container_zone_number_get(int con_num, int zone_num);
EAPI int e_util_head_exec(int head, char *cmd);
EAPI int e_util_strcmp(char *s1, char *s2);
EAPI int e_util_both_str_empty(char *s1, char *s2);
EAPI int e_util_immortal_check(void);
#endif
#endif