1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-22 05:48:01 +01:00

forget something in v edge

This commit is contained in:
id
2000-11-20 01:57:17 +00:00
parent 9d98d884ae
commit 8055698df0

View File

@@ -699,13 +699,33 @@ void wWorkspaceAdjustViewPort(WScreen *scr, int workspace, int view_x, int view_
{ {
int diff_x, diff_y; int diff_x, diff_y;
int lay_left, lay_right, lay_top, lay_bottom;
WWindow *wwin; WWindow *wwin;
lay_left = lay_top = 0;
lay_right = scr->scr_width;
lay_bottom = scr->scr_height;
diff_x = scr->workspaces[workspace]->view_x - view_x; diff_x = scr->workspaces[workspace]->view_x - view_x;
diff_y = scr->workspaces[workspace]->view_y - view_y; diff_y = scr->workspaces[workspace]->view_y - view_y;
if (!diff_x && !diff_y) return;
wwin = scr->focused_window; wwin = scr->focused_window;
while (wwin) { while (wwin) {
if (wwin->frame_x < lay_left) { /* record positions */
lay_left = wwin->frame_x;
} else if (wwin->frame_x + wwin->frame->core->width > lay_right) {
lay_right = wwin->frame_x + wwin->frame->core->width;
}
if (wwin->frame_y < lay_top) {
lay_top = wwin->frame_y;
} else if (wwin->frame_y + wwin->frame->core->height > lay_bottom) {
lay_top = wwin->frame_y + wwin->frame->core->height;
}
if (wwin->frame->workspace == workspace) { if (wwin->frame->workspace == workspace) {
wWindowMove(wwin, wwin->frame_x + diff_x, wwin->frame_y + diff_y); wWindowMove(wwin, wwin->frame_x + diff_x, wwin->frame_y + diff_y);
wWindowSynthConfigureNotify(wwin); wWindowSynthConfigureNotify(wwin);
@@ -714,17 +734,35 @@ void wWorkspaceAdjustViewPort(WScreen *scr, int workspace, int view_x, int view_
} }
if (scr->workspaces[workspace]->view_x < 0) { if (scr->workspaces[workspace]->view_x < 0) {
scr->workspaces[workspace]->width -= view_x; scr->workspaces[workspace]->width -= view_x;
scr->workspaces[workspace]->view_x = 0; scr->workspaces[workspace]->view_x = 0;
} else if (scr->workspaces[workspace]->view_x > scr->workspaces[workspace]->width - scr->scr_width) { } else if (scr->workspaces[workspace]->view_x > scr->workspaces[workspace]->width - scr->scr_width) {
scr->workspaces[workspace]->width = scr->workspaces[workspace]->view_x + scr->scr_width; scr->workspaces[workspace]->width = scr->workspaces[workspace]->view_x + scr->scr_width;
}
if (scr->workspaces[workspace]->view_x > lay_left) {
/* should do lay_left + some very big edge here so users can have their own blank area*/
scr->workspaces[workspace]->width -= scr->workspaces[workspace]->view_x - lay_left;
scr->workspaces[workspace]->view_x = lay_left;
}
if (scr->workspaces[workspace]->view_x + scr->scr_width > lay_right) {
scr->workspaces[workspace]->width -= scr->workspaces[workspace]->view_x + scr->scr_width - lay_right;
} }
if (scr->workspaces[workspace]->view_y < 0) { if (scr->workspaces[workspace]->view_y < 0) {
scr->workspaces[workspace]->height -= view_y; scr->workspaces[workspace]->height -= view_y;
scr->workspaces[workspace]->view_y = 0; scr->workspaces[workspace]->view_y = 0;
} else if (scr->workspaces[workspace]->view_y > scr->workspaces[workspace]->height - scr->scr_height) { } else if (scr->workspaces[workspace]->view_y > scr->workspaces[workspace]->height - scr->scr_height) {
scr->workspaces[workspace]->height = scr->workspaces[workspace]->view_y + scr->scr_height; scr->workspaces[workspace]->height = scr->workspaces[workspace]->view_y + scr->scr_height;
}
if (scr->workspaces[workspace]->view_y > lay_top) {
/* should do lay_left + some very big edge here so users can have their own blank area*/
scr->workspaces[workspace]->height -= scr->workspaces[workspace]->view_y - lay_top;
scr->workspaces[workspace]->view_y = lay_top;
}
if (scr->workspaces[workspace]->view_y + scr->scr_height > lay_bottom) {
scr->workspaces[workspace]->height -= scr->workspaces[workspace]->view_y + scr->scr_height - lay_left;
} }
scr->workspaces[workspace]->view_x = WMIN(view_x, scr->workspaces[workspace]->width - scr->scr_width); scr->workspaces[workspace]->view_x = WMIN(view_x, scr->workspaces[workspace]->width - scr->scr_width);