home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
program
/
c
/
xaes_new
/
windfunc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-12-04
|
22KB
|
487 lines
/********************************************************************
* 1.00*
* XAES: Enhanced Window Functions *
* by Ken Hollis *
* *
* Copyright (c) 1994, Bitgate Software. All Rights Reserved. *
* *
* Copy these window routines, and death is imminent. Currently, *
* these routines only handle the resizing of large window *
* elements. Small window elements will be added soon. *
* *
********************************************************************/
#include "xaes.h"
#define W_ULSIZE 1 /* BOX dans l'arbre WINDOW */
#define W_PCLOSE 2 /* BOX dans l'arbre WINDOW */
#define W_CLOSER 3 /* BOXTEXT dans l'arbre WINDOW */
#define W_TSIZE 4 /* BOX dans l'arbre WINDOW */
#define W_URSIZE 5 /* BOX dans l'arbre WINDOW */
#define W_PCASC 6 /* BOX dans l'arbre WINDOW */
#define W_FULLER 7 /* BOXTEXT dans l'arbre WINDOW */
#define W_LSIZE 8 /* BOX dans l'arbre WINDOW */
#define W_RSIZE 9 /* BOX dans l'arbre WINDOW */
#define W_LLSIZE 10 /* BOX dans l'arbre WINDOW */
#define W_PSLLT 11 /* BOX dans l'arbre WINDOW */
#define W_SLLT 12 /* BOXTEXT dans l'arbre WINDOW */
#define W_BSIZE 13 /* BOX dans l'arbre WINDOW */
#define W_LRSIZE 14 /* BOX dans l'arbre WINDOW */
#define W_PSLDN 15 /* BOX dans l'arbre WINDOW */
#define W_SLDN 16 /* BOXTEXT dans l'arbre WINDOW */
#define W_MOVER 17 /* BOXTEXT dans l'arbre WINDOW */
#define W_CASCADE 18 /* BOXTEXT dans l'arbre WINDOW */
#define W_MENU 19 /* BOX dans l'arbre WINDOW */
#define W_MENU_L 20 /* BOXTEXT dans l'arbre WINDOW */
#define W_MENU_R 21 /* BOXTEXT dans l'arbre WINDOW */
#define W_INFO 22 /* BOXTEXT dans l'arbre WINDOW */
#define W_INFO_R 23 /* BOXTEXT dans l'arbre WINDOW */
#define W_INFO_L 24 /* BOXTEXT dans l'arbre WINDOW */
#define WORKAREA 25 /* BOXTEXT dans l'arbre WINDOW */
#define W_SLUP 26 /* BOXTEXT dans l'arbre WINDOW */
#define W_VERTRK 27 /* BOX dans l'arbre WINDOW */
#define W_VERSL 28 /* BOX dans l'arbre WINDOW */
#define W_HORTRK 29 /* BOX dans l'arbre WINDOW */
#define W_HORSL 30 /* BOX dans l'arbre WINDOW */
#define W_SLRT 31 /* BOXTEXT dans l'arbre WINDOW */
#define W_OPTION 32 /* BOXTEXT dans l'arbre WINDOW */
#define S_ULSIZE 1 /* BOX dans l'arbre WINDSM */
#define S_CLOSER 3 /* BOXTEXT dans l'arbre WINDSM */
#define S_TSIZE 4 /* BOX dans l'arbre WINDSM */
#define S_URSIZE 5 /* BOX dans l'arbre WINDSM */
#define S_FULLER 7 /* BOXTEXT dans l'arbre WINDSM */
#define S_CASCADE 8 /* BOXTEXT dans l'arbre WINDSM */
#define S_RSIZE 9 /* BOX dans l'arbre WINDSM */
#define S_LRSIZE 10 /* BOX dans l'arbre WINDSM */
#define S_SLDN 12 /* BOXTEXT dans l'arbre WINDSM */
#define S_SLRT 13 /* BOXTEXT dans l'arbre WINDSM */
#define S_BSIZE 14 /* BOX dans l'arbre WINDSM */
#define S_LLSIZE 15 /* BOX dans l'arbre WINDSM */
#define S_SLLT 17 /* BOXTEXT dans l'arbre WINDSM */
#define S_LSIZE 18 /* BOX dans l'arbre WINDSM */
#define S_MOVER 19 /* BOXTEXT dans l'arbre WINDSM */
#define S_MENU 20 /* BOX dans l'arbre WINDSM */
#define S_MENU_L 21 /* BOXTEXT dans l'arbre WINDSM */
#define S_MENU_R 22 /* BOXTEXT dans l'arbre WINDSM */
#define S_INFO 23 /* BOXTEXT dans l'arbre WINDSM */
#define S_INFO_R 24 /* BOXTEXT dans l'arbre WINDSM */
#define S_INFO_L 25 /* BOXTEXT dans l'arbre WINDSM */
#define S_OPTIONS 26 /* BOXTEXT dans l'arbre WINDSM */
#define S_UP 27 /* BOXTEXT dans l'arbre WINDSM */
#define S_VERTRK 28 /* BOX dans l'arbre WINDSM */
#define S_VERSL 29 /* BOX dans l'arbre WINDSM */
#define S_HORTRK 30 /* BOX dans l'arbre WINDSM */
#define S_HORSL 31 /* BOX dans l'arbre WINDSM */
#define S_WORK 32 /* BOXTEXT dans l'arbre WINDSM */
GLOBAL void WFixSize(WINDOW *win)
{
if (win)
if (win->style & W_CUSTOMWINDOW) {
win->wind->ob_x = win->size.g_x;
win->wind->ob_y = win->size.g_y;
win->wind->ob_width = win->size.g_w;
win->wind->ob_height = win->size.g_h;
win->wind[W_ULSIZE].ob_x = 0;
win->wind[W_ULSIZE].ob_y = 0;
win->wind[W_CLOSER].ob_x = 0;
win->wind[W_CLOSER].ob_y = 0;
win->wind[W_PCLOSE].ob_x = win->wind[W_ULSIZE].ob_width - win->wind[W_PCLOSE].ob_width;
win->wind[W_PCLOSE].ob_y = win->wind[W_ULSIZE].ob_height - win->wind[W_PCLOSE].ob_height;
win->wind[W_URSIZE].ob_x = win->wind->ob_width - win->wind[W_URSIZE].ob_width;
win->wind[W_URSIZE].ob_y = 0;
win->wind[W_FULLER].ob_x = 0;
win->wind[W_FULLER].ob_y = 0;
win->wind[W_PCASC].ob_x = 0;
win->wind[W_PCASC].ob_y = win->wind[W_URSIZE].ob_height - win->wind[W_PCASC].ob_height;
win->wind[W_TSIZE].ob_x = win->wind[W_ULSIZE].ob_width - 1;
win->wind[W_TSIZE].ob_y = 0;
win->wind[W_TSIZE].ob_width = win->wind->ob_width - win->wind[W_ULSIZE].ob_width - win->wind[W_URSIZE].ob_width + 2;
win->wind[W_CASCADE].ob_x = win->wind->ob_width - win->wind[W_URSIZE].ob_width - win->wind[W_CASCADE].ob_width + 1;
win->wind[W_CASCADE].ob_y = win->wind[W_TSIZE].ob_height - 1;
win->wind[W_MOVER].ob_x = win->wind[W_ULSIZE].ob_width - 1;
win->wind[W_MOVER].ob_y = win->wind[W_TSIZE].ob_height - 1;
win->wind[W_MOVER].ob_width = win->wind->ob_width - win->wind[W_ULSIZE].ob_width - win->wind[W_URSIZE].ob_width - win->wind[W_CASCADE].ob_width + 3;
win->wind[W_LLSIZE].ob_x = 0;
win->wind[W_LLSIZE].ob_y = win->wind->ob_height - win->wind[W_LLSIZE].ob_height;
win->wind[W_LSIZE].ob_x = 0;
win->wind[W_LSIZE].ob_y = win->wind[W_ULSIZE].ob_height - 1;
win->wind[W_LSIZE].ob_height= win->wind->ob_height - win->wind[W_LLSIZE].ob_height - win->wind[W_ULSIZE].ob_height + 2;
win->wind[W_LRSIZE].ob_x = win->wind->ob_width - win->wind[W_LRSIZE].ob_width;
win->wind[W_LRSIZE].ob_y = win->wind->ob_height - win->wind[W_LRSIZE].ob_height;
win->wind[W_RSIZE].ob_x = win->wind->ob_width - win->wind[W_RSIZE].ob_width;
win->wind[W_RSIZE].ob_y = win->wind[W_URSIZE].ob_height - 1;
win->wind[W_RSIZE].ob_height= win->wind->ob_height - win->wind[W_LRSIZE].ob_height - win->wind[W_URSIZE].ob_height + 2;
win->wind[W_BSIZE].ob_x = win->wind[W_LLSIZE].ob_width - 1;
win->wind[W_BSIZE].ob_y = win->wind->ob_height - win->wind[W_BSIZE].ob_height;
win->wind[W_BSIZE].ob_width = win->wind->ob_width - win->wind[W_LLSIZE].ob_width - win->wind[W_LRSIZE].ob_width + 2;
win->wind[W_MENU].ob_x = win->wind[W_LSIZE].ob_width - 1;
win->wind[W_MENU].ob_y = win->wind[W_TSIZE].ob_height + win->wind[W_MOVER].ob_height - 2;
win->wind[W_MENU].ob_width = win->wind->ob_width - win->wind[W_LSIZE].ob_width - win->wind[W_RSIZE].ob_width + 2;
win->wind[W_MENU_L].ob_x = 0;
win->wind[W_MENU_L].ob_y = 0;
win->wind[W_MENU_R].ob_x = win->wind[W_MENU_L].ob_width - 1;
win->wind[W_MENU_R].ob_y = 0;
win->wind[W_INFO].ob_x = win->wind[W_LSIZE].ob_width - 1;
win->wind[W_INFO].ob_y = win->wind[W_TSIZE].ob_height + win->wind[W_MOVER].ob_height + win->wind[W_MENU].ob_height - 3;
win->wind[W_INFO].ob_width = win->wind->ob_width - win->wind[W_LSIZE].ob_width - win->wind[W_RSIZE].ob_width - win->wind[W_OPTION].ob_width + 3;
win->wind[W_INFO_L].ob_x = 0;
win->wind[W_INFO_L].ob_y = 0;
win->wind[W_INFO_R].ob_x = win->wind[W_INFO_L].ob_width - 1;
win->wind[W_INFO_R].ob_y = 0;
win->wind[W_OPTION].ob_x = win->wind->ob_width - win->wind[W_RSIZE].ob_width - win->wind[W_OPTION].ob_width + 1;
win->wind[W_OPTION].ob_y = win->wind[W_TSIZE].ob_height + win->wind[W_MOVER].ob_height + win->wind[W_MENU].ob_height - 3;
win->wind[W_PSLLT].ob_x = win->wind[W_LLSIZE].ob_width - win->wind[W_PSLLT].ob_width;
win->wind[W_PSLLT].ob_y = 0;
win->wind[W_SLLT].ob_x = 0;
win->wind[W_SLLT].ob_y = 0;
win->wind[W_SLRT].ob_x = win->wind->ob_width - win->wind[W_LRSIZE].ob_width - win->wind[W_SLRT].ob_width + 1;
win->wind[W_SLRT].ob_y = win->wind->ob_height - win->wind[W_BSIZE].ob_height - win->wind[W_SLRT].ob_height + 1;
win->wind[W_HORTRK].ob_x = win->wind[W_LLSIZE].ob_width - 1;
win->wind[W_HORTRK].ob_y = win->wind->ob_height - win->wind[W_BSIZE].ob_height - win->wind[W_HORTRK].ob_height + 1;
win->wind[W_HORTRK].ob_width= win->wind->ob_width - win->wind[W_LLSIZE].ob_width - win->wind[W_LRSIZE].ob_width - win->wind[W_SLRT].ob_width + 3;
win->wind[W_SLUP].ob_x = win->wind->ob_width - win->wind[W_RSIZE].ob_width - win->wind[W_SLUP].ob_width + 1;
win->wind[W_SLUP].ob_y = win->wind[W_URSIZE].ob_height + win->wind[W_MENU].ob_height + win->wind[W_OPTION].ob_height - 4;
win->wind[W_PSLDN].ob_x = 0;
win->wind[W_PSLDN].ob_y = 0;
win->wind[W_SLDN].ob_x = 0;
win->wind[W_SLDN].ob_y = 0;
win->wind[W_VERTRK].ob_x = win->wind->ob_width - win->wind[W_RSIZE].ob_width - win->wind[W_VERTRK].ob_width + 1;
win->wind[W_VERTRK].ob_y = win->wind[W_URSIZE].ob_height + win->wind[W_MENU].ob_height + win->wind[W_OPTION].ob_height + win->wind[W_SLUP].ob_height - 5;
win->wind[W_VERTRK].ob_height= win->wind->ob_height - win->wind[W_LRSIZE].ob_height - win->wind[W_URSIZE].ob_height - win->wind[W_INFO].ob_height -
win->wind[W_MENU].ob_height - win->wind[W_SLUP].ob_height + 6;
win->wind[W_VERSL].ob_x = 0;
win->wind[W_VERSL].ob_y = 0;
win->wind[W_VERSL].ob_height= win->wind[W_VERTRK].ob_height;
win->wind[W_HORSL].ob_x = 0;
win->wind[W_HORSL].ob_y = 0;
win->wind[W_HORSL].ob_width = win->wind[W_HORTRK].ob_width;
win->wind[WORKAREA].ob_x = win->wind[W_LSIZE].ob_width - 1;
win->wind[WORKAREA].ob_y = win->wind[W_TSIZE].ob_height + win->wind[W_MOVER].ob_height + win->wind[W_INFO].ob_height + win->wind[W_MENU].ob_height - 4;
win->wind[WORKAREA].ob_width= win->wind->ob_width - win->wind[W_LSIZE].ob_width - win->wind[W_RSIZE].ob_width - win->wind[W_VERTRK].ob_width + 3;
win->wind[WORKAREA].ob_height= win->wind->ob_height - win->wind[W_BSIZE].ob_height - win->wind[W_HORTRK].ob_height - win->wind[W_TSIZE].ob_height -
win->wind[W_MOVER].ob_height - win->wind[W_INFO].ob_height - win->wind[W_MENU].ob_height + 6;
if (win->kind & CLOSER)
win->wind[W_CLOSER].ob_flags &= ~HIDETREE;
if (!(win->kind & CLOSER)) {
win->wind[W_CLOSER].ob_flags |= HIDETREE;
win->wind[W_MOVER].ob_x -= win->wind[W_CLOSER].ob_width - 1;
win->wind[W_MOVER].ob_width += win->wind[W_CLOSER].ob_width - 1;
}
if (win->kind & CASCADE)
win->wind[W_CASCADE].ob_flags &= ~HIDETREE;
if (!(win->kind & CASCADE)) {
win->wind[W_CASCADE].ob_flags |= HIDETREE;
win->wind[W_MOVER].ob_width += win->wind[W_CASCADE].ob_width - 1;
}
if (win->kind & FULLER)
win->wind[W_FULLER].ob_flags &= ~HIDETREE;
if (!(win->kind & FULLER)) {
win->wind[W_FULLER].ob_flags |= HIDETREE;
win->wind[W_CASCADE].ob_x += win->wind[W_CASCADE].ob_width - 1;
win->wind[W_MOVER].ob_width += win->wind[W_FULLER].ob_width - 1;
}
if (win->state & W_UNSIZABLE)
win->wind[W_FULLER].ob_state |= DISABLED;
if (!(win->state & W_UNSIZABLE))
win->wind[W_FULLER].ob_state &= ~DISABLED;
if (win->kind & MENUWORK)
win->wind[W_MENU].ob_flags &= ~HIDETREE;
if (!(win->kind & MENUWORK)) {
win->wind[W_MENU].ob_flags |= HIDETREE;
win->wind[W_INFO].ob_y = win->wind[W_TSIZE].ob_height + win->wind[W_MOVER].ob_height - 2;
win->wind[W_OPTION].ob_y = win->wind[W_TSIZE].ob_height + win->wind[W_MOVER].ob_height - 2;
win->wind[WORKAREA].ob_y = win->wind[W_TSIZE].ob_height + win->wind[W_MOVER].ob_height + win->wind[W_INFO].ob_height - 3;
win->wind[W_SLUP].ob_y = win->wind[W_URSIZE].ob_height + win->wind[W_OPTION].ob_height - 2;
win->wind[W_VERTRK].ob_y = win->wind[W_URSIZE].ob_height + win->wind[W_OPTION].ob_height + win->wind[W_SLUP].ob_height - 3;
win->wind[W_VERTRK].ob_height += win->wind[W_MENU].ob_height - 1;
win->wind[W_VERSL].ob_height = win->wind[W_VERTRK].ob_height;
win->wind[WORKAREA].ob_height += win->wind[W_MENU].ob_height - 1;
}
if (win->kind & INFO)
win->wind[W_INFO].ob_flags &= ~HIDETREE;
if (!(win->kind & INFO)) {
win->wind[W_INFO].ob_flags |= HIDETREE;
win->wind[W_OPTION].ob_y -= win->wind[W_OPTION].ob_height - 1;
win->wind[WORKAREA].ob_y -= win->wind[W_INFO].ob_height - 1;
win->wind[W_SLUP].ob_y -= win->wind[W_INFO].ob_height - 1;
win->wind[W_VERTRK].ob_y -= win->wind[W_INFO].ob_height - 1;
win->wind[W_VERTRK].ob_height += win->wind[W_INFO].ob_height - 1;
win->wind[W_VERSL].ob_height = win->wind[W_VERTRK].ob_height;
win->wind[WORKAREA].ob_height += win->wind[W_INFO].ob_height - 1;
ChangeObjectText(win->wind, W_INFO, (char *) win->info, 3, TE_LEFT);
}
if (win->kind & UPARROW)
win->wind[W_SLUP].ob_flags &= ~HIDETREE;
if (win->kind & DNARROW)
win->wind[W_SLDN].ob_flags &= ~HIDETREE;
if (win->kind & VSLIDE)
win->wind[W_VERTRK].ob_flags &= ~HIDETREE;
if (!(win->kind & UPARROW))
win->wind[W_SLUP].ob_flags |= HIDETREE;
if (!(win->kind & DNARROW))
win->wind[W_SLDN].ob_flags |= HIDETREE;
if (!(win->kind & VSLIDE))
win->wind[W_VERTRK].ob_flags |= HIDETREE;
if (!(win->kind & (UPARROW|DNARROW|VSLIDE))) {
win->wind[WORKAREA].ob_width += win->wind[W_VERTRK].ob_width - 1;
win->wind[W_SLRT].ob_x += win->wind[W_SLDN].ob_width - 1;
win->wind[W_HORTRK].ob_width += win->wind[W_SLDN].ob_width - 1;
win->wind[W_HORSL].ob_width = win->wind[W_HORTRK].ob_width;
}
if (win->kind & OPTIONS)
win->wind[W_OPTION].ob_flags &= ~HIDETREE;
if (!(win->kind & OPTIONS)) {
win->wind[W_OPTION].ob_flags |= HIDETREE;
win->wind[W_INFO].ob_width += win->wind[W_OPTION].ob_width - 1;
}
if (win->kind & LFARROW)
win->wind[W_SLLT].ob_flags &= ~HIDETREE;
if (win->kind & RTARROW)
win->wind[W_SLRT].ob_flags &= ~HIDETREE;
if (win->kind & HSLIDE)
win->wind[W_HORTRK].ob_flags &= ~HIDETREE;
if (!(win->kind & LFARROW))
win->wind[W_SLLT].ob_flags |= HIDETREE;
if (!(win->kind & RTARROW))
win->wind[W_SLRT].ob_flags |= HIDETREE;
if (!(win->kind & HSLIDE))
win->wind[W_HORTRK].ob_flags |= HIDETREE;
if (!(win->kind & (LFARROW|RTARROW|HSLIDE)))
win->wind[WORKAREA].ob_height += win->wind[W_HORTRK].ob_height - 1;
if (win->kind & MOVER)
win->wind[W_MOVER].ob_state &= ~DISABLED;
if (!(win->kind & MOVER))
win->wind[W_MOVER].ob_state |= DISABLED;
}
}
GLOBAL void WWindAdjust(WINDOW *win)
{
if (win) {
if (win->tree) {
if ((win->wind_type == WC_WINDOW) && (win->style & W_CUSTOMWINDOW)) {
win->wind[25].ob_width = win->tree->ob_width - 3;
win->wind[25].ob_height= win->tree->ob_height - 4;
win->size.g_w = win->wind[W_LSIZE].ob_width +
win->wind[WORKAREA].ob_width +
win->wind[W_VERTRK].ob_width +
win->wind[W_RSIZE].ob_width;
win->size.g_h = win->wind[W_URSIZE].ob_height +
win->wind[W_INFO].ob_height +
win->wind[W_MENU].ob_height +
win->wind[WORKAREA].ob_height +
win->wind[W_LRSIZE].ob_height;
if (!(win->kind & MENUWORK))
win->size.g_h -= win->wind[W_MENU].ob_height - 1;
if (!(win->kind & (UPARROW|DNARROW|VSLIDE)))
win->size.g_w -= win->wind[W_VERTRK].ob_width - 1;
if (!(win->kind & (LFARROW|RTARROW|HSLIDE)))
win->size.g_h -= win->wind[W_HORTRK].ob_height - 1;
if (!(win->kind & INFO))
win->size.g_h -= win->wind[W_INFO].ob_height - 1;
}
}
/* Haha.. I won't even let you open a window larger than the
physical screen size! */
if ((win->size.g_w > desk.g_w) ||
(win->size.g_h > desk.g_h)) {
win->size.g_w = desk.g_w - win->size.g_x;
win->size.g_h = desk.g_h - win->size.g_y;
if (win->style & W_CUSTOMWINDOW) {
if (win->wind_type == WC_WINDOW) {
win->wind[W_SLLT].ob_flags &= ~HIDETREE;
win->wind[W_SLRT].ob_flags &= ~HIDETREE;
win->wind[W_SLUP].ob_flags &= ~HIDETREE;
win->wind[W_SLDN].ob_flags &= ~HIDETREE;
win->wind[W_VERTRK].ob_flags &= ~HIDETREE;
win->wind[W_HORTRK].ob_flags &= ~HIDETREE;
win->wind[W_VERSL].ob_flags &= ~HIDETREE;
win->wind[W_HORSL].ob_flags &= ~HIDETREE;
}
if (win->wind_type == WC_SWINDOW) {
win->wind[S_SLLT].ob_flags &= ~HIDETREE;
win->wind[S_SLRT].ob_flags &= ~HIDETREE;
win->wind[S_UP].ob_flags &= ~HIDETREE;
win->wind[S_SLDN].ob_flags &= ~HIDETREE;
win->wind[S_VERTRK].ob_flags &= ~HIDETREE;
win->wind[S_HORTRK].ob_flags &= ~HIDETREE;
win->wind[S_VERSL].ob_flags &= ~HIDETREE;
win->wind[S_HORSL].ob_flags &= ~HIDETREE;
}
}
}
win->minimum.g_x = win->size.g_x;
win->minimum.g_y = win->size.g_y;
win->minimum.g_w = win->size.g_w;
win->minimum.g_h = win->size.g_h;
}
}
GLOBAL void WMoveWindow(WINDOW *win, int x, int y, int w, int h)
{
int wx, wy, ww, wh, ox, oy, ow, oh, x1, y1, w1, h1;
int tophandle;
if ((win) && (win->handle != 0))
if (win->state & W_OPEN) {
wind_get(win->handle, WF_CURRXYWH, &wx, &wy, &ww, &wh);
WWindGet(win, WF_TOP, &tophandle);
if (tophandle != 0) {
x1 = wx;
y1 = wy;
w1 = ww;
h1 = wh;
x = (x == -1) ? wx : (win->size.g_x = x);
y = (y == -1) ? wy : (win->size.g_y = y);
if ((win->state & W_ICONIFIED) && (win->iconify)) {
w = win->iconify->ob_width;
h = win->iconify->ob_height;
} else {
w = (w == -1) ? ww : w;
h = (h == -1) ? wh : h;
}
ox = x;
oy = y;
ow = w;
oh = h;
if (win->state & W_MINIMIZED)
if (w != ww || h != wh )
win->state &= ~W_MINIMIZED;
else {
int dummy, height;
wind_get(win->handle, WF_WORKXYWH, &dummy, &dummy, &dummy, &height);
if (h > wh - height)
h = wh - height;
}
if (!(win->state & W_MINIMIZED))
if ((win->state & W_ICONIFIED) && (win->iconify)) {
win->size.g_w = win->iconify->ob_width;
win->size.g_h = win->iconify->ob_height;
} else {
win->size.g_w = w;
win->size.g_h = h;
}
if ((win->size.g_w < win->minimum.g_w) ||
(win->size.g_w > win->maximum.g_w)) {
win->size.g_w = win->minimum.g_w;
w = w1 = ow = win->size.g_w;
}
if ((win->size.g_h < win->minimum.g_h) ||
(win->size.g_h > win->maximum.g_h)) {
win->size.g_h = win->minimum.g_h;
h = h1 = oh = win->size.g_h;
}
if (!(xaes.config1 & X_LEFTBORDER))
if ((x != 1) && (x < -1))
x = 0;
if ((win->state & W_ICONIFIED) && (win->iconify))
if (x != wx || y != wy)
wind_set(win->handle, WF_CURRXYWH, x, y, win->iconify->ob_width, win->iconify->ob_height + 13);
if (!(win->state & W_ICONIFIED))
if (x != wx || y != wy || w != ww || h != wh) /* If either parameter has changed... */
wind_set(win->handle, WF_CURRXYWH, x, y, w, h); /* Move window */
wind_get(win->handle, WF_WORKXYWH, &x, &y, &w, &h);
if ((win->wind) && (win->style & W_CUSTOMWINDOW)) {
win->wind->ob_x = x - (win->wind->ob_type & 0xff00 ? win->wind->ob_spec.obspec.framesize : 0);
win->wind->ob_y = y - (win->wind->ob_type & 0xff00 ? win->wind->ob_spec.obspec.framesize : 0);
win->wind->ob_x--;
win->wind->ob_y--;
}
if (((((win->state & W_ICONIFIED) && (win->iconify)) ? win->iconify : win->tree)) && (win->style & W_CUSTOMWINDOW))
if ((win->state & W_ICONIFIED) && (win->iconify)) {
win->iconify->ob_x = (x + win->wind[WORKAREA].ob_x) - (win->iconify->ob_type & 0xFF00 ? win->iconify->ob_spec.obspec.framesize + 1 : 1);
win->iconify->ob_y = (y + win->wind[WORKAREA].ob_y) - (win->iconify->ob_type & 0xFF00 ? win->iconify->ob_spec.obspec.framesize + 1 : 1);
} else {
win->tree->ob_x = (x + win->wind[WORKAREA].ob_x) - (win->tree->ob_type & 0xff00 ? win->tree->ob_spec.obspec.framesize + 1 : 1);
win->tree->ob_y = (y + win->wind[WORKAREA].ob_y) - (win->tree->ob_type & 0xff00 ? win->tree->ob_spec.obspec.framesize + 1 : 1);
}
else if ((((win->state & W_ICONIFIED) && (win->iconify)) ? win->iconify : win->tree))
if ((win->state & W_ICONIFIED) && (win->iconify)) {
win->iconify->ob_x = x - (win->iconify->ob_type & 0xFF00 ? win->iconify->ob_spec.obspec.framesize + 1 : 1);
win->iconify->ob_y = y - (win->iconify->ob_type & 0xFF00 ? win->iconify->ob_spec.obspec.framesize + 1 : 1);
} else {
win->tree->ob_x = x - (win->tree->ob_type & 0xff00 ? win->tree->ob_spec.obspec.framesize + 1 : 1);
win->tree->ob_y = y - (win->tree->ob_type & 0xff00 ? win->tree->ob_spec.obspec.framesize + 1 : 1);
}
if (((ox == x1) && (oy == y1) && (ow < w1) && (oh < h1)) ||
((ox == x1) && (oy == y1) && (ow == w1) && (oh < h1)) ||
((ox == x1) && (oy == y1) && (ow < w1) && (oh == h1))) {
int x2, y2, w2, h2;
if (win->handle == tophandle) {
wind_get(win->handle, WF_WORKXYWH, &x2, &y2, &w2, &h2);
WRedrawWindow(win, x2, y2, w2, h2);
}
}
if ((win->handle != 0) && (win->style & W_CUSTOMWINDOW) && (win->wind)) {
WFixSize(win);
WFixWindow(win);
}
win->minimum.g_x = win->size.g_x;
win->minimum.g_y = win->size.g_y;
}
}
}