*/
if (!focus_left_screen)
- focus_fallback(TRUE, FALSE);
+ focus_fallback(FALSE, FALSE);
}
}
else if (!client)
}
break;
case MotionNotify:
+ /* when there is a grab on the pointer, we won't get enter/leave
+ notifies, but we still get motion events */
+ if (grab_on_pointer()) break;
+
con = frame_context(client, e->xmotion.window,
e->xmotion.x, e->xmotion.y);
switch (con) {
desktop. eg. open amarok window on desktop 1, switch to desktop
2, click amarok tray icon. it will move by its decoration size.
*/
- if (move && !resize &&
- x != client->area.x &&
+ if (x != client->area.x &&
x == (client->frame->area.x + client->frame->size.left -
(gint)client->border_width) &&
y != client->area.y &&
y == (client->frame->area.y + client->frame->size.top -
- (gint)client->border_width))
+ (gint)client->border_width) &&
+ w == client->area.width &&
+ h == client->area.height)
{
ob_debug_type(OB_DEBUG_APP_BUGS,
"Application %s is trying to move via "
dock_hide(FALSE);
break;
case LeaveNotify:
- dock_hide(TRUE);
+ /* don't hide when moving into a dock app */
+ if (e->xcrossing.detail != NotifyInferior)
+ dock_hide(TRUE);
break;
}
}
if (frame == NULL)
ret = FALSE;
- else if (keycode == ob_keycode(OB_KEY_ESCAPE) && state == 0) {
- /* Escape goes to the parent menu or closes the last one */
- if (frame->parent)
- menu_frame_select(frame, NULL, TRUE);
- else
- menu_frame_hide_all();
- }
+ else if (keycode == ob_keycode(OB_KEY_ESCAPE) && state == 0)
+ menu_frame_hide_all();
else if (keycode == ob_keycode(OB_KEY_RETURN) && (state == 0 ||
state == ControlMask))