move the code to find the window under the pointer out of focus.c to client.c

This commit is contained in:
Dana Jansens 2003-09-21 21:25:23 +00:00
parent 6675b28ded
commit 6538a5ccb2
3 changed files with 26 additions and 16 deletions

View file

@ -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;
}

View file

@ -519,4 +519,6 @@ guint client_monitor(ObClient *self);
void client_update_sm_client_id(ObClient *self);
ObClient* client_under_pointer();
#endif

View file

@ -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;
}