'clicking-a-window-always-focuses-it' otherwise known as 'always-click-to-focus' is in. doesn't apply instantly, need to restart. i think that's the same with always-click-to-raise, so i'm not trying to do something about it

SVN revision: 16992
This commit is contained in:
tsauerbeck 2005-09-27 16:36:14 +00:00 committed by tsauerbeck
parent 80ebddfcd8
commit e3822ca730
6 changed files with 61 additions and 4 deletions

View File

@ -4149,7 +4149,8 @@ _e_border_cb_grab_replay(void *data, int type, void *event)
if (type != ECORE_X_EVENT_MOUSE_BUTTON_DOWN) return 0;
ev = event;
if ((e_config->pass_click_on) || (e_config->always_click_to_raise))
if ((e_config->pass_click_on) || (e_config->always_click_to_raise) ||
(e_config->always_click_to_focus))
{
E_Border *bd;

View File

@ -290,6 +290,7 @@ e_config_init(void)
E_CONFIG_VAL(D, T, focus_setting, INT); /**/
E_CONFIG_VAL(D, T, pass_click_on, INT); /**/
E_CONFIG_VAL(D, T, always_click_to_raise, INT); /**/
E_CONFIG_VAL(D, T, always_click_to_focus, INT); /**/
E_CONFIG_VAL(D, T, use_auto_raise, INT); /**/
E_CONFIG_VAL(D, T, auto_raise_delay, DOUBLE); /**/
E_CONFIG_VAL(D, T, use_resist, INT); /**/
@ -411,6 +412,7 @@ e_config_init(void)
e_config->focus_setting = E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED;
e_config->pass_click_on = 1;
e_config->always_click_to_raise = 0;
e_config->always_click_to_focus = 1;
e_config->use_auto_raise = 0;
e_config->auto_raise_delay = 0.5;
e_config->use_resist = 1;
@ -1364,6 +1366,7 @@ e_config_init(void)
E_CONFIG_LIMIT(e_config->focus_setting, 0, 3);
E_CONFIG_LIMIT(e_config->pass_click_on, 0, 1);
E_CONFIG_LIMIT(e_config->always_click_to_raise, 0, 1);
E_CONFIG_LIMIT(e_config->always_click_to_focus, 0, 1);
E_CONFIG_LIMIT(e_config->use_auto_raise, 0, 1);
E_CONFIG_LIMIT(e_config->auto_raise_delay, 0.0, 5.0);
E_CONFIG_LIMIT(e_config->use_resist, 0, 1);

View File

@ -108,6 +108,7 @@ struct _E_Config
int focus_setting;
int pass_click_on;
int always_click_to_raise;
int always_click_to_focus;
int use_auto_raise;
double auto_raise_delay;
int use_resist;

View File

@ -88,6 +88,11 @@ e_focus_event_mouse_down(E_Border* bd)
if (!bd->lock_user_stacking)
e_border_raise(bd);
}
else if (e_config->always_click_to_focus)
{
if (!bd->lock_focus_out)
e_border_focus_set(bd, 1, 1);
}
}
void
@ -99,7 +104,8 @@ void
e_focus_event_focus_in(E_Border *bd)
{
if ((e_config->focus_policy == E_FOCUS_CLICK) &&
(!e_config->always_click_to_raise))
(!e_config->always_click_to_raise) &&
(!e_config->always_click_to_focus))
{
if (!bd->button_grabbed) return;
e_bindings_mouse_ungrab(E_BINDING_CONTEXT_BORDER, bd->win);
@ -117,7 +123,8 @@ void
e_focus_event_focus_out(E_Border *bd)
{
if ((e_config->focus_policy == E_FOCUS_CLICK) &&
(!e_config->always_click_to_raise))
(!e_config->always_click_to_raise) &&
(!e_config->always_click_to_focus))
{
if (bd->button_grabbed) return;
ecore_x_window_button_grab(bd->win, 1,
@ -140,7 +147,8 @@ void
e_focus_setup(E_Border *bd)
{
if ((e_config->focus_policy == E_FOCUS_CLICK) ||
(e_config->always_click_to_raise))
(e_config->always_click_to_raise) ||
(e_config->always_click_to_focus))
{
if (bd->button_grabbed) return;
ecore_x_window_button_grab(bd->win, 1,

View File

@ -2853,6 +2853,46 @@ break;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_ALWAYS_CLICK_TO_FOCUS_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-always-click-to-focus-set", 1, "Set the always click to focus policy, 1 for enabled 0 for disabled", 0, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_INT(atoi(params[0]), HDL);
#elif (TYPE == E_WM_IN)
START_INT(policy, HDL);
e_config->always_click_to_focus = policy;
E_CONFIG_LIMIT(e_config->always_click_to_focus, 0, 1);
SAVE;
END_INT;
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_ALWAYS_CLICK_TO_FOCUS_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-always-click-to-focus-get", 0, "Get the always click to focus policy, 1 for enabled 0 for disabled", 1, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_NULL(HDL);
#elif (TYPE == E_WM_IN)
SEND_INT(e_config->always_click_to_focus, E_IPC_OP_ALWAYS_CLICK_TO_FOCUS_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_ALWAYS_CLICK_TO_FOCUS_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
#elif (TYPE == E_REMOTE_IN)
START_INT(policy, HDL);
printf("REPLY: POLICY=%d\n", policy);
END_INT;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_USE_AUTO_RAISE_SET
#if (TYPE == E_REMOTE_OPTIONS)

View File

@ -283,3 +283,7 @@
#define E_IPC_OP_RESIZE_INFO_VISIBLE_SET 276
#define E_IPC_OP_RESIZE_INFO_VISIBLE_GET 277
#define E_IPC_OP_RESIZE_INFO_VISIBLE_GET_REPLY 278
#define E_IPC_OP_ALWAYS_CLICK_TO_FOCUS_SET 279
#define E_IPC_OP_ALWAYS_CLICK_TO_FOCUS_GET 280
#define E_IPC_OP_ALWAYS_CLICK_TO_FOCUS_GET_REPLY 281