screen: move screen_getbycoord()
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
3a45831242
commit
b4d89eec6c
|
@ -38,6 +38,7 @@
|
||||||
#include "dbus.h"
|
#include "dbus.h"
|
||||||
#include "systray.h"
|
#include "systray.h"
|
||||||
#include "event.h"
|
#include "event.h"
|
||||||
|
#include "screen.h"
|
||||||
#include "common/version.h"
|
#include "common/version.h"
|
||||||
#include "common/atoms.h"
|
#include "common/atoms.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@ -170,8 +171,7 @@ scan(void)
|
||||||
*(geom_wins[i]), NULL)))
|
*(geom_wins[i]), NULL)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
screen = screen_get_bycoord(globalconf.screens_info, phys_screen,
|
screen = screen_getbycoord(phys_screen, geom_r->x, geom_r->y);
|
||||||
geom_r->x, geom_r->y);
|
|
||||||
|
|
||||||
client_manage(wins[i], geom_r, phys_screen, screen);
|
client_manage(wins[i], geom_r, phys_screen, screen);
|
||||||
|
|
||||||
|
|
5
client.c
5
client.c
|
@ -420,7 +420,7 @@ client_manage(xcb_window_t w, xcb_get_geometry_reply_t *wgeom, int phys_screen,
|
||||||
|
|
||||||
c = p_new(client_t, 1);
|
c = p_new(client_t, 1);
|
||||||
|
|
||||||
c->screen = screen_get_bycoord(globalconf.screens_info, screen, wgeom->x, wgeom->y);
|
c->screen = screen_getbycoord(screen, wgeom->x, wgeom->y);
|
||||||
|
|
||||||
c->phys_screen = phys_screen;
|
c->phys_screen = phys_screen;
|
||||||
|
|
||||||
|
@ -567,8 +567,7 @@ client_resize(client_t *c, area_t geometry, bool hints)
|
||||||
|| c->geometry.width != geometry.width
|
|| c->geometry.width != geometry.width
|
||||||
|| c->geometry.height != geometry.height)))
|
|| c->geometry.height != geometry.height)))
|
||||||
{
|
{
|
||||||
new_screen =
|
new_screen = screen_getbycoord(c->screen, geometry.x, geometry.y);
|
||||||
screen_get_bycoord(globalconf.screens_info, c->screen, geometry.x, geometry.y);
|
|
||||||
|
|
||||||
c->geometry.x = values[0] = geometry.x;
|
c->geometry.x = values[0] = geometry.x;
|
||||||
c->geometry.width = values[2] = geometry.width;
|
c->geometry.width = values[2] = geometry.width;
|
||||||
|
|
|
@ -25,30 +25,6 @@
|
||||||
#include "common/xscreen.h"
|
#include "common/xscreen.h"
|
||||||
#include "common/xutil.h"
|
#include "common/xutil.h"
|
||||||
|
|
||||||
/** Return the Xinerama screen number where the coordinates belongs to.
|
|
||||||
* \param si The screens infos structure.
|
|
||||||
* \param screen The logical screen number.
|
|
||||||
* \param x X coordinate
|
|
||||||
* \param y Y coordinate
|
|
||||||
* \return Screen number or screen param if no match or no multi-head.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
screen_get_bycoord(screens_info_t *si, int screen, int x, int y)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* don't waste our time */
|
|
||||||
if(!si->xinerama_is_active)
|
|
||||||
return screen;
|
|
||||||
|
|
||||||
for(i = 0; i < si->nscreen; i++)
|
|
||||||
if((x < 0 || (x >= si->geometry[i].x && x < si->geometry[i].x + si->geometry[i].width))
|
|
||||||
&& (y < 0 || (y >= si->geometry[i].y && y < si->geometry[i].y + si->geometry[i].height)))
|
|
||||||
return i;
|
|
||||||
|
|
||||||
return screen;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline area_t
|
static inline area_t
|
||||||
screen_xsitoarea(xcb_xinerama_screen_info_t si)
|
screen_xsitoarea(xcb_xinerama_screen_info_t si)
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,7 +31,6 @@ typedef struct
|
||||||
area_t *geometry;
|
area_t *geometry;
|
||||||
} screens_info_t;
|
} screens_info_t;
|
||||||
|
|
||||||
int screen_get_bycoord(screens_info_t *, int, int, int);
|
|
||||||
void screensinfo_delete(screens_info_t **);
|
void screensinfo_delete(screens_info_t **);
|
||||||
screens_info_t * screensinfo_new(xcb_connection_t *);
|
screens_info_t * screensinfo_new(xcb_connection_t *);
|
||||||
|
|
||||||
|
|
4
event.c
4
event.c
|
@ -38,6 +38,7 @@
|
||||||
#include "lua.h"
|
#include "lua.h"
|
||||||
#include "systray.h"
|
#include "systray.h"
|
||||||
#include "statusbar.h"
|
#include "statusbar.h"
|
||||||
|
#include "screen.h"
|
||||||
#include "layouts/floating.h"
|
#include "layouts/floating.h"
|
||||||
#include "common/atoms.h"
|
#include "common/atoms.h"
|
||||||
|
|
||||||
|
@ -610,8 +611,7 @@ event_handle_maprequest(void *data __attribute__ ((unused)),
|
||||||
|
|
||||||
if(globalconf.screens_info->xinerama_is_active
|
if(globalconf.screens_info->xinerama_is_active
|
||||||
&& (qp_r = xcb_query_pointer_reply(connection, qp_c, NULL)))
|
&& (qp_r = xcb_query_pointer_reply(connection, qp_c, NULL)))
|
||||||
screen = screen_get_bycoord(globalconf.screens_info, screen,
|
screen = screen_getbycoord(screen, qp_r->root_x, qp_r->root_y);
|
||||||
qp_r->root_x, qp_r->root_y);
|
|
||||||
else
|
else
|
||||||
screen = phys_screen;
|
screen = phys_screen;
|
||||||
|
|
||||||
|
|
5
mouse.c
5
mouse.c
|
@ -540,8 +540,7 @@ mouse_client_move(client_t *c, int snap, bool infobox)
|
||||||
client_t *target;
|
client_t *target;
|
||||||
|
|
||||||
/* client moved to another screen? */
|
/* client moved to another screen? */
|
||||||
newscreen = screen_get_bycoord(globalconf.screens_info, c->screen,
|
newscreen = screen_getbycoord(c->screen, mouse_x, mouse_y);
|
||||||
mouse_x, mouse_y);
|
|
||||||
if(newscreen != c->screen)
|
if(newscreen != c->screen)
|
||||||
{
|
{
|
||||||
screen_client_moveto(c, newscreen, true);
|
screen_client_moveto(c, newscreen, true);
|
||||||
|
@ -1188,7 +1187,7 @@ luaA_mouse_index(lua_State *L)
|
||||||
if(!mouse_query_pointer_root(&screen, &mouse_x, &mouse_y, NULL))
|
if(!mouse_query_pointer_root(&screen, &mouse_x, &mouse_y, NULL))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
i = screen_get_bycoord(globalconf.screens_info, screen, mouse_x, mouse_y);
|
i = screen_getbycoord(screen, mouse_x, mouse_y);
|
||||||
|
|
||||||
lua_pushnumber(L, i + 1);
|
lua_pushnumber(L, i + 1);
|
||||||
break;
|
break;
|
||||||
|
|
24
screen.c
24
screen.c
|
@ -32,6 +32,30 @@
|
||||||
|
|
||||||
extern awesome_t globalconf;
|
extern awesome_t globalconf;
|
||||||
|
|
||||||
|
/** Return the Xinerama screen number where the coordinates belongs to.
|
||||||
|
* \param screen The logical screen number.
|
||||||
|
* \param x X coordinate
|
||||||
|
* \param y Y coordinate
|
||||||
|
* \return Screen number or screen param if no match or no multi-head.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
screen_getbycoord(int screen, int x, int y)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
screens_info_t *si = globalconf.screens_info;
|
||||||
|
|
||||||
|
/* don't waste our time */
|
||||||
|
if(!si->xinerama_is_active)
|
||||||
|
return screen;
|
||||||
|
|
||||||
|
for(i = 0; i < si->nscreen; i++)
|
||||||
|
if((x < 0 || (x >= si->geometry[i].x && x < si->geometry[i].x + si->geometry[i].width))
|
||||||
|
&& (y < 0 || (y >= si->geometry[i].y && y < si->geometry[i].y + si->geometry[i].height)))
|
||||||
|
return i;
|
||||||
|
|
||||||
|
return screen;
|
||||||
|
}
|
||||||
|
|
||||||
/** Get screens info.
|
/** Get screens info.
|
||||||
* \param screen Screen number.
|
* \param screen Screen number.
|
||||||
* \param statusbar Statusbar list to remove.
|
* \param statusbar Statusbar list to remove.
|
||||||
|
|
1
screen.h
1
screen.h
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#define SCREEN_UNDEF (-1)
|
#define SCREEN_UNDEF (-1)
|
||||||
|
|
||||||
|
int screen_getbycoord(int, int, int);
|
||||||
area_t screen_area_get(int, statusbar_t *, padding_t *, bool);
|
area_t screen_area_get(int, statusbar_t *, padding_t *, bool);
|
||||||
area_t display_area_get(int, statusbar_t *, padding_t *);
|
area_t display_area_get(int, statusbar_t *, padding_t *);
|
||||||
int screen_virttophys(int);
|
int screen_virttophys(int);
|
||||||
|
|
Loading…
Reference in New Issue