1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-14 12:55:47 +01:00

- Added xdnd v3 support in WINGs (Sylvain Reynal <sreynal@nerim.net>)

- CVS should compile again
This commit is contained in:
dan
2004-04-07 02:50:52 +00:00
parent 791bb6a444
commit e7d0c5d9e9
23 changed files with 4372 additions and 3734 deletions

View File

@@ -9,8 +9,8 @@ typedef struct W_Frame {
char *caption;
struct {
WMReliefType relief:4;
WMTitlePosition titlePosition:4;
WMReliefType relief:4;
WMTitlePosition titlePosition:4;
} flags;
} Frame;
@@ -33,7 +33,7 @@ WMSetFrameTitlePosition(WMFrame *fPtr, WMTitlePosition position)
fPtr->flags.titlePosition = position;
if (fPtr->view->flags.realized) {
repaintFrame(fPtr);
repaintFrame(fPtr);
}
}
@@ -98,101 +98,101 @@ paintFrame(Frame *fPtr)
fh = view->size.height;
fy = 0;
switch (fPtr->flags.titlePosition) {
case WTPAboveTop:
ty = 0;
fy = th + 4;
fh = view->size.height - fy;
break;
case WTPAtTop:
ty = 0;
fy = th/2;
fh = view->size.height - fy;
break;
case WTPBelowTop:
ty = 4;
fy = 0;
fh = view->size.height;
break;
case WTPAboveBottom:
ty = view->size.height - th - 4;
fy = 0;
fh = view->size.height;
break;
case WTPAtBottom:
ty = view->size.height - th;
fy = 0;
fh = view->size.height - th/2;
break;
case WTPBelowBottom:
ty = view->size.height - th;
fy = 0;
fh = view->size.height - th - 4;
break;
default:
ty = 0;
fy = 0;
fh = view->size.height;
case WTPAboveTop:
ty = 0;
fy = th + 4;
fh = view->size.height - fy;
break;
case WTPAtTop:
ty = 0;
fy = th/2;
fh = view->size.height - fy;
break;
case WTPBelowTop:
ty = 4;
fy = 0;
fh = view->size.height;
break;
case WTPAboveBottom:
ty = view->size.height - th - 4;
fy = 0;
fh = view->size.height;
break;
case WTPAtBottom:
ty = view->size.height - th;
fy = 0;
fh = view->size.height - th/2;
break;
case WTPBelowBottom:
ty = view->size.height - th;
fy = 0;
fh = view->size.height - th - 4;
break;
default:
ty = 0;
fy = 0;
fh = view->size.height;
}
if (tlen>0 && fPtr->flags.titlePosition!=WTPNoTitle) {
tw = WMWidthOfString(font, fPtr->caption, tlen);
tw = WMWidthOfString(font, fPtr->caption, tlen);
tx = (view->size.width - tw) / 2;
drawTitle = True;
} else {
drawTitle = False;
drawTitle = False;
}
{
XRectangle rect;
Region region, tmp;
GC gc[4];
int i;
XRectangle rect;
Region region, tmp;
GC gc[4];
int i;
region = XCreateRegion();
region = XCreateRegion();
if (drawTitle) {
tmp = XCreateRegion();
rect.x = tx;
rect.y = ty;
rect.width = tw;
rect.height = th;
XUnionRectWithRegion(&rect, tmp, tmp);
}
rect.x = 0;
rect.y = 0;
rect.width = view->size.width;
rect.height = view->size.height;
XUnionRectWithRegion(&rect, region, region);
if (drawTitle) {
XSubtractRegion(region, tmp, region);
XDestroyRegion(tmp);
}
gc[0] = WMColorGC(scrPtr->black);
gc[1] = WMColorGC(scrPtr->darkGray);
gc[2] = WMColorGC(scrPtr->gray);
gc[3] = WMColorGC(scrPtr->white);
if (drawTitle) {
tmp = XCreateRegion();
rect.x = tx;
rect.y = ty;
rect.width = tw;
rect.height = th;
XUnionRectWithRegion(&rect, tmp, tmp);
}
rect.x = 0;
rect.y = 0;
rect.width = view->size.width;
rect.height = view->size.height;
XUnionRectWithRegion(&rect, region, region);
if (drawTitle) {
XSubtractRegion(region, tmp, region);
XDestroyRegion(tmp);
}
gc[0] = WMColorGC(scrPtr->black);
gc[1] = WMColorGC(scrPtr->darkGray);
gc[2] = WMColorGC(scrPtr->gray);
gc[3] = WMColorGC(scrPtr->white);
for (i = 0; i < 4; i++) {
XSetRegion(display, gc[i], region);
}
XDestroyRegion(region);
for (i = 0; i < 4; i++) {
XSetRegion(display, gc[i], region);
}
XDestroyRegion(region);
W_DrawReliefWithGC(scrPtr, view->window, 0, fy, view->size.width, fh,
fPtr->flags.relief, gc[0], gc[1], gc[2], gc[3]);
W_DrawReliefWithGC(scrPtr, view->window, 0, fy, view->size.width, fh,
fPtr->flags.relief, gc[0], gc[1], gc[2], gc[3]);
for (i = 0; i < 4; i++) {
XSetClipMask(display, gc[i], None);
}
for (i = 0; i < 4; i++) {
XSetClipMask(display, gc[i], None);
}
}
if (drawTitle) {
@@ -226,14 +226,14 @@ handleEvents(XEvent *event, void *data)
CHECK_CLASS(data, WC_Frame);
switch (event->type) {
case Expose:
if (event->xexpose.count == 0)
paintFrame(fPtr);
break;
case DestroyNotify:
destroyFrame(fPtr);
break;
case Expose:
if (event->xexpose.count == 0)
paintFrame(fPtr);
break;
case DestroyNotify:
destroyFrame(fPtr);
break;
}
}
@@ -242,7 +242,7 @@ WMFrame*
WMCreateFrame(WMWidget *parent)
{
Frame *fPtr;
fPtr = wmalloc(sizeof(Frame));
memset(fPtr, 0, sizeof(Frame));
@@ -250,29 +250,29 @@ WMCreateFrame(WMWidget *parent)
fPtr->view = W_CreateView(W_VIEW(parent));
if (!fPtr->view) {
wfree(fPtr);
return NULL;
wfree(fPtr);
return NULL;
}
fPtr->view->self = fPtr;
WMCreateEventHandler(fPtr->view, ExposureMask|StructureNotifyMask,
handleEvents, fPtr);
handleEvents, fPtr);
fPtr->flags.relief = DEFAULT_RELIEF;
fPtr->flags.titlePosition = DEFAULT_TITLE_POSITION;
WMResizeWidget(fPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT);
return fPtr;
}
static void
destroyFrame(Frame *fPtr)
{
{
if (fPtr->caption)
wfree(fPtr->caption);
wfree(fPtr->caption);
wfree(fPtr);
}