window->window_type == GDK_WINDOW_TEMP);
if (impl->transient_for)
broadway_output_set_transient_for (display->output, impl->id, impl->transient_for);
- if (GDK_WINDOW_IS_MAPPED (window))
+ /* Can't check GDK_WINDOW_IS_MAPPED here, because that doesn't correctly handle
+ withdrawn windows like menus */
+ if (impl->visible)
{
broadway_output_show_surface (display->output, impl->id);
window_data_send (display->output, impl);
GdkBroadwayDisplay *broadway_display;
impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
+ impl->visible = TRUE;
if (window->event_mask & GDK_STRUCTURE_MASK)
_gdk_make_event (GDK_WINDOW (window), GDK_MAP, NULL, FALSE);
GdkBroadwayDisplay *broadway_display;
impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
+ impl->visible = FALSE;
if (window->event_mask & GDK_STRUCTURE_MASK)
_gdk_make_event (GDK_WINDOW (window), GDK_UNMAP, NULL, FALSE);