focus_left_screen = FALSE;
- focus_fallback(FALSE, config_focus_under_mouse, TRUE);
+ focus_fallback(FALSE, config_focus_under_mouse, TRUE, TRUE);
/* We don't get a FocusOut for this case, because it's just moving
from our Inferior up to us. This happens when iconifying a
/* focus_set_client(NULL) has already been called */
client_calc_layer(client);
}
- if (e->xfocus.detail == NotifyPointerRoot ||
- e->xfocus.detail == NotifyDetailNone ||
- e->xfocus.detail == NotifyInferior ||
- e->xfocus.detail == NotifyNonlinear)
+ else if (e->xfocus.detail == NotifyPointerRoot ||
+ e->xfocus.detail == NotifyDetailNone ||
+ e->xfocus.detail == NotifyInferior ||
+ e->xfocus.detail == NotifyNonlinear)
{
XEvent ce;
*/
if (!focus_left_screen)
- focus_fallback(FALSE, config_focus_under_mouse, TRUE);
+ focus_fallback(FALSE, config_focus_under_mouse,
+ TRUE, TRUE);
}
}
else if (!client)
ob_debug_type(OB_DEBUG_FOCUS,
"Focus went to an unmanaged window 0x%x !\n",
ce.xfocus.window);
- focus_fallback(TRUE, config_focus_under_mouse, TRUE);
+ focus_fallback(TRUE, config_focus_under_mouse, TRUE, TRUE);
}
}
event_handle_root(e);
else if (e->type == MapRequest)
client_manage(window);
+ else if (e->type == MappingNotify) {
+ /* keyboard layout changes, reconfigure openbox. need to restart the
+ modkeys system, but also to reload the key bindings. */
+ ob_reconfigure();
+ }
else if (e->type == ClientMessage) {
/* This is for _NET_WM_REQUEST_FRAME_EXTENTS messages. They come for
windows that are not managed yet. */
ob_reconfigure();
else if (e->xclient.data.l[0] == 2)
ob_restart();
+ else if (e->xclient.data.l[0] == 3)
+ ob_exit(0);
}
break;
case PropertyNotify:
data->time = event_curtime;
ob_main_loop_timeout_add(ob_main_loop,
- config_focus_delay,
+ config_focus_delay * 1000,
focus_delay_func,
data, focus_delay_cmp, focus_delay_dest);
} else {
}
else if (msgtype == prop_atoms.net_wm_user_time) {
guint32 t;
- if (PROP_GET32(client->window, net_wm_user_time, cardinal, &t) &&
+ if (client == focus_client &&
+ PROP_GET32(client->window, net_wm_user_time, cardinal, &t) &&
t && !event_time_after(t, e->xproperty.time) &&
(!event_last_user_time ||
event_time_after(t, event_last_user_time)))
}
}
-static ObMenuFrame* find_active_menu()
+static ObMenuFrame* find_active_menu(void)
{
GList *it;
ObMenuFrame *ret = NULL;
return ret;
}
-static ObMenuFrame* find_active_or_last_menu()
+static ObMenuFrame* find_active_or_last_menu(void)
{
ObMenuFrame *ret = NULL;
client, FALSE);
}
-void event_halt_focus_delay()
+void event_halt_focus_delay(void)
{
+ /* ignore all enter events up till now */
+ event_end_ignore_all_enters(1);
ob_main_loop_timeout_remove(ob_main_loop, focus_delay_func);
}
-gulong event_start_ignore_all_enters()
+gulong event_start_ignore_all_enters(void)
{
XSync(ob_display, FALSE);
return LastKnownRequestProcessed(ob_display);
return FALSE;
}
-void event_cancel_all_key_grabs()
+void event_cancel_all_key_grabs(void)
{
if (actions_interactive_act_running()) {
actions_interactive_cancel_act();
return t1 >= t2 && t1 < (t2 + TIME_HALF);
}
-Time event_get_server_time()
+Time event_get_server_time(void)
{
/* Generate a timestamp */
XEvent event;