weston/desktop-shell
Jasper St. Pierre 6458ec3410 shell: Centralize management of sending configure requests
Currently, there's a giant bug in how xdg-shell state management
is done. If a client calls set_fullscreen and then set_maximized,
it will get two configure events:

  => set_fullscreen
  <= configure(800, 600, [STATE_FULLSCREEN])

  => set_maximized
  <= configure(800, 560, [STATE_FULLSCREEN, STATE_MAXIMIZED])

Since fullscreen takes precedence over maximized, the client will
render full-screen at 800x600 first, and then 800x560 next. As
a result, the surface gets the wrong size.

This is because the code that sends out configure requests is
"immediate" -- when an app calls set_maximized, we immediately
send out the configure event that would have happened if we
transitioned immediately into maximized mode.

In wl_shell, this is correct behavior. However, in xdg-shell,
this is wrong. State needs to be more carefully managed in
xdg-shell, as states aren't exclusive.

Pull all the code that sends out configure events out and send
them centrally, based on Weston's on surface state management.
This should work with both wl_shell and xdg_shell's strategies.
2014-05-12 23:34:05 -07:00
..
exposay.c desktop-shell: Properly handle lowered fullscreen surfaces 2014-04-29 16:33:56 -07:00
input-panel.c shell: display the input panel on the active output 2014-04-21 14:34:15 -07:00
shell.c shell: Centralize management of sending configure requests 2014-05-12 23:34:05 -07:00
shell.h desktop-shell: Properly handle seat hotplugging 2014-04-29 16:49:59 -07:00