mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 12:58:08 +01:00
- Fixed edge resistance and move/resize frame drawing for borderless windows
This commit is contained in:
@@ -49,6 +49,7 @@ Changes since version 0.80.2:
|
|||||||
(this is to be consistent with deminiaturizing application's miniwindows
|
(this is to be consistent with deminiaturizing application's miniwindows
|
||||||
which also happens in this case, since shading is a form of miniaturization)
|
which also happens in this case, since shading is a form of miniaturization)
|
||||||
- Fixed bug with tpixmap from previous xinerama patch
|
- 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:
|
Changes since version 0.80.1:
|
||||||
|
|||||||
@@ -62,6 +62,13 @@
|
|||||||
#define DOWN 8
|
#define DOWN 8
|
||||||
#define VERTICAL (UP|DOWN)
|
#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 ******/
|
/****** Global Variables ******/
|
||||||
extern Time LastTimestamp;
|
extern Time LastTimestamp;
|
||||||
|
|
||||||
@@ -256,6 +263,17 @@ showGeometry(WWindow *wwin, int x1, int y1, int x2, int y2, int direction)
|
|||||||
WMColor *color;
|
WMColor *color;
|
||||||
WMPixel pixel;
|
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;
|
ty = y1 + wwin->frame->top_width;
|
||||||
by = y2 - wwin->frame->bottom_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 h = 0;
|
||||||
int bottom = 0;
|
int bottom = 0;
|
||||||
|
|
||||||
|
if (HAS_BORDER(wwin)) {
|
||||||
|
x += FRAME_BORDER_WIDTH;
|
||||||
|
y += FRAME_BORDER_WIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
if (!WFLAGP(wwin, no_titlebar) && !wwin->flags.shaded) {
|
if (!WFLAGP(wwin, no_titlebar) && !wwin->flags.shaded) {
|
||||||
h = WMFontHeight(wwin->screen_ptr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2;
|
h = WMFontHeight(wwin->screen_ptr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2;
|
||||||
}
|
}
|
||||||
if (!WFLAGP(wwin, no_resizebar) && !wwin->flags.shaded) {
|
if (!WFLAGP(wwin, no_resizebar) && !wwin->flags.shaded) {
|
||||||
/* Can't use wwin-frame->bottom_width because, in some cases
|
/* Can't use wwin-frame->bottom_width because, in some cases
|
||||||
(e.g. interactive placement), frame does not point to anything. */
|
(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) {
|
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) {
|
if (bottom > 0) {
|
||||||
XDrawLine(dpy, root, gc, x + 1,
|
XDrawLine(dpy, root, gc, x, y + height - bottom,
|
||||||
y + height - bottom,
|
x + width, y + height - bottom);
|
||||||
x + width + 1,
|
|
||||||
y + height - bottom);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -642,8 +663,10 @@ typedef struct {
|
|||||||
|
|
||||||
#define WTOP(w) (w)->frame_y
|
#define WTOP(w) (w)->frame_y
|
||||||
#define WLEFT(w) (w)->frame_x
|
#define WLEFT(w) (w)->frame_x
|
||||||
#define WRIGHT(w) ((w)->frame_x + (int)(w)->frame->core->width + FRAME_BORDER_WIDTH)
|
#define WRIGHT(w) ((w)->frame_x + (int)(w)->frame->core->width - 1 + \
|
||||||
#define WBOTTOM(w) ((w)->frame_y + (int)(w)->frame->core->height + FRAME_BORDER_WIDTH)
|
(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
|
static int
|
||||||
compareWTop(const void *a, const void *b)
|
compareWTop(const void *a, const void *b)
|
||||||
@@ -901,8 +924,10 @@ initMoveData(WWindow *wwin, MoveData *data)
|
|||||||
data->calcX = wwin->frame_x;
|
data->calcX = wwin->frame_x;
|
||||||
data->calcY = wwin->frame_y;
|
data->calcY = wwin->frame_y;
|
||||||
|
|
||||||
data->winWidth = wwin->frame->core->width + 2;
|
data->winWidth = wwin->frame->core->width +
|
||||||
data->winHeight = wwin->frame->core->height + 2;
|
(HAS_BORDER(wwin) ? 2*FRAME_BORDER_WIDTH : 0);
|
||||||
|
data->winHeight = wwin->frame->core->height +
|
||||||
|
(HAS_BORDER(wwin) ? 2*FRAME_BORDER_WIDTH : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1425,7 +1425,7 @@ main(int argc, char **argv)
|
|||||||
WMPropList *val;
|
WMPropList *val;
|
||||||
#if 0 /* some problem with Alpha... TODO: check if its right */
|
#if 0 /* some problem with Alpha... TODO: check if its right */
|
||||||
val = WMGetFromPLDictionary(domain,
|
val = WMGetFromPLDictionary(domain,
|
||||||
WMCreatePLString("SmoothWorkspaceBack"));
|
WMCreatePLString("SmoothWorkspaceBack"));
|
||||||
#else
|
#else
|
||||||
val = getValueForKey(domain, "SmoothWorkspaceBack");
|
val = getValueForKey(domain, "SmoothWorkspaceBack");
|
||||||
#endif
|
#endif
|
||||||
@@ -1439,7 +1439,7 @@ main(int argc, char **argv)
|
|||||||
wfatal("could not open display");
|
wfatal("could not open display");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
#if 1
|
#if 0
|
||||||
XSynchronize(dpy, 1);
|
XSynchronize(dpy, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user