void action_activate(union ActionData *data)
{
if (data->client.any.c) {
- /* similar to the openbox dock for dockapps, don't let user actions
- give focus to 3rd-party docks (panels) either (unless they ask for
- it themselves). */
- if (data->client.any.c->type != OB_CLIENT_TYPE_DOCK) {
+ if (!data->any.button || client_mouse_focusable(data->client.any.c) ||
+ data->any.context != OB_FRAME_CONTEXT_CLIENT)
+ {
/* if using focus_delay, stop the timer now so that focus doesn't
go moving on us */
event_halt_focus_delay();
void action_focus(union ActionData *data)
{
if (data->client.any.c) {
- /* similar to the openbox dock for dockapps, don't let user actions
- give focus to 3rd-party docks (panels) either (unless they ask for
- it themselves). */
- if (data->client.any.c->type != OB_CLIENT_TYPE_DOCK) {
+ if (!data->any.button || client_mouse_focusable(data->client.any.c) ||
+ data->any.context != OB_FRAME_CONTEXT_CLIENT)
+ {
/* if using focus_delay, stop the timer now so that focus doesn't
go moving on us */
event_halt_focus_delay();
c->frame->size.right,
c->area.height + c->frame->size.top +
c->frame->size.bottom));
- const gchar *c;
- if (corner == prop_atoms.net_wm_moveresize_size_topright)
- c = "topright";
- else if (corner == prop_atoms.net_wm_moveresize_size_top)
- c = "top";
- else if (corner == prop_atoms.net_wm_moveresize_size_topleft)
- c = "topleft";
- else if (corner == prop_atoms.net_wm_moveresize_size_right)
- c = "right";
- else if (corner == prop_atoms.net_wm_moveresize_move)
- c = "middle";
- else if (corner == prop_atoms.net_wm_moveresize_size_left)
- c = "left";
- else if (corner == prop_atoms.net_wm_moveresize_size_bottomright)
- c = "bottomright";
- else if (corner == prop_atoms.net_wm_moveresize_size_bottom)
- c = "bottom";
- else if (corner == prop_atoms.net_wm_moveresize_size_bottomleft)
- c = "bottomleft";
- ob_debug("corner: %s\n", c);
}
moveresize_start(c, data->any.x, data->any.y, data->any.button, corner);