Patch from rubenbb to fix ticket #562 (dpms being turned off by
fullscreen windows). I modified this patch slightly. Removed some unused handlers. limits.h is already included in e.h, so no need to reinclude it. Fixed formatting. SVN revision: 50356
This commit is contained in:
parent
3bc9491c92
commit
5a7b450c04
|
@ -699,6 +699,7 @@ EAPI void
|
||||||
e_border_desk_set(E_Border *bd, E_Desk *desk)
|
e_border_desk_set(E_Border *bd, E_Desk *desk)
|
||||||
{
|
{
|
||||||
E_Event_Border_Desk_Set *ev;
|
E_Event_Border_Desk_Set *ev;
|
||||||
|
E_Desk *old_desk;
|
||||||
|
|
||||||
E_OBJECT_CHECK(bd);
|
E_OBJECT_CHECK(bd);
|
||||||
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
|
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
|
||||||
|
@ -711,6 +712,7 @@ e_border_desk_set(E_Border *bd, E_Desk *desk)
|
||||||
bd->desk->fullscreen_borders--;
|
bd->desk->fullscreen_borders--;
|
||||||
desk->fullscreen_borders++;
|
desk->fullscreen_borders++;
|
||||||
}
|
}
|
||||||
|
old_desk = bd->desk;
|
||||||
bd->desk = desk;
|
bd->desk = desk;
|
||||||
e_border_zone_set(bd, desk->zone);
|
e_border_zone_set(bd, desk->zone);
|
||||||
|
|
||||||
|
@ -721,8 +723,8 @@ e_border_desk_set(E_Border *bd, E_Desk *desk)
|
||||||
ev->border = bd;
|
ev->border = bd;
|
||||||
e_object_ref(E_OBJECT(bd));
|
e_object_ref(E_OBJECT(bd));
|
||||||
// e_object_breadcrumb_add(E_OBJECT(bd), "border_desk_set_event");
|
// e_object_breadcrumb_add(E_OBJECT(bd), "border_desk_set_event");
|
||||||
ev->desk = desk;
|
ev->desk = old_desk;
|
||||||
e_object_ref(E_OBJECT(desk));
|
e_object_ref(E_OBJECT(old_desk));
|
||||||
ecore_event_add(E_EVENT_BORDER_DESK_SET, ev, _e_border_event_border_desk_set_free, NULL);
|
ecore_event_add(E_EVENT_BORDER_DESK_SET, ev, _e_border_event_border_desk_set_free, NULL);
|
||||||
|
|
||||||
if (bd->ignore_first_unmap != 1)
|
if (bd->ignore_first_unmap != 1)
|
||||||
|
@ -2458,6 +2460,7 @@ e_border_iconify(E_Border *bd)
|
||||||
{
|
{
|
||||||
bd->iconic = 1;
|
bd->iconic = 1;
|
||||||
e_border_hide(bd, 1);
|
e_border_hide(bd, 1);
|
||||||
|
if (bd->fullscreen) bd->desk->fullscreen_borders--;
|
||||||
edje_object_signal_emit(bd->bg_object, "e,action,iconify", "e");
|
edje_object_signal_emit(bd->bg_object, "e,action,iconify", "e");
|
||||||
}
|
}
|
||||||
iconic = 1;
|
iconic = 1;
|
||||||
|
@ -2498,6 +2501,7 @@ e_border_uniconify(E_Border *bd)
|
||||||
if (bd->iconic)
|
if (bd->iconic)
|
||||||
{
|
{
|
||||||
bd->iconic = 0;
|
bd->iconic = 0;
|
||||||
|
if (bd->fullscreen) bd->desk->fullscreen_borders++;
|
||||||
desk = e_desk_current_get(bd->desk->zone);
|
desk = e_desk_current_get(bd->desk->zone);
|
||||||
e_border_desk_set(bd, desk);
|
e_border_desk_set(bd, desk);
|
||||||
e_border_raise(bd);
|
e_border_raise(bd);
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
#ifdef HAVE_PAM
|
#ifdef HAVE_PAM
|
||||||
# include <security/pam_appl.h>
|
# include <security/pam_appl.h>
|
||||||
# include <pwd.h>
|
# include <pwd.h>
|
||||||
# include <limits.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define E_DESKLOCK_STATE_DEFAULT 0
|
#define E_DESKLOCK_STATE_DEFAULT 0
|
||||||
|
@ -38,21 +37,23 @@ struct _E_Desklock_Data
|
||||||
char passwd[PASSWD_LEN];
|
char passwd[PASSWD_LEN];
|
||||||
int state;
|
int state;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef HAVE_PAM
|
#ifdef HAVE_PAM
|
||||||
struct _E_Desklock_Auth
|
struct _E_Desklock_Auth
|
||||||
{
|
{
|
||||||
struct {
|
struct
|
||||||
struct pam_conv conv;
|
{
|
||||||
pam_handle_t *handle;
|
struct pam_conv conv;
|
||||||
} pam;
|
pam_handle_t *handle;
|
||||||
|
} pam;
|
||||||
|
|
||||||
char user[PATH_MAX];
|
char user[PATH_MAX];
|
||||||
char passwd[PATH_MAX];
|
char passwd[PATH_MAX];
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static E_Desklock_Data *edd = NULL;
|
static E_Desklock_Data *edd = NULL;
|
||||||
static E_Zone *last_active_zone = NULL;
|
static E_Zone *last_active_zone = NULL;
|
||||||
#ifdef HAVE_PAM
|
#ifdef HAVE_PAM
|
||||||
static Ecore_Event_Handler *_e_desklock_exit_handler = NULL;
|
static Ecore_Event_Handler *_e_desklock_exit_handler = NULL;
|
||||||
static pid_t _e_desklock_child_pid = -1;
|
static pid_t _e_desklock_child_pid = -1;
|
||||||
|
@ -66,14 +67,16 @@ static E_Dialog *_e_desklock_ask_presentation_dia = NULL;
|
||||||
static int _e_desklock_ask_presentation_count = 0;
|
static int _e_desklock_ask_presentation_count = 0;
|
||||||
static Ecore_Event_Handler *_e_desklock_handler_border_fullscreen = NULL;
|
static Ecore_Event_Handler *_e_desklock_handler_border_fullscreen = NULL;
|
||||||
static Ecore_Event_Handler *_e_desklock_handler_border_unfullscreen = NULL;
|
static Ecore_Event_Handler *_e_desklock_handler_border_unfullscreen = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_desklock_handler_border_remove = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_desklock_handler_border_iconify = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_desklock_handler_border_uniconify = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_desklock_handler_border_desk_set = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_desklock_handler_desk_show = NULL;
|
||||||
static int _e_desklock_fullscreen_count = 0;
|
static int _e_desklock_fullscreen_count = 0;
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
|
|
||||||
static Eina_Bool _e_desklock_cb_key_down(void *data, int type, void *event);
|
static Eina_Bool _e_desklock_cb_key_down(void *data, int type, void *event);
|
||||||
static Eina_Bool _e_desklock_cb_mouse_down(void *data, int type, void *event);
|
|
||||||
static Eina_Bool _e_desklock_cb_mouse_up(void *data, int type, void *event);
|
|
||||||
static Eina_Bool _e_desklock_cb_mouse_wheel(void *data, int type, void *event);
|
|
||||||
static Eina_Bool _e_desklock_cb_mouse_move(void *data, int type, void *event);
|
static Eina_Bool _e_desklock_cb_mouse_move(void *data, int type, void *event);
|
||||||
static Eina_Bool _e_desklock_cb_custom_desklock_exit(void *data, int type, void *event);
|
static Eina_Bool _e_desklock_cb_custom_desklock_exit(void *data, int type, void *event);
|
||||||
static Eina_Bool _e_desklock_cb_idle_poller(void *data);
|
static Eina_Bool _e_desklock_cb_idle_poller(void *data);
|
||||||
|
@ -82,7 +85,7 @@ static void _e_desklock_null(void);
|
||||||
static void _e_desklock_passwd_update(void);
|
static void _e_desklock_passwd_update(void);
|
||||||
static void _e_desklock_backspace(void);
|
static void _e_desklock_backspace(void);
|
||||||
static void _e_desklock_delete(void);
|
static void _e_desklock_delete(void);
|
||||||
static int _e_desklock_zone_num_get(void);
|
static int _e_desklock_zone_num_get(void);
|
||||||
static int _e_desklock_check_auth(void);
|
static int _e_desklock_check_auth(void);
|
||||||
static void _e_desklock_state_set(int state);
|
static void _e_desklock_state_set(int state);
|
||||||
|
|
||||||
|
@ -96,8 +99,9 @@ static char *_desklock_auth_get_current_host(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void _e_desklock_ask_presentation_mode(void);
|
static void _e_desklock_ask_presentation_mode(void);
|
||||||
static Eina_Bool _e_desklock_handler_border_fullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__);
|
static Eina_Bool _e_desklock_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||||
static Eina_Bool _e_desklock_handler_border_unfullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__);
|
static Eina_Bool _e_desklock_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||||
|
static Eina_Bool _e_desklock_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||||
|
|
||||||
EAPI int E_EVENT_DESKLOCK = 0;
|
EAPI int E_EVENT_DESKLOCK = 0;
|
||||||
|
|
||||||
|
@ -110,11 +114,31 @@ e_desklock_init(void)
|
||||||
|
|
||||||
if (!_e_desklock_handler_border_fullscreen)
|
if (!_e_desklock_handler_border_fullscreen)
|
||||||
_e_desklock_handler_border_fullscreen = ecore_event_handler_add
|
_e_desklock_handler_border_fullscreen = ecore_event_handler_add
|
||||||
(E_EVENT_BORDER_FULLSCREEN, _e_desklock_handler_border_fullscreen_cb, NULL);
|
(E_EVENT_BORDER_FULLSCREEN, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
if (!_e_desklock_handler_border_unfullscreen)
|
if (!_e_desklock_handler_border_unfullscreen)
|
||||||
_e_desklock_handler_border_unfullscreen = ecore_event_handler_add
|
_e_desklock_handler_border_unfullscreen = ecore_event_handler_add
|
||||||
(E_EVENT_BORDER_UNFULLSCREEN, _e_desklock_handler_border_unfullscreen_cb, NULL);
|
(E_EVENT_BORDER_UNFULLSCREEN, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_desklock_handler_border_remove)
|
||||||
|
_e_desklock_handler_border_remove = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_REMOVE, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_desklock_handler_border_iconify)
|
||||||
|
_e_desklock_handler_border_iconify = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_ICONIFY, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_desklock_handler_border_uniconify)
|
||||||
|
_e_desklock_handler_border_uniconify = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_UNICONIFY, _e_desklock_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_desklock_handler_border_desk_set)
|
||||||
|
_e_desklock_handler_border_desk_set = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_DESK_SET, _e_desklock_handler_border_desk_set_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_desklock_handler_desk_show)
|
||||||
|
_e_desklock_handler_desk_show = ecore_event_handler_add
|
||||||
|
(E_EVENT_DESK_SHOW, _e_desklock_handler_desk_show_cb, NULL);
|
||||||
|
|
||||||
if (e_config->desklock_background)
|
if (e_config->desklock_background)
|
||||||
e_filereg_register(e_config->desklock_background);
|
e_filereg_register(e_config->desklock_background);
|
||||||
|
@ -139,6 +163,36 @@ e_desklock_shutdown(void)
|
||||||
_e_desklock_handler_border_unfullscreen = NULL;
|
_e_desklock_handler_border_unfullscreen = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_e_desklock_handler_border_remove)
|
||||||
|
{
|
||||||
|
ecore_event_handler_del(_e_desklock_handler_border_remove);
|
||||||
|
_e_desklock_handler_border_remove = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_e_desklock_handler_border_iconify)
|
||||||
|
{
|
||||||
|
ecore_event_handler_del(_e_desklock_handler_border_iconify);
|
||||||
|
_e_desklock_handler_border_iconify = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_e_desklock_handler_border_uniconify)
|
||||||
|
{
|
||||||
|
ecore_event_handler_del(_e_desklock_handler_border_uniconify);
|
||||||
|
_e_desklock_handler_border_uniconify = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_e_desklock_handler_border_desk_set)
|
||||||
|
{
|
||||||
|
ecore_event_handler_del(_e_desklock_handler_border_desk_set);
|
||||||
|
_e_desklock_handler_border_desk_set = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_e_desklock_handler_desk_show)
|
||||||
|
{
|
||||||
|
ecore_event_handler_del(_e_desklock_handler_desk_show);
|
||||||
|
_e_desklock_handler_desk_show = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
e_desklock_hide();
|
e_desklock_hide();
|
||||||
if (e_config->desklock_background)
|
if (e_config->desklock_background)
|
||||||
e_filereg_deregister(e_config->desklock_background);
|
e_filereg_deregister(e_config->desklock_background);
|
||||||
|
@ -156,11 +210,9 @@ _user_wallpaper_get(void)
|
||||||
return e_config->desktop_default_background;
|
return e_config->desktop_default_background;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cdbg)
|
EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cdbg)
|
||||||
if (cdbg->file)
|
if (cdbg->file) return cdbg->file;
|
||||||
return cdbg->file;
|
|
||||||
|
|
||||||
return e_theme_edje_file_get("base/theme/desklock",
|
return e_theme_edje_file_get("base/theme/desklock", "e/desklock/background");
|
||||||
"e/desklock/background");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI int
|
EAPI int
|
||||||
|
@ -175,24 +227,24 @@ e_desklock_show_autolocked(void)
|
||||||
EAPI int
|
EAPI int
|
||||||
e_desklock_show(void)
|
e_desklock_show(void)
|
||||||
{
|
{
|
||||||
Eina_List *managers, *l, *l2, *l3;
|
Eina_List *managers, *l, *l2, *l3;
|
||||||
E_Manager *man;
|
E_Manager *man;
|
||||||
E_Desklock_Popup_Data *edp;
|
E_Desklock_Popup_Data *edp;
|
||||||
Evas_Coord mw, mh;
|
Evas_Coord mw, mh;
|
||||||
E_Zone *current_zone;
|
E_Zone *current_zone;
|
||||||
int zone_counter;
|
int zone_counter, total_zone_num;
|
||||||
int total_zone_num;
|
E_Event_Desklock *ev;
|
||||||
E_Event_Desklock *ev;
|
|
||||||
|
|
||||||
if (_e_custom_desklock_exe) return 0;
|
if (_e_custom_desklock_exe) return 0;
|
||||||
|
|
||||||
if (e_config->desklock_use_custom_desklock)
|
if (e_config->desklock_use_custom_desklock)
|
||||||
{
|
{
|
||||||
_e_custom_desklock_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
|
_e_custom_desklock_exe_handler =
|
||||||
_e_desklock_cb_custom_desklock_exit,
|
ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
|
||||||
NULL);
|
_e_desklock_cb_custom_desklock_exit, NULL);
|
||||||
e_util_library_path_strip();
|
e_util_library_path_strip();
|
||||||
_e_custom_desklock_exe = ecore_exe_run(e_config->desklock_custom_desklock_cmd, NULL);
|
_e_custom_desklock_exe =
|
||||||
|
ecore_exe_run(e_config->desklock_custom_desklock_cmd, NULL);
|
||||||
e_util_library_path_restore();
|
e_util_library_path_restore();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -225,8 +277,8 @@ e_desklock_show(void)
|
||||||
|
|
||||||
edd = E_NEW(E_Desklock_Data, 1);
|
edd = E_NEW(E_Desklock_Data, 1);
|
||||||
if (!edd) return 0;
|
if (!edd) return 0;
|
||||||
edd->elock_wnd = ecore_x_window_input_new(e_manager_current_get()->root,
|
edd->elock_wnd =
|
||||||
0, 0, 1, 1);
|
ecore_x_window_input_new(e_manager_current_get()->root, 0, 0, 1, 1);
|
||||||
ecore_x_window_show(edd->elock_wnd);
|
ecore_x_window_show(edd->elock_wnd);
|
||||||
managers = e_manager_list();
|
managers = e_manager_list();
|
||||||
if (!e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd))
|
if (!e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd))
|
||||||
|
@ -268,8 +320,7 @@ e_desklock_show(void)
|
||||||
"has grabbed either the keyboard or the mouse or both<br>"
|
"has grabbed either the keyboard or the mouse or both<br>"
|
||||||
"and their grab is unable to be broken."));
|
"and their grab is unable to be broken."));
|
||||||
ecore_x_window_free(edd->elock_wnd);
|
ecore_x_window_free(edd->elock_wnd);
|
||||||
free(edd);
|
E_FREE(edd);
|
||||||
edd = NULL;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
works:
|
works:
|
||||||
|
@ -282,9 +333,11 @@ e_desklock_show(void)
|
||||||
EINA_LIST_FOREACH(managers, l, man)
|
EINA_LIST_FOREACH(managers, l, man)
|
||||||
{
|
{
|
||||||
E_Container *con;
|
E_Container *con;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(man->containers, l2, con)
|
EINA_LIST_FOREACH(man->containers, l2, con)
|
||||||
{
|
{
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(con->zones, l3, zone)
|
EINA_LIST_FOREACH(con->zones, l3, zone)
|
||||||
{
|
{
|
||||||
edp = E_NEW(E_Desklock_Popup_Data, 1);
|
edp = E_NEW(E_Desklock_Popup_Data, 1);
|
||||||
|
@ -303,9 +356,9 @@ e_desklock_show(void)
|
||||||
if ((!e_config->desklock_background) ||
|
if ((!e_config->desklock_background) ||
|
||||||
(!strcmp(e_config->desklock_background, "theme_desklock_background")))
|
(!strcmp(e_config->desklock_background, "theme_desklock_background")))
|
||||||
{
|
{
|
||||||
e_theme_edje_object_set(edp->bg_object,
|
e_theme_edje_object_set(edp->bg_object,
|
||||||
"base/theme/desklock",
|
"base/theme/desklock",
|
||||||
"e/desklock/background");
|
"e/desklock/background");
|
||||||
}
|
}
|
||||||
else if (!strcmp(e_config->desklock_background, "theme_background"))
|
else if (!strcmp(e_config->desklock_background, "theme_background"))
|
||||||
{
|
{
|
||||||
|
@ -324,18 +377,18 @@ e_desklock_show(void)
|
||||||
|
|
||||||
if (e_util_edje_collection_exists(f, "e/desklock/background"))
|
if (e_util_edje_collection_exists(f, "e/desklock/background"))
|
||||||
{
|
{
|
||||||
edje_object_file_set(edp->bg_object, f,
|
edje_object_file_set(edp->bg_object, f,
|
||||||
"e/desklock/background");
|
"e/desklock/background");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!edje_object_file_set(edp->bg_object,
|
if (!edje_object_file_set(edp->bg_object,
|
||||||
f, "e/desktop/background"))
|
f, "e/desktop/background"))
|
||||||
{
|
{
|
||||||
edje_object_file_set(edp->bg_object,
|
edje_object_file_set(edp->bg_object,
|
||||||
e_theme_edje_file_get("base/theme/desklock",
|
e_theme_edje_file_get("base/theme/desklock",
|
||||||
"e/desklock/background"),
|
"e/desklock/background"),
|
||||||
"e/desklock/background");
|
"e/desklock/background");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -374,7 +427,6 @@ e_desklock_show(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
evas_object_show(edp->login_box);
|
evas_object_show(edp->login_box);
|
||||||
/**/
|
|
||||||
|
|
||||||
e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object);
|
e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object);
|
||||||
evas_event_thaw(edp->popup_wnd->evas);
|
evas_event_thaw(edp->popup_wnd->evas);
|
||||||
|
@ -389,24 +441,20 @@ e_desklock_show(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* handlers */
|
/* handlers */
|
||||||
edd->handlers = eina_list_append(edd->handlers,
|
edd->handlers =
|
||||||
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
|
eina_list_append(edd->handlers,
|
||||||
_e_desklock_cb_key_down, NULL));
|
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
|
||||||
edd->handlers = eina_list_append(edd->handlers,
|
_e_desklock_cb_key_down, NULL));
|
||||||
ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN,
|
|
||||||
_e_desklock_cb_mouse_down, NULL));
|
if ((total_zone_num > 1) && (e_config->desklock_login_box_zone == -2))
|
||||||
edd->handlers = eina_list_append(edd->handlers,
|
{
|
||||||
ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP,
|
edd->handlers =
|
||||||
_e_desklock_cb_mouse_up, NULL));
|
eina_list_append(edd->handlers,
|
||||||
edd->handlers = eina_list_append(edd->handlers,
|
ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE,
|
||||||
ecore_event_handler_add(ECORE_EVENT_MOUSE_WHEEL,
|
_e_desklock_cb_mouse_move,
|
||||||
_e_desklock_cb_mouse_wheel,
|
NULL));
|
||||||
NULL));
|
}
|
||||||
if ((total_zone_num > 1) && (e_config->desklock_login_box_zone == -2))
|
|
||||||
edd->handlers = eina_list_append(edd->handlers,
|
|
||||||
ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE,
|
|
||||||
_e_desklock_cb_mouse_move,
|
|
||||||
NULL));
|
|
||||||
_e_desklock_passwd_update();
|
_e_desklock_passwd_update();
|
||||||
|
|
||||||
ev = E_NEW(E_Event_Desklock, 1);
|
ev = E_NEW(E_Event_Desklock, 1);
|
||||||
|
@ -419,7 +467,7 @@ EAPI void
|
||||||
e_desklock_hide(void)
|
e_desklock_hide(void)
|
||||||
{
|
{
|
||||||
E_Desklock_Popup_Data *edp;
|
E_Desklock_Popup_Data *edp;
|
||||||
E_Event_Desklock *ev;
|
E_Event_Desklock *ev;
|
||||||
|
|
||||||
if ((!edd) && (!_e_custom_desklock_exe)) return;
|
if ((!edd) && (!_e_custom_desklock_exe)) return;
|
||||||
|
|
||||||
|
@ -483,7 +531,9 @@ static Eina_Bool
|
||||||
_e_desklock_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
_e_desklock_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
Ecore_Event_Key *ev = event;
|
Ecore_Event_Key *ev = event;
|
||||||
if (ev->window != edd->elock_wnd || edd->state == E_DESKLOCK_STATE_CHECKING) return 1;
|
|
||||||
|
if ((ev->window != edd->elock_wnd) ||
|
||||||
|
(edd->state == E_DESKLOCK_STATE_CHECKING)) return 1;
|
||||||
|
|
||||||
if (!strcmp(ev->key, "Escape"))
|
if (!strcmp(ev->key, "Escape"))
|
||||||
;
|
;
|
||||||
|
@ -495,7 +545,8 @@ _e_desklock_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
_e_desklock_backspace();
|
_e_desklock_backspace();
|
||||||
else if (!strcmp(ev->key, "Delete"))
|
else if (!strcmp(ev->key, "Delete"))
|
||||||
_e_desklock_delete();
|
_e_desklock_delete();
|
||||||
else if (!strcmp(ev->key, "u") && (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL))
|
else if ((!strcmp(ev->key, "u") &&
|
||||||
|
(ev->modifiers & ECORE_EVENT_MODIFIER_CTRL)))
|
||||||
_e_desklock_null();
|
_e_desklock_null();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -513,24 +564,6 @@ _e_desklock_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_e_desklock_cb_mouse_down(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
|
||||||
{
|
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_e_desklock_cb_mouse_up(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
|
||||||
{
|
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_e_desklock_cb_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
|
||||||
{
|
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_desklock_cb_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
_e_desklock_cb_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||||
{
|
{
|
||||||
|
@ -570,10 +603,8 @@ _e_desklock_passwd_update(void)
|
||||||
*pp = 0;
|
*pp = 0;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp)
|
EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp)
|
||||||
{
|
edje_object_part_text_set(edp->login_box, "e.text.password",
|
||||||
edje_object_part_text_set(edp->login_box, "e.text.password",
|
passwd_hidden);
|
||||||
passwd_hidden);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -620,9 +651,7 @@ _e_desklock_zone_num_get(void)
|
||||||
{
|
{
|
||||||
E_Container *con;
|
E_Container *con;
|
||||||
EINA_LIST_FOREACH(man->containers, l2, con)
|
EINA_LIST_FOREACH(man->containers, l2, con)
|
||||||
{
|
num += eina_list_count(con->zones);
|
||||||
num += eina_list_count(con->zones);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return num;
|
return num;
|
||||||
|
@ -694,6 +723,7 @@ static Eina_Bool
|
||||||
_e_desklock_cb_exit(void *data __UNUSED__, int type __UNUSED__, void *event)
|
_e_desklock_cb_exit(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
Ecore_Exe_Event_Del *ev = event;
|
Ecore_Exe_Event_Del *ev = event;
|
||||||
|
|
||||||
if (ev->pid == _e_desklock_child_pid)
|
if (ev->pid == _e_desklock_child_pid)
|
||||||
{
|
{
|
||||||
_e_desklock_child_pid = -1;
|
_e_desklock_child_pid = -1;
|
||||||
|
@ -723,7 +753,8 @@ _e_desklock_cb_exit(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
/* security - null out passwd string once we are done with it */
|
/* security - null out passwd string once we are done with it */
|
||||||
_e_desklock_null();
|
_e_desklock_null();
|
||||||
}
|
}
|
||||||
if (_e_desklock_exit_handler) ecore_event_handler_del(_e_desklock_exit_handler);
|
if (_e_desklock_exit_handler)
|
||||||
|
ecore_event_handler_del(_e_desklock_exit_handler);
|
||||||
_e_desklock_exit_handler = NULL;
|
_e_desklock_exit_handler = NULL;
|
||||||
}
|
}
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
|
@ -845,16 +876,16 @@ _desklock_pam_init(E_Desklock_Auth *da)
|
||||||
|
|
||||||
if ((pamerr = pam_set_item(da->pam.handle, PAM_USER, current_user)) != PAM_SUCCESS)
|
if ((pamerr = pam_set_item(da->pam.handle, PAM_USER, current_user)) != PAM_SUCCESS)
|
||||||
{
|
{
|
||||||
free(current_user);
|
free(current_user);
|
||||||
return pamerr;
|
return pamerr;
|
||||||
}
|
}
|
||||||
|
|
||||||
current_host = _desklock_auth_get_current_host();
|
current_host = _desklock_auth_get_current_host();
|
||||||
if ((pamerr = pam_set_item(da->pam.handle, PAM_RHOST, current_host)) != PAM_SUCCESS)
|
if ((pamerr = pam_set_item(da->pam.handle, PAM_RHOST, current_host)) != PAM_SUCCESS)
|
||||||
{
|
{
|
||||||
free(current_user);
|
free(current_user);
|
||||||
free(current_host);
|
free(current_host);
|
||||||
return pamerr;
|
return pamerr;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(current_user);
|
free(current_user);
|
||||||
|
@ -871,8 +902,7 @@ _desklock_auth_pam_conv(int num_msg, const struct pam_message **msg, struct pam_
|
||||||
|
|
||||||
reply = (struct pam_response *)malloc(sizeof(struct pam_response) *num_msg);
|
reply = (struct pam_response *)malloc(sizeof(struct pam_response) *num_msg);
|
||||||
|
|
||||||
if (!reply)
|
if (!reply) return PAM_CONV_ERR;
|
||||||
return PAM_CONV_ERR;
|
|
||||||
|
|
||||||
for (replies = 0; replies < num_msg; replies++)
|
for (replies = 0; replies < num_msg; replies++)
|
||||||
{
|
{
|
||||||
|
@ -911,6 +941,7 @@ static Eina_Bool
|
||||||
_e_desklock_cb_custom_desklock_exit(void *data __UNUSED__, int type __UNUSED__, void *event)
|
_e_desklock_cb_custom_desklock_exit(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
Ecore_Exe_Event_Del *ev = event;
|
Ecore_Exe_Event_Del *ev = event;
|
||||||
|
|
||||||
if (ev->exe != _e_custom_desklock_exe) return ECORE_CALLBACK_PASS_ON;
|
if (ev->exe != _e_custom_desklock_exe) return ECORE_CALLBACK_PASS_ON;
|
||||||
|
|
||||||
if (ev->exit_code != 0)
|
if (ev->exit_code != 0)
|
||||||
|
@ -1032,62 +1063,70 @@ _e_desklock_ask_presentation_mode(void)
|
||||||
E_Container *con;
|
E_Container *con;
|
||||||
E_Dialog *dia;
|
E_Dialog *dia;
|
||||||
|
|
||||||
if (_e_desklock_ask_presentation_dia)
|
if (_e_desklock_ask_presentation_dia) return;
|
||||||
return;
|
|
||||||
|
|
||||||
man = e_manager_current_get();
|
if (!(man = e_manager_current_get())) return;
|
||||||
if (!man) return;
|
if (!(con = e_container_current_get(man))) return;
|
||||||
con = e_container_current_get(man);
|
if (!(dia = e_dialog_new(con, "E", "_desklock_ask_presentation"))) return;
|
||||||
if (!con) return;
|
|
||||||
dia = e_dialog_new(con, "E", "_desklock_ask_presentation");
|
|
||||||
if (!dia) return;
|
|
||||||
|
|
||||||
e_dialog_title_set(dia, _("Activate Presentation Mode?"));
|
e_dialog_title_set(dia, _("Activate Presentation Mode?"));
|
||||||
e_dialog_icon_set(dia, "dialog-ask", 64);
|
e_dialog_icon_set(dia, "dialog-ask", 64);
|
||||||
e_dialog_text_set
|
e_dialog_text_set(dia,
|
||||||
(dia,
|
_("You unlocked desktop too fast.<br><br>"
|
||||||
_("You unlocked desktop too fast.<br><br>"
|
"Would you like to enable <b>presentation</b> mode and "
|
||||||
"Would you like to enable <b>presentation</b> mode and "
|
"temporarily disable screen saver, lock and power saving?"));
|
||||||
"temporarily disable screen saver, lock and power saving?"));
|
|
||||||
|
|
||||||
e_object_del_attach_func_set
|
e_object_del_attach_func_set(E_OBJECT(dia),
|
||||||
(E_OBJECT(dia), _e_desklock_ask_presentation_del);
|
_e_desklock_ask_presentation_del);
|
||||||
e_dialog_button_add
|
e_dialog_button_add(dia, _("Yes"), NULL,
|
||||||
(dia, _("Yes"), NULL, _e_desklock_ask_presentation_yes, NULL);
|
_e_desklock_ask_presentation_yes, NULL);
|
||||||
e_dialog_button_add
|
e_dialog_button_add(dia, _("No"), NULL,
|
||||||
(dia, _("No"), NULL, _e_desklock_ask_presentation_no, NULL);
|
_e_desklock_ask_presentation_no, NULL);
|
||||||
e_dialog_button_add
|
e_dialog_button_add(dia, _("No, but increase timeout"), NULL,
|
||||||
(dia, _("No, but increase timeout"), NULL,
|
_e_desklock_ask_presentation_no_increase, NULL);
|
||||||
_e_desklock_ask_presentation_no_increase, NULL);
|
e_dialog_button_add(dia, _("No, and stop asking"), NULL,
|
||||||
e_dialog_button_add
|
_e_desklock_ask_presentation_no_forever, NULL);
|
||||||
(dia, _("No, and stop asking"), NULL,
|
|
||||||
_e_desklock_ask_presentation_no_forever, NULL);
|
|
||||||
|
|
||||||
e_dialog_button_focus_num(dia, 0);
|
e_dialog_button_focus_num(dia, 0);
|
||||||
e_widget_list_homogeneous_set(dia->box_object, 0);
|
e_widget_list_homogeneous_set(dia->box_object, 0);
|
||||||
e_win_centered_set(dia->win, 1);
|
e_win_centered_set(dia->win, 1);
|
||||||
e_dialog_show(dia);
|
e_dialog_show(dia);
|
||||||
|
|
||||||
evas_object_event_callback_add
|
evas_object_event_callback_add(dia->bg_object, EVAS_CALLBACK_KEY_DOWN,
|
||||||
(dia->bg_object, EVAS_CALLBACK_KEY_DOWN,
|
_e_desklock_ask_presentation_key_down, dia);
|
||||||
_e_desklock_ask_presentation_key_down, dia);
|
|
||||||
|
|
||||||
_e_desklock_ask_presentation_dia = dia;
|
_e_desklock_ask_presentation_dia = dia;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_desklock_handler_border_fullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
_e_desklock_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
_e_desklock_fullscreen_count++;
|
E_Event_Border_Fullscreen *ev = event;
|
||||||
if (_e_desklock_fullscreen_count == 1) e_desklock_init();
|
|
||||||
|
_e_desklock_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||||
|
e_desklock_init();
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_desklock_handler_border_unfullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
_e_desklock_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
_e_desklock_fullscreen_count--;
|
E_Event_Border_Desk_Set *ev = event;
|
||||||
if (_e_desklock_fullscreen_count == 0) e_desklock_init();
|
|
||||||
else if (_e_desklock_fullscreen_count < 0) _e_desklock_fullscreen_count = 0;
|
if (ev->border->desk->visible)
|
||||||
|
_e_desklock_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||||
|
else if (ev->desk->visible)
|
||||||
|
_e_desklock_fullscreen_count = ev->desk->fullscreen_borders;
|
||||||
|
e_desklock_init();
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_e_desklock_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
|
{
|
||||||
|
E_Event_Desk_Show *ev = event;
|
||||||
|
|
||||||
|
_e_desklock_fullscreen_count = ev->desk->fullscreen_borders;
|
||||||
|
e_desklock_init();
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,10 @@ static Ecore_Event_Handler *_e_dpms_handler_config_mode = NULL;
|
||||||
static Ecore_Event_Handler *_e_dpms_handler_border_fullscreen = NULL;
|
static Ecore_Event_Handler *_e_dpms_handler_border_fullscreen = NULL;
|
||||||
static Ecore_Event_Handler *_e_dpms_handler_border_unfullscreen = NULL;
|
static Ecore_Event_Handler *_e_dpms_handler_border_unfullscreen = NULL;
|
||||||
static Ecore_Event_Handler *_e_dpms_handler_border_remove = NULL;
|
static Ecore_Event_Handler *_e_dpms_handler_border_remove = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_dpms_handler_border_iconify = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_dpms_handler_border_uniconify = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_dpms_handler_border_desk_set = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_dpms_handler_desk_show = NULL;
|
||||||
static int _e_dpms_fullscreen_count = 0;
|
static int _e_dpms_fullscreen_count = 0;
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
@ -17,45 +21,46 @@ _e_dpms_handler_config_mode_cb(void *data __UNUSED__, int type __UNUSED__, void
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_dpms_handler_border_fullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
_e_dpms_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
_e_dpms_fullscreen_count++;
|
E_Event_Border_Fullscreen *ev = event;
|
||||||
printf("incremented fs_count: %d\n", _e_dpms_fullscreen_count);
|
|
||||||
if (_e_dpms_fullscreen_count == 1) e_dpms_init();
|
_e_dpms_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||||
|
e_dpms_init();
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_dpms_handler_border_unfullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
_e_dpms_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
_e_dpms_fullscreen_count--;
|
E_Event_Border_Desk_Set *ev = event;
|
||||||
printf("decremented fs_count: %d\n", _e_dpms_fullscreen_count);
|
|
||||||
if (_e_dpms_fullscreen_count == 0) e_dpms_init();
|
if (ev->border->desk->visible)
|
||||||
else if (_e_dpms_fullscreen_count < 0) _e_dpms_fullscreen_count = 0;
|
_e_dpms_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||||
|
else if (ev->desk->visible)
|
||||||
|
_e_dpms_fullscreen_count = ev->desk->fullscreen_borders;
|
||||||
|
e_dpms_init();
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_dpms_handler_border_remove_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
_e_dpms_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
E_Event_Border_Remove *ev = event;
|
E_Event_Desk_Show *ev = event;
|
||||||
|
|
||||||
if (ev->border->fullscreen) {
|
_e_dpms_fullscreen_count = ev->desk->fullscreen_borders;
|
||||||
_e_dpms_fullscreen_count--;
|
e_dpms_init();
|
||||||
printf("decremented fs_count from remove: %d\n", _e_dpms_fullscreen_count);
|
|
||||||
if (_e_dpms_fullscreen_count == 0) e_dpms_init();
|
|
||||||
else if (_e_dpms_fullscreen_count < 0) _e_dpms_fullscreen_count = 0;
|
|
||||||
}
|
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI int
|
EAPI int
|
||||||
e_dpms_init(void)
|
e_dpms_init(void)
|
||||||
{
|
{
|
||||||
int standby=0, suspend=0, off=0;
|
int standby = 0, suspend = 0, off = 0;
|
||||||
int enabled = ((e_config->dpms_enable) && (!e_config->mode.presentation) &&
|
int enabled;
|
||||||
(_e_dpms_fullscreen_count <= 0));
|
|
||||||
printf("checking fs_count and if enabled: %d, %d\n", _e_dpms_fullscreen_count, enabled);
|
enabled = ((e_config->dpms_enable) && (!e_config->mode.presentation) &&
|
||||||
|
(_e_dpms_fullscreen_count <= 0));
|
||||||
|
|
||||||
if (!_e_dpms_handler_config_mode)
|
if (!_e_dpms_handler_config_mode)
|
||||||
_e_dpms_handler_config_mode = ecore_event_handler_add
|
_e_dpms_handler_config_mode = ecore_event_handler_add
|
||||||
|
@ -63,30 +68,45 @@ printf("checking fs_count and if enabled: %d, %d\n", _e_dpms_fullscreen_count, e
|
||||||
|
|
||||||
if (!_e_dpms_handler_border_fullscreen)
|
if (!_e_dpms_handler_border_fullscreen)
|
||||||
_e_dpms_handler_border_fullscreen = ecore_event_handler_add
|
_e_dpms_handler_border_fullscreen = ecore_event_handler_add
|
||||||
(E_EVENT_BORDER_FULLSCREEN, _e_dpms_handler_border_fullscreen_cb, NULL);
|
(E_EVENT_BORDER_FULLSCREEN, _e_dpms_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
if (!_e_dpms_handler_border_unfullscreen)
|
if (!_e_dpms_handler_border_unfullscreen)
|
||||||
_e_dpms_handler_border_unfullscreen = ecore_event_handler_add
|
_e_dpms_handler_border_unfullscreen = ecore_event_handler_add
|
||||||
(E_EVENT_BORDER_UNFULLSCREEN, _e_dpms_handler_border_unfullscreen_cb, NULL);
|
(E_EVENT_BORDER_UNFULLSCREEN, _e_dpms_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
if (!_e_dpms_handler_border_remove)
|
if (!_e_dpms_handler_border_remove)
|
||||||
_e_dpms_handler_border_remove = ecore_event_handler_add
|
_e_dpms_handler_border_remove = ecore_event_handler_add
|
||||||
(E_EVENT_BORDER_REMOVE, _e_dpms_handler_border_remove_cb, NULL);
|
(E_EVENT_BORDER_REMOVE, _e_dpms_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_dpms_handler_border_iconify)
|
||||||
|
_e_dpms_handler_border_iconify = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_ICONIFY, _e_dpms_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_dpms_handler_border_uniconify)
|
||||||
|
_e_dpms_handler_border_uniconify = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_UNICONIFY, _e_dpms_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_dpms_handler_border_desk_set)
|
||||||
|
_e_dpms_handler_border_desk_set = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_DESK_SET, _e_dpms_handler_border_desk_set_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_dpms_handler_desk_show)
|
||||||
|
_e_dpms_handler_desk_show = ecore_event_handler_add
|
||||||
|
(E_EVENT_DESK_SHOW, _e_dpms_handler_desk_show_cb, NULL);
|
||||||
|
|
||||||
ecore_x_dpms_enabled_set(enabled);
|
ecore_x_dpms_enabled_set(enabled);
|
||||||
if (!enabled)
|
if (!enabled) return 1;
|
||||||
return 1;
|
|
||||||
|
|
||||||
if (e_config->dpms_standby_enable)
|
if (e_config->dpms_standby_enable)
|
||||||
standby = e_config->dpms_standby_timeout;
|
standby = e_config->dpms_standby_timeout;
|
||||||
|
|
||||||
if (e_config->dpms_suspend_enable)
|
if (e_config->dpms_suspend_enable)
|
||||||
suspend = e_config->dpms_suspend_timeout;
|
suspend = e_config->dpms_suspend_timeout;
|
||||||
|
|
||||||
if (e_config->dpms_off_enable)
|
if (e_config->dpms_off_enable)
|
||||||
off = e_config->dpms_off_timeout;
|
off = e_config->dpms_off_timeout;
|
||||||
|
|
||||||
ecore_x_dpms_timeouts_set(standby, suspend, off);
|
ecore_x_dpms_timeouts_set(standby, suspend, off);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,11 @@ static Ecore_Event_Handler *_e_screensaver_handler_config_mode = NULL;
|
||||||
static Ecore_Event_Handler *_e_screensaver_handler_screensaver_notify = NULL;
|
static Ecore_Event_Handler *_e_screensaver_handler_screensaver_notify = NULL;
|
||||||
static Ecore_Event_Handler *_e_screensaver_handler_border_fullscreen = NULL;
|
static Ecore_Event_Handler *_e_screensaver_handler_border_fullscreen = NULL;
|
||||||
static Ecore_Event_Handler *_e_screensaver_handler_border_unfullscreen = NULL;
|
static Ecore_Event_Handler *_e_screensaver_handler_border_unfullscreen = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_screensaver_handler_border_remove = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_screensaver_handler_border_iconify = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_screensaver_handler_border_uniconify = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_screensaver_handler_border_desk_set = NULL;
|
||||||
|
static Ecore_Event_Handler *_e_screensaver_handler_desk_show = NULL;
|
||||||
static E_Dialog *_e_screensaver_ask_presentation_dia = NULL;
|
static E_Dialog *_e_screensaver_ask_presentation_dia = NULL;
|
||||||
static int _e_screensaver_ask_presentation_count = 0;
|
static int _e_screensaver_ask_presentation_count = 0;
|
||||||
static int _e_screensaver_fullscreen_count = 0;
|
static int _e_screensaver_fullscreen_count = 0;
|
||||||
|
@ -85,45 +90,37 @@ _e_screensaver_ask_presentation_mode(void)
|
||||||
E_Container *con;
|
E_Container *con;
|
||||||
E_Dialog *dia;
|
E_Dialog *dia;
|
||||||
|
|
||||||
if (_e_screensaver_ask_presentation_dia)
|
if (_e_screensaver_ask_presentation_dia) return;
|
||||||
return;
|
|
||||||
|
|
||||||
man = e_manager_current_get();
|
if (!(man = e_manager_current_get())) return;
|
||||||
if (!man) return;
|
if (!(con = e_container_current_get(man))) return;
|
||||||
con = e_container_current_get(man);
|
if (!(dia = e_dialog_new(con, "E", "_screensaver_ask_presentation"))) return;
|
||||||
if (!con) return;
|
|
||||||
dia = e_dialog_new(con, "E", "_screensaver_ask_presentation");
|
|
||||||
if (!dia) return;
|
|
||||||
|
|
||||||
e_dialog_title_set(dia, _("Activate Presentation Mode?"));
|
e_dialog_title_set(dia, _("Activate Presentation Mode?"));
|
||||||
e_dialog_icon_set(dia, "dialog-ask", 64);
|
e_dialog_icon_set(dia, "dialog-ask", 64);
|
||||||
e_dialog_text_set
|
e_dialog_text_set(dia,
|
||||||
(dia,
|
_("You disabled screensaver too fast.<br><br>"
|
||||||
_("You disabled screensaver too fast.<br><br>"
|
"Would you like to enable <b>presentation</b> mode and "
|
||||||
"Would you like to enable <b>presentation</b> mode and "
|
"temporarily disable screen saver, lock and power saving?"));
|
||||||
"temporarily disable screen saver, lock and power saving?"));
|
|
||||||
|
|
||||||
e_object_del_attach_func_set
|
e_object_del_attach_func_set(E_OBJECT(dia),
|
||||||
(E_OBJECT(dia), _e_screensaver_ask_presentation_del);
|
_e_screensaver_ask_presentation_del);
|
||||||
e_dialog_button_add
|
e_dialog_button_add(dia, _("Yes"), NULL,
|
||||||
(dia, _("Yes"), NULL, _e_screensaver_ask_presentation_yes, NULL);
|
_e_screensaver_ask_presentation_yes, NULL);
|
||||||
e_dialog_button_add
|
e_dialog_button_add(dia, _("No"), NULL,
|
||||||
(dia, _("No"), NULL, _e_screensaver_ask_presentation_no, NULL);
|
_e_screensaver_ask_presentation_no, NULL);
|
||||||
e_dialog_button_add
|
e_dialog_button_add(dia, _("No, but increase timeout"), NULL,
|
||||||
(dia, _("No, but increase timeout"), NULL,
|
_e_screensaver_ask_presentation_no_increase, NULL);
|
||||||
_e_screensaver_ask_presentation_no_increase, NULL);
|
e_dialog_button_add(dia, _("No, and stop asking"), NULL,
|
||||||
e_dialog_button_add
|
_e_screensaver_ask_presentation_no_forever, NULL);
|
||||||
(dia, _("No, and stop asking"), NULL,
|
|
||||||
_e_screensaver_ask_presentation_no_forever, NULL);
|
|
||||||
|
|
||||||
e_dialog_button_focus_num(dia, 0);
|
e_dialog_button_focus_num(dia, 0);
|
||||||
e_widget_list_homogeneous_set(dia->box_object, 0);
|
e_widget_list_homogeneous_set(dia->box_object, 0);
|
||||||
e_win_centered_set(dia->win, 1);
|
e_win_centered_set(dia->win, 1);
|
||||||
e_dialog_show(dia);
|
e_dialog_show(dia);
|
||||||
|
|
||||||
evas_object_event_callback_add
|
evas_object_event_callback_add(dia->bg_object, EVAS_CALLBACK_KEY_DOWN,
|
||||||
(dia->bg_object, EVAS_CALLBACK_KEY_DOWN,
|
_e_screensaver_ask_presentation_key_down, dia);
|
||||||
_e_screensaver_ask_presentation_key_down, dia);
|
|
||||||
|
|
||||||
_e_screensaver_ask_presentation_dia = dia;
|
_e_screensaver_ask_presentation_dia = dia;
|
||||||
}
|
}
|
||||||
|
@ -142,6 +139,7 @@ _e_screensaver_handler_screensaver_notify_cb(void *data __UNUSED__, int type __U
|
||||||
else if ((last_start > 0.0) && (e_config->screensaver_ask_presentation))
|
else if ((last_start > 0.0) && (e_config->screensaver_ask_presentation))
|
||||||
{
|
{
|
||||||
double current = ecore_loop_time_get();
|
double current = ecore_loop_time_get();
|
||||||
|
|
||||||
if (last_start + e_config->screensaver_ask_presentation_timeout >= current)
|
if (last_start + e_config->screensaver_ask_presentation_timeout >= current)
|
||||||
_e_screensaver_ask_presentation_mode();
|
_e_screensaver_ask_presentation_mode();
|
||||||
last_start = 0.0;
|
last_start = 0.0;
|
||||||
|
@ -153,19 +151,35 @@ _e_screensaver_handler_screensaver_notify_cb(void *data __UNUSED__, int type __U
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_screensaver_handler_border_fullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
_e_screensaver_handler_border_fullscreen_check_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
_e_screensaver_fullscreen_count++;
|
E_Event_Border_Fullscreen *ev = event;
|
||||||
if (_e_screensaver_fullscreen_count == 1) e_screensaver_init();
|
|
||||||
|
_e_screensaver_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||||
|
e_screensaver_init();
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_screensaver_handler_border_unfullscreen_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
_e_screensaver_handler_border_desk_set_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
_e_screensaver_fullscreen_count--;
|
E_Event_Border_Desk_Set *ev = event;
|
||||||
if (_e_screensaver_fullscreen_count == 0) e_screensaver_init();
|
|
||||||
else if (_e_screensaver_fullscreen_count < 0) _e_screensaver_fullscreen_count = 0;
|
if (ev->border->desk->visible)
|
||||||
|
_e_screensaver_fullscreen_count = ev->border->desk->fullscreen_borders;
|
||||||
|
else if (ev->desk->visible)
|
||||||
|
_e_screensaver_fullscreen_count = ev->desk->fullscreen_borders;
|
||||||
|
e_screensaver_init();
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_e_screensaver_handler_desk_show_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
|
{
|
||||||
|
E_Event_Desk_Show *ev = event;
|
||||||
|
|
||||||
|
_e_screensaver_fullscreen_count = ev->desk->fullscreen_borders;
|
||||||
|
e_screensaver_init();
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,11 +198,31 @@ e_screensaver_init(void)
|
||||||
|
|
||||||
if (!_e_screensaver_handler_border_fullscreen)
|
if (!_e_screensaver_handler_border_fullscreen)
|
||||||
_e_screensaver_handler_border_fullscreen = ecore_event_handler_add
|
_e_screensaver_handler_border_fullscreen = ecore_event_handler_add
|
||||||
(E_EVENT_BORDER_FULLSCREEN, _e_screensaver_handler_border_fullscreen_cb, NULL);
|
(E_EVENT_BORDER_FULLSCREEN, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
if (!_e_screensaver_handler_border_unfullscreen)
|
if (!_e_screensaver_handler_border_unfullscreen)
|
||||||
_e_screensaver_handler_border_unfullscreen = ecore_event_handler_add
|
_e_screensaver_handler_border_unfullscreen = ecore_event_handler_add
|
||||||
(E_EVENT_BORDER_UNFULLSCREEN, _e_screensaver_handler_border_unfullscreen_cb, NULL);
|
(E_EVENT_BORDER_UNFULLSCREEN, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_screensaver_handler_border_remove)
|
||||||
|
_e_screensaver_handler_border_remove = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_REMOVE, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_screensaver_handler_border_iconify)
|
||||||
|
_e_screensaver_handler_border_iconify = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_ICONIFY, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_screensaver_handler_border_uniconify)
|
||||||
|
_e_screensaver_handler_border_uniconify = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_UNICONIFY, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_screensaver_handler_border_desk_set)
|
||||||
|
_e_screensaver_handler_border_desk_set = ecore_event_handler_add
|
||||||
|
(E_EVENT_BORDER_DESK_SET, _e_screensaver_handler_border_desk_set_cb, NULL);
|
||||||
|
|
||||||
|
if (!_e_screensaver_handler_desk_show)
|
||||||
|
_e_screensaver_handler_desk_show = ecore_event_handler_add
|
||||||
|
(E_EVENT_DESK_SHOW, _e_screensaver_handler_desk_show_cb, NULL);
|
||||||
|
|
||||||
if ((e_config->screensaver_enable) && (!e_config->mode.presentation) &&
|
if ((e_config->screensaver_enable) && (!e_config->mode.presentation) &&
|
||||||
(_e_screensaver_fullscreen_count <= 0))
|
(_e_screensaver_fullscreen_count <= 0))
|
||||||
|
|
Loading…
Reference in New Issue