mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 04:48:06 +01:00
Remove 'ghost window move' code
GHOST_WINDOW_MOVE was not defined anywhere. Let's remove that code.
This commit is contained in:
@@ -1576,9 +1576,6 @@ int wMouseMoveWindow(WWindow * wwin, XEvent * ev)
|
|||||||
int head = ((wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1)
|
int head = ((wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1)
|
||||||
? wGetHeadForWindow(wwin)
|
? wGetHeadForWindow(wwin)
|
||||||
: scr->xine_info.primary_head);
|
: scr->xine_info.primary_head);
|
||||||
#ifdef GHOST_WINDOW_MOVE
|
|
||||||
RImage *rimg = InitGhostWindowMove(scr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!IS_MOVABLE(wwin))
|
if (!IS_MOVABLE(wwin))
|
||||||
return False;
|
return False;
|
||||||
|
|||||||
@@ -498,226 +498,4 @@ Bool InitXThing(WScreen * scr)
|
|||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* SILLYNESS */
|
#endif /* SILLYNESS */
|
||||||
|
|
||||||
#ifdef GHOST_WINDOW_MOVE
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
WScreen *scr;
|
|
||||||
|
|
||||||
int width, height;
|
|
||||||
|
|
||||||
int iniX, iniY;
|
|
||||||
int boxX, boxY;
|
|
||||||
|
|
||||||
Window window;
|
|
||||||
|
|
||||||
RXImage *winImage;
|
|
||||||
|
|
||||||
RXImage *backImage;
|
|
||||||
|
|
||||||
/* the combined image */
|
|
||||||
RXImage *image;
|
|
||||||
Pixmap pixmap;
|
|
||||||
|
|
||||||
} _GhostWindowData;
|
|
||||||
|
|
||||||
_GhostWindowData *InitGhostWindowMove(WWindow * wwin)
|
|
||||||
{
|
|
||||||
_GhostWindowData *gdata;
|
|
||||||
WScreen *scr = wwin->screen_ptr;
|
|
||||||
unsigned short *ptr;
|
|
||||||
unsigned short mask;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
gdata = wmalloc(sizeof(_GhostWindowData));
|
|
||||||
|
|
||||||
gdata->width = wwin->frame->core->width;
|
|
||||||
gdata->height = wwin->frame->core->height;
|
|
||||||
|
|
||||||
gdata->iniX = wwin->frame_x;
|
|
||||||
gdata->iniY = wwin->frame_y;
|
|
||||||
|
|
||||||
gdata->boxX = wwin->frame_x;
|
|
||||||
gdata->boxY = wwin->frame_y;
|
|
||||||
|
|
||||||
gdata->window =
|
|
||||||
XCreateSimpleWindow(dpy, scr->root_win, wwin->frame_x, wwin->frame_y,
|
|
||||||
gdata->width, gdata->height, 0, 0, 0);
|
|
||||||
|
|
||||||
gdata->winImage = RGetXImage(scr->rcontext, wwin->frame->core->window, 0, 0, gdata->width, gdata->height);
|
|
||||||
|
|
||||||
gdata->backImage = RCreateXImage(scr->rcontext, scr->w_depth, gdata->width, gdata->height);
|
|
||||||
|
|
||||||
memcpy(gdata->backImage->image->data, gdata->winImage->image->data,
|
|
||||||
gdata->winImage->image->bytes_per_line * gdata->height);
|
|
||||||
|
|
||||||
gdata->image = RCreateXImage(scr->rcontext, scr->w_depth, gdata->width, gdata->height);
|
|
||||||
|
|
||||||
ptr = (unsigned short *)gdata->winImage->image->data;
|
|
||||||
|
|
||||||
mask = 0x7b00 | 0x3d0 | 0x1e;
|
|
||||||
|
|
||||||
for (i = 0; i < gdata->winImage->image->bytes_per_line * gdata->height; i++, ptr++) {
|
|
||||||
|
|
||||||
*ptr &= mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
return gdata;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mergeGhostWindow(_GhostWindowData * gdata)
|
|
||||||
{
|
|
||||||
register unsigned short *ptrw, *ptrb, *ptr;
|
|
||||||
int count;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
ptr = (unsigned short *)gdata->image->image->data;
|
|
||||||
ptrw = (unsigned short *)gdata->winImage->image->data;
|
|
||||||
ptrb = (unsigned short *)gdata->backImage->image->data;
|
|
||||||
|
|
||||||
count = gdata->winImage->image->bytes_per_line * gdata->height;
|
|
||||||
|
|
||||||
while (count--) {
|
|
||||||
*ptr = (*ptrw + *ptrb) >> 1;
|
|
||||||
|
|
||||||
ptr++;
|
|
||||||
ptrw++;
|
|
||||||
ptrb++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateGhostWindowMove(void *data, int x, int y)
|
|
||||||
{
|
|
||||||
_GhostWindowData *gdata = (_GhostWindowData *) data;
|
|
||||||
WScreen *scr = gdata->scr;
|
|
||||||
|
|
||||||
/* no intersection of new background with current */
|
|
||||||
if (x + gdata->width <= gdata->boxX
|
|
||||||
|| x >= gdata->boxX + gdata->width
|
|
||||||
|| y + gdata->height <= gdata->boxY || y >= gdata->boxY + gdata->height) {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
RDestroyXImage(gdata->backImage);
|
|
||||||
|
|
||||||
gdata->backImage = RGetXImage(scr->rcontext, scr->root_win, x, y, gdata->width, gdata->height);
|
|
||||||
|
|
||||||
ptr = (unsigned short *)gdata->backImage->image->data;
|
|
||||||
|
|
||||||
mask = 0x7b00 | 0x3d0 | 0x1e;
|
|
||||||
|
|
||||||
for (i = 0; i < gdata->winImage->image->bytes_per_line * gdata->height; i++, ptr++) {
|
|
||||||
|
|
||||||
*ptr &= mask;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
int hx, hw, hy, hh;
|
|
||||||
int vx, vw, vy, vh;
|
|
||||||
int i, j;
|
|
||||||
unsigned char *backP = gdata->backImage->image->data;
|
|
||||||
unsigned char *winP = gdata->winImage->image->data;
|
|
||||||
int backLineLen = gdata->backImage->image->bytes_per_line;
|
|
||||||
int winLineLen = gdata->winImage->image->bytes_per_line;
|
|
||||||
|
|
||||||
/* 1st move the area of the current backImage that overlaps
|
|
||||||
* the new backImage to it's new position */
|
|
||||||
|
|
||||||
if (x < gdata->boxX) {
|
|
||||||
vx = x + gdata->width;
|
|
||||||
vw = gdata->width - vx;
|
|
||||||
} else if (x > gdata->boxX) {
|
|
||||||
vw = gdata->boxX + gdata->width - x;
|
|
||||||
vx = gdata->boxX - vw;
|
|
||||||
} else {
|
|
||||||
vx = 0;
|
|
||||||
vw = gdata->width;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (y < gdata->boxY) {
|
|
||||||
vy = y + gdata->height;
|
|
||||||
vh = gdata->height - vy;
|
|
||||||
} else if (y > gdata->boxY) {
|
|
||||||
vh = gdata->boxY + gdata->height - y;
|
|
||||||
vy = gdata->boxY - vh;
|
|
||||||
} else {
|
|
||||||
vy = 0;
|
|
||||||
vh = gdata->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (y < gdata->boxY) {
|
|
||||||
int dy = vy - gdata->boxY;
|
|
||||||
|
|
||||||
if (x < gdata->boxX) {
|
|
||||||
for (i = vh - 1; i >= 0; i--) {
|
|
||||||
memmove(&backP[(i + dy) * backLineLen + 2 * vx],
|
|
||||||
&backP[i * backLineLen], 2 * vw);
|
|
||||||
}
|
|
||||||
} else { /* if (x > gdata->boxX) */
|
|
||||||
|
|
||||||
for (i = vh - 1; i >= 0; i--) {
|
|
||||||
memmove(&backP[(i + dy) * backLineLen],
|
|
||||||
&backP[i * backLineLen + 2 * vx], 2 * vw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else { /*if (y > gdata->boxY) */
|
|
||||||
|
|
||||||
int dy = gdata->boxY - vy;
|
|
||||||
|
|
||||||
if (x < gdata->boxX) {
|
|
||||||
for (i = 0; i < vh - 1; i++) {
|
|
||||||
memmove(&backP[i * backLineLen + 2 * vx],
|
|
||||||
&backP[(i + dy) * backLineLen], 2 * vw);
|
|
||||||
}
|
|
||||||
} else { /*if (x > gdata->boxX) */
|
|
||||||
|
|
||||||
for (i = 0; i < vh - 1; i++) {
|
|
||||||
memmove(&backP[i * backLineLen],
|
|
||||||
&backP[(i + dy) * backLineLen + 2 * vx], 2 * vw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 2nd grab the background image from the screen and copy to the
|
|
||||||
* buffer. also maskout the lsb of rgb in each pixel of grabbed data */
|
|
||||||
|
|
||||||
if (y < gdata->boxY) {
|
|
||||||
vy = y;
|
|
||||||
vh = gdata->boxY - vy;
|
|
||||||
|
|
||||||
hy = y + vh;
|
|
||||||
hh = gdata->height - vh;
|
|
||||||
} else if (y > gdata->boxY) {
|
|
||||||
vy = gdata->boxY + gdata->height;
|
|
||||||
vh = vy - (y + gdata->height);
|
|
||||||
|
|
||||||
hy = y;
|
|
||||||
hh = y - gdata->boxY;
|
|
||||||
} else {
|
|
||||||
vy = vh = 0;
|
|
||||||
|
|
||||||
hy = y;
|
|
||||||
hh = gdata->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (x < gdata->boxX) {
|
|
||||||
hx = x;
|
|
||||||
hw = gdata->boxX - hx;
|
|
||||||
} else if (x > gdata->boxX) {
|
|
||||||
hx = gdata->boxX + gdata->width;
|
|
||||||
hw = hx - (x + gdata->width);
|
|
||||||
} else {
|
|
||||||
hx = hw = 0;
|
|
||||||
|
|
||||||
vx = x;
|
|
||||||
vw = gdata->width;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 1st the top/bottom part */
|
|
||||||
|
|
||||||
/* 2nd the left/right part */
|
|
||||||
}
|
|
||||||
|
|
||||||
mergeGhostWindow(gdata);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* GHOST_WINDOW_MOVE */
|
|
||||||
|
|||||||
Reference in New Issue
Block a user