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

- Fixed edge resistance and move/resize frame drawing for borderless windows

This commit is contained in:
dan
2003-02-16 01:47:58 +00:00
parent 7a8bde44fa
commit b5ef388711
3 changed files with 39 additions and 13 deletions

View File

@@ -49,6 +49,7 @@ Changes since version 0.80.2:
(this is to be consistent with deminiaturizing application's miniwindows
which also happens in this case, since shading is a form of miniaturization)
- Fixed bug with tpixmap from previous xinerama patch
- Fixed edge resistance and move/resize frame drawing for borderless windows
Changes since version 0.80.1:

View File

@@ -62,6 +62,13 @@
#define DOWN 8
#define VERTICAL (UP|DOWN)
/* True if window currently has a border. This also includes borderless
* windows which are currently selected
*/
#define HAS_BORDER(w) ((w)->flags.selected || !WFLAGP((w), no_border))
/****** Global Variables ******/
extern Time LastTimestamp;
@@ -256,6 +263,17 @@ showGeometry(WWindow *wwin, int x1, int y1, int x2, int y2, int direction)
WMColor *color;
WMPixel pixel;
/* This seems necessary for some odd reason (too lazy to write x1-1 and
* x2-1 everywhere below in the code). But why only for x? */
x1--; x2--;
if (HAS_BORDER(wwin)) {
x1 += FRAME_BORDER_WIDTH;
x2 += FRAME_BORDER_WIDTH;
y1 += FRAME_BORDER_WIDTH;
y2 += FRAME_BORDER_WIDTH;
}
ty = y1 + wwin->frame->top_width;
by = y2 - wwin->frame->bottom_width;
@@ -503,24 +521,27 @@ drawTransparentFrame(WWindow *wwin, int x, int y, int width, int height)
int h = 0;
int bottom = 0;
if (HAS_BORDER(wwin)) {
x += FRAME_BORDER_WIDTH;
y += FRAME_BORDER_WIDTH;
}
if (!WFLAGP(wwin, no_titlebar) && !wwin->flags.shaded) {
h = WMFontHeight(wwin->screen_ptr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2;
}
if (!WFLAGP(wwin, no_resizebar) && !wwin->flags.shaded) {
/* Can't use wwin-frame->bottom_width because, in some cases
(e.g. interactive placement), frame does not point to anything. */
bottom = RESIZEBAR_HEIGHT - 1;
bottom = RESIZEBAR_HEIGHT;
}
XDrawRectangle(dpy, root, gc, x, y, width + 1, height + 1);
XDrawRectangle(dpy, root, gc, x - 1, y - 1, width + 1, height + 1);
if (h > 0) {
XDrawLine(dpy, root, gc, x + 1, y + h, x + width + 1, y + h);
XDrawLine(dpy, root, gc, x, y + h - 1, x + width, y + h - 1);
}
if (bottom > 0) {
XDrawLine(dpy, root, gc, x + 1,
y + height - bottom,
x + width + 1,
y + height - bottom);
XDrawLine(dpy, root, gc, x, y + height - bottom,
x + width, y + height - bottom);
}
}
@@ -642,8 +663,10 @@ typedef struct {
#define WTOP(w) (w)->frame_y
#define WLEFT(w) (w)->frame_x
#define WRIGHT(w) ((w)->frame_x + (int)(w)->frame->core->width + FRAME_BORDER_WIDTH)
#define WBOTTOM(w) ((w)->frame_y + (int)(w)->frame->core->height + FRAME_BORDER_WIDTH)
#define WRIGHT(w) ((w)->frame_x + (int)(w)->frame->core->width - 1 + \
(HAS_BORDER(w) ? 2*FRAME_BORDER_WIDTH : 0))
#define WBOTTOM(w) ((w)->frame_y + (int)(w)->frame->core->height - 1 + \
(HAS_BORDER(w) ? 2*FRAME_BORDER_WIDTH : 0))
static int
compareWTop(const void *a, const void *b)
@@ -901,8 +924,10 @@ initMoveData(WWindow *wwin, MoveData *data)
data->calcX = wwin->frame_x;
data->calcY = wwin->frame_y;
data->winWidth = wwin->frame->core->width + 2;
data->winHeight = wwin->frame->core->height + 2;
data->winWidth = wwin->frame->core->width +
(HAS_BORDER(wwin) ? 2*FRAME_BORDER_WIDTH : 0);
data->winHeight = wwin->frame->core->height +
(HAS_BORDER(wwin) ? 2*FRAME_BORDER_WIDTH : 0);
}

View File

@@ -1425,7 +1425,7 @@ main(int argc, char **argv)
WMPropList *val;
#if 0 /* some problem with Alpha... TODO: check if its right */
val = WMGetFromPLDictionary(domain,
WMCreatePLString("SmoothWorkspaceBack"));
WMCreatePLString("SmoothWorkspaceBack"));
#else
val = getValueForKey(domain, "SmoothWorkspaceBack");
#endif
@@ -1439,7 +1439,7 @@ main(int argc, char **argv)
wfatal("could not open display");
exit(1);
}
#if 1
#if 0
XSynchronize(dpy, 1);
#endif