X11 backend: fix window behavior with multiple show() calls
[platform/upstream/libwlmessage.git] / libwlmessage-x11.c
index 5714334..df2646b 100644 (file)
@@ -664,6 +664,7 @@ wlmessage_show (struct wlmessage *wlmessage, char **input_text)
 
        struct message_window *message_window = wlmessage->message_window;
        Widget form, label, entry, form_b;
+       XEvent ev;
        XWindowChanges wc;
        XSizeHints sh;
        WMHints wm_hints;
@@ -804,6 +805,11 @@ form:
         /* main loop */
        XtAppMainLoop (wlmessage->app);
 
+        /* last iteration to destroy the window */
+       XtUnrealizeWidget (message_window->window);
+       XtAppNextEvent (wlmessage->app, &ev);
+       XtDispatchEvent (&ev);
+
        if (entry) {
                XawTextBlock buffer;
                XawTextSourceRead (XawTextGetSource(entry), 0, &buffer, 30);