M
Sobald ich bei "XSelectInput", "ResizeRedirectMask" hinzufüge, sieht das Window aus wie erwartet. Vergrössere ich es ab mit der Maus, erscheint ein schwarzer Hintergrund. Auch Befehle wie "XDrawArc(", zeichnen nicht in den schwarzen Bereich.
Sabald ich ich "ResizeRedirectMask" wieder entferne, läuft alles normal. Ich kann das Fenster vergrössern und auf der neuen Fläche wird es schön blau.
Wie kann ich das Problem beheben ?
Ich will irgendwie ein Event-Handle bekommen, sobald sich die Grösse des Fenster ändere.
#include <X11/keysym.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
Display *display;
int screen;
int depth;
Window win;
Atom wm_delete_window;
int quit = 0;
static void eventloop (void) {
XEvent xev;
XNextEvent (display, &xev);
switch (xev.type) {
case KeyPress:
if (XLookupKeysym (&xev.xkey, 0) == XK_Escape)
{
quit = 1;
}
break;
case ClientMessage: {
if ((Atom)xev.xclient.data.l[0] == wm_delete_window)
{
quit = 1;
}
break;
}
}
}
int main (int argc, char **argv)
{
display = XOpenDisplay (NULL);
screen = XDefaultScreen (display);
depth = XDefaultDepth (display, screen);
win = XCreateSimpleWindow ( display, RootWindow (display, screen), 100, 10, 320, 200, 5, 0x8800, 0xFF00); // Hintergrund blau
XSelectInput (display, win, ButtonPressMask | KeyPressMask | ResizeRedirectMask); // ResizeRedirectMask hinzugefügt
XMapWindow (display, win);
wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", False);
XSetWMProtocols(display, win, &wm_delete_window, 1);
while (!quit)
{
eventloop ();
}
XDestroyWindow(display, win);
XCloseDisplay (display);
}
Nachtrag: Wen ich aber das Fenster verkleiner und wieder vergrössere, hat die blaue Fläche die ursprüngliche Grösse. (320x200)