move the code to find the window under the pointer out of focus.c to client.c
This commit is contained in:
parent
6675b28ded
commit
6538a5ccb2
3 changed files with 26 additions and 16 deletions
|
@ -3017,3 +3017,24 @@ int client_directional_edge_search(ObClient *c, ObDirection dir)
|
|||
}
|
||||
return dest;
|
||||
}
|
||||
|
||||
ObClient* client_under_pointer()
|
||||
{
|
||||
int x, y;
|
||||
GList *it;
|
||||
ObClient *ret = NULL;
|
||||
|
||||
if (screen_pointer_pos(&x, &y)) {
|
||||
for (it = stacking_list; it != NULL; it = it->next) {
|
||||
if (WINDOW_IS_CLIENT(it->data)) {
|
||||
ObClient *c = WINDOW_AS_CLIENT(it->data);
|
||||
if (c->desktop == screen_desktop &&
|
||||
RECT_CONTAINS(c->frame->area, x, y)) {
|
||||
ret = c;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -519,4 +519,6 @@ guint client_monitor(ObClient *self);
|
|||
|
||||
void client_update_sm_client_id(ObClient *self);
|
||||
|
||||
ObClient* client_under_pointer();
|
||||
|
||||
#endif
|
||||
|
|
|
@ -119,23 +119,10 @@ void focus_set_client(ObClient *client)
|
|||
|
||||
static gboolean focus_under_pointer()
|
||||
{
|
||||
int x, y;
|
||||
GList *it;
|
||||
ObClient *c;
|
||||
|
||||
if (screen_pointer_pos(&x, &y)) {
|
||||
for (it = stacking_list; it != NULL; it = it->next) {
|
||||
if (WINDOW_IS_CLIENT(it->data)) {
|
||||
ObClient *c = WINDOW_AS_CLIENT(it->data);
|
||||
if (c->desktop == screen_desktop &&
|
||||
RECT_CONTAINS(c->frame->area, x, y))
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (it != NULL) {
|
||||
g_assert(WINDOW_IS_CLIENT(it->data));
|
||||
return client_normal(it->data) && client_focus(it->data);
|
||||
}
|
||||
}
|
||||
if ((c = client_under_pointer()))
|
||||
return client_normal(c) && client_focus(c);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue