Merge pull request #1067 from BlueUsername/tiling-to-floating-window-fix
Fix a bug moving between a tiled and a floating screen.
This commit is contained in:
commit
587cc530c7
|
@ -1506,7 +1506,7 @@ client_resize_do(client_t *c, area_t geometry, bool force_notice)
|
|||
bool java_is_broken = true;
|
||||
|
||||
screen_t *new_screen = c->screen;
|
||||
if(!screen_coord_in_screen(new_screen, geometry.x, geometry.y))
|
||||
if(!screen_area_in_screen(new_screen, geometry))
|
||||
new_screen = screen_getbycoord(geometry.x, geometry.y);
|
||||
|
||||
if(c->geometry.width == geometry.width
|
||||
|
|
|
@ -731,6 +731,20 @@ screen_coord_in_screen(screen_t *s, int x, int y)
|
|||
&& (y >= s->geometry.y && y < s->geometry.y + s->geometry.height);
|
||||
}
|
||||
|
||||
/** Is there any overlap between the given geometry and a given screen?
|
||||
* \param screen The logical screen number.
|
||||
* \param geom The geometry
|
||||
* \return True if there is any overlap between the geometry and a given screen.
|
||||
*/
|
||||
bool
|
||||
screen_area_in_screen(screen_t *s, area_t geom)
|
||||
{
|
||||
return (geom.x < s->geometry.x + s->geometry.width)
|
||||
&& (geom.x + geom.width > s->geometry.x )
|
||||
&& (geom.y < s->geometry.y + s->geometry.height)
|
||||
&& (geom.y + geom.height > s->geometry.y);
|
||||
}
|
||||
|
||||
void screen_update_workarea(screen_t *screen)
|
||||
{
|
||||
area_t area = screen->geometry;
|
||||
|
|
|
@ -50,6 +50,7 @@ void screen_class_setup(lua_State *L);
|
|||
void screen_scan(void);
|
||||
screen_t *screen_getbycoord(int, int);
|
||||
bool screen_coord_in_screen(screen_t *, int, int);
|
||||
bool screen_area_in_screen(screen_t *, area_t);
|
||||
int screen_get_index(screen_t *);
|
||||
area_t display_area_get(void);
|
||||
void screen_client_moveto(client_t *, screen_t *, bool);
|
||||
|
|
Loading…
Reference in New Issue