#include "translate.h"
#include <X11/Xlib.h>
-#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <glib.h>
frame_adjust_focus(client->frame, TRUE);
focus_set_client(client);
client_calc_layer(client);
+ client_bring_helper_windows(client);
}
} else if (e->type == FocusOut) {
gboolean nomove = FALSE;
{
g_assert(config_focus_follow);
- if (client_normal(client) && client_can_focus(client)) {
+ if (client_enter_focusable(client) && client_can_focus(client)) {
if (config_focus_delay) {
ObFocusDelayData *data;
case ButtonPress:
case ButtonRelease:
/* Wheel buttons don't draw because they are an instant click, so it
- is a waste of resources to go drawing it. */
- if (!(e->xbutton.button == 4 || e->xbutton.button == 5)) {
+ is a waste of resources to go drawing it.
+ if the user is doing an intereactive thing, or has a menu open then
+ the mouse is grabbed (possibly) and if we get these events we don't
+ want to deal with them
+ */
+ if (!(e->xbutton.button == 4 || e->xbutton.button == 5) &&
+ !keyboard_interactively_grabbed() &&
+ !menu_frame_visible)
+ {
con = frame_context(client, e->xbutton.window);
con = mouse_button_frame_context(con, e->xbutton.button);
switch (con) {
(e->xclient.data.l[0] == 2 ? "user" : "INVALID"))));
/* XXX make use of data.l[2] !? */
event_curtime = e->xclient.data.l[1];
- ob_debug_type(OB_DEBUG_APP_BUGS,
- "_NET_ACTIVE_WINDOW message for window %s is "
- "missing a timestamp\n", client->title);
+ if (event_curtime == 0)
+ ob_debug_type(OB_DEBUG_APP_BUGS,
+ "_NET_ACTIVE_WINDOW message for window %s is "
+ "missing a timestamp\n", client->title);
client_activate(client, FALSE,
(e->xclient.data.l[0] == 0 ||
e->xclient.data.l[0] == 2));
msgtype == prop_atoms.net_wm_icon_name ||
msgtype == prop_atoms.wm_icon_name) {
client_update_title(client);
- } else if (msgtype == prop_atoms.wm_command) {
- client_update_command(client);
- } else if (msgtype == prop_atoms.wm_class) {
- client_update_class(client);
} else if (msgtype == prop_atoms.wm_protocols) {
client_update_protocols(client);
client_setup_decor_and_functions(client);
client_update_sync_request_counter(client);
}
#endif
- else if (msgtype == prop_atoms.sm_client_id) {
- client_update_sm_client_id(client);
- }
case ColormapNotify:
client_update_colormap(client, e->xcolormap.colormap);
break;