diff options
Diffstat (limited to 'xorg-server/hw/kdrive/ephyr/hostx.c')
-rw-r--r-- | xorg-server/hw/kdrive/ephyr/hostx.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/xorg-server/hw/kdrive/ephyr/hostx.c b/xorg-server/hw/kdrive/ephyr/hostx.c index f313afa5a..b13e8c796 100644 --- a/xorg-server/hw/kdrive/ephyr/hostx.c +++ b/xorg-server/hw/kdrive/ephyr/hostx.c @@ -351,7 +351,11 @@ hostx_init(void) attr.event_mask = ButtonPressMask | ButtonReleaseMask - | PointerMotionMask | KeyPressMask | KeyReleaseMask | ExposureMask; + | PointerMotionMask + | KeyPressMask + | KeyReleaseMask + | ExposureMask + | StructureNotifyMask; EPHYR_DBG("mark"); @@ -712,12 +716,14 @@ __asm int 3; XResizeWindow(HostX.dpy, host_screen->win, width, height); /* Ask the WM to keep our size static */ - size_hints = XAllocSizeHints(); - size_hints->max_width = size_hints->min_width = width; - size_hints->max_height = size_hints->min_height = height; - size_hints->flags = PMinSize | PMaxSize; - XSetWMNormalHints(HostX.dpy, host_screen->win, size_hints); - XFree(size_hints); + if (host_screen->win_pre_existing == None) { + size_hints = XAllocSizeHints(); + size_hints->max_width = size_hints->min_width = width; + size_hints->max_height = size_hints->min_height = height; + size_hints->flags = PMinSize | PMaxSize; + XSetWMNormalHints(HostX.dpy, host_screen->win, size_hints); + XFree(size_hints); + } XMapWindow(HostX.dpy, host_screen->win); @@ -1028,6 +1034,22 @@ hostx_get_event(EphyrHostXEvent * ev) ev->data.key_up.scancode = xev.xkey.keycode; return 1; + case ConfigureNotify: + { + struct EphyrHostScreen *host_screen = + host_screen_from_window(xev.xconfigure.window); + + if (host_screen && host_screen->win_pre_existing != None) { + ev->type = EPHYR_EV_CONFIGURE; + ev->data.configure.width = xev.xconfigure.width; + ev->data.configure.height = xev.xconfigure.height; + ev->data.configure.window = xev.xconfigure.window; + ev->data.configure.screen = host_screen->mynum; + return 1; + } + + return 0; + } default: break; |