Web lists-archives.com

Re: Gtk::Widget::is_mapped ()

On Sun, Mar 3, 2019 at 9:21 AM Emmanuele Bassi <ebassi@xxxxxxxxx> wrote:
No, it's not. The issue is not GTK: it's the windowing system.

With the advent of compositing, all windows are "visible" all the time, from a toolkit perspective. The compositor is responsible for building what's presented to the user. For example: are windows fully visible when doing an "exposé"-like view? Are they not? If the compositor is ultimately responsible of creating the final result of what's on the screen, it could put each window on separate planets as far as the toolkit is concerned (assuming latency and coordinate space size aren't a problem).

seems to me like an extremely uninteresting question. "expose" means "while you, the app, doesn't know why, it's time for you to redraw (some|all) of the contents of this window right now". visibility or otherwise doesn't seem relevant to that.

On Wayland is even "worse", because each window surface is completely separate from every other window surface by design; each window has its own coordinate system, that has an origin in the top-left corner of the window. A window *cannot* be obscured by another window, as far as the toolkit is concerned.

If you're targeting an X11 system from the late '90s/early '00s, then visibility notifications *may* be emitted (though they are never guaranteed). On anything more modern than that, or on Wayland/Windows/macOS, visibility notification events are either non-sensical, not emitted, or not possible by design.

macOS as of Sierra still causes GTK(2) to generate sensible visibility notification events. AFAIK, we still get them on current Windows systems too.

It seems to me somewhat insane that Wayland has broken this concept (I take you at your word that it has). Part of the job of a window manager is not just user-facing, but also app-facing, and that includes telling an application about the state of its window(s). It doesn't seem even remotely unreasonable to expect that this would include visibility changes.  It's a bit like saying "some system component could make the window any size it chooses too at all, so it has the app has no way to know how large its windows are."

Oh well.


gtk-devel-list mailing list