forked from pyrite-dev/milsko
fix MwNx/MwNy
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@650 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
parent
16c22724c7
commit
588d07d5c8
3 changed files with 32 additions and 5 deletions
|
|
@ -203,7 +203,8 @@ foreach my $l (@examples_targets) {
|
||||||
}
|
}
|
||||||
print(OUT "\n");
|
print(OUT "\n");
|
||||||
print(OUT "clean:\n");
|
print(OUT "clean:\n");
|
||||||
print( OUT " rm -f */*.o */*/*.o */*/*/*.o */*.exe */*/*.exe */*/*/*.exe src/*.so src/*.dll src/*.a "
|
print(OUT
|
||||||
|
" rm -f */*.o */*/*.o */*/*/*.o */*.exe */*/*.exe */*/*/*.exe src/*.so src/*.dll src/*.a "
|
||||||
. join(" ", @examples_targets)
|
. join(" ", @examples_targets)
|
||||||
. "\n");
|
. "\n");
|
||||||
print(OUT "\n");
|
print(OUT "\n");
|
||||||
|
|
|
||||||
|
|
@ -87,24 +87,27 @@ MwLL MwLLCreate(MwLL parent, int x, int y, int width, int height) {
|
||||||
XVisualInfo* xvi;
|
XVisualInfo* xvi;
|
||||||
unsigned long n = 1;
|
unsigned long n = 1;
|
||||||
int i;
|
int i;
|
||||||
|
int px = x, py = y;
|
||||||
|
|
||||||
r = malloc(sizeof(*r));
|
r = malloc(sizeof(*r));
|
||||||
|
|
||||||
MwLLCreateCommon(r);
|
MwLLCreateCommon(r);
|
||||||
|
|
||||||
if(x == MwDEFAULT) x = 0;
|
if(px == MwDEFAULT) px = 0;
|
||||||
if(y == MwDEFAULT) y = 0;
|
if(py == MwDEFAULT) py = 0;
|
||||||
if(width < 1) width = 1;
|
if(width < 1) width = 1;
|
||||||
if(height < 1) height = 1;
|
if(height < 1) height = 1;
|
||||||
|
|
||||||
if(parent == NULL) {
|
if(parent == NULL) {
|
||||||
r->display = XOpenDisplay(NULL);
|
r->display = XOpenDisplay(NULL);
|
||||||
p = XRootWindow(r->display, XDefaultScreen(r->display));
|
p = XRootWindow(r->display, XDefaultScreen(r->display));
|
||||||
|
r->top = 1;
|
||||||
} else {
|
} else {
|
||||||
r->display = parent->display;
|
r->display = parent->display;
|
||||||
p = parent->window;
|
p = parent->window;
|
||||||
|
r->top = 0;
|
||||||
}
|
}
|
||||||
r->window = XCreateSimpleWindow(r->display, p, x, y, width, height, 0, 0, WhitePixel(r->display, DefaultScreen(r->display)));
|
r->window = XCreateSimpleWindow(r->display, p, px, py, width, height, 0, 0, WhitePixel(r->display, DefaultScreen(r->display)));
|
||||||
|
|
||||||
xvi = get_visual_info(r->display);
|
xvi = get_visual_info(r->display);
|
||||||
|
|
||||||
|
|
@ -167,6 +170,15 @@ MwLL MwLLCreate(MwLL parent, int x, int y, int width, int height) {
|
||||||
XSync(r->display, False);
|
XSync(r->display, False);
|
||||||
wait_map(r);
|
wait_map(r);
|
||||||
|
|
||||||
|
if(x != MwDEFAULT || y != MwDEFAULT) {
|
||||||
|
MwLLGetXYWH(r, &px, &py, &width, &height);
|
||||||
|
|
||||||
|
if(x == MwDEFAULT) x = px;
|
||||||
|
if(y == MwDEFAULT) y = py;
|
||||||
|
|
||||||
|
MwLLSetXY(r, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -237,10 +249,21 @@ void MwLLColorUpdate(MwLL handle, MwLLColor c, int r, int g, int b) {
|
||||||
c->blue = b;
|
c->blue = b;
|
||||||
}
|
}
|
||||||
void MwLLGetXYWH(MwLL handle, int* x, int* y, unsigned int* w, unsigned int* h) {
|
void MwLLGetXYWH(MwLL handle, int* x, int* y, unsigned int* w, unsigned int* h) {
|
||||||
Window root;
|
Window root, parent;
|
||||||
|
Window child;
|
||||||
unsigned int border, depth;
|
unsigned int border, depth;
|
||||||
|
|
||||||
XGetGeometry(handle->display, handle->window, &root, x, y, w, h, &border, &depth);
|
XGetGeometry(handle->display, handle->window, &root, x, y, w, h, &border, &depth);
|
||||||
|
if(handle->top) {
|
||||||
|
int rx, ry;
|
||||||
|
Window child;
|
||||||
|
XWindowAttributes xwa;
|
||||||
|
|
||||||
|
XTranslateCoordinates(handle->display, handle->window, root, 0, 0, &rx, &ry, &child);
|
||||||
|
|
||||||
|
*x += rx;
|
||||||
|
*y += ry;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MwLLSetXY(MwLL handle, int x, int y) {
|
void MwLLSetXY(MwLL handle, int x, int y) {
|
||||||
|
|
@ -709,6 +732,8 @@ void MwLLDetach(MwLL handle, MwPoint* point) {
|
||||||
Window* children;
|
Window* children;
|
||||||
unsigned int nchild;
|
unsigned int nchild;
|
||||||
|
|
||||||
|
handle->top = 1;
|
||||||
|
|
||||||
XQueryTree(handle->display, handle->window, &root, &parent, &children, &nchild);
|
XQueryTree(handle->display, handle->window, &root, &parent, &children, &nchild);
|
||||||
if(children != NULL) XFree(children);
|
if(children != NULL) XFree(children);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ struct _MwLL {
|
||||||
|
|
||||||
MwLLHandler handler;
|
MwLLHandler handler;
|
||||||
|
|
||||||
|
int top;
|
||||||
int grabbed;
|
int grabbed;
|
||||||
|
|
||||||
unsigned long red_mask;
|
unsigned long red_mask;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue