<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body text="#000000" bgcolor="#ffffff">
Hi krh,<br>
We thinked over how to handling panel and popup windows in
fullscreen support. Just would like to get your suggestion and
decision here. <br>
<br>
These three pictures demostrate fullscreen cases we need to
implement:<br>
fullscreen window on the top: The panels will be hidden<br>
<a
href="https://gitorious.org/dataforuse/dataforuse/blobs/master/fullscreen.png">
https://gitorious.org/dataforuse/dataforuse/blobs/master/fullscreen.png</a><br>
<br>
un-fullscreen window over fullscreen window: The panels will be
shown<br>
<a
href="https://gitorious.org/dataforuse/dataforuse/blobs/master/nFoverF.png">
https://gitorious.org/dataforuse/dataforuse/blobs/master/nFoverF.png</a><br>
<br>
Popup window over fullscreen window: panels will be hidden<br>
<a
href="https://gitorious.org/dataforuse/dataforuse/blobs/master/PoverF.png">
https://gitorious.org/dataforuse/dataforuse/blobs/master/PoverF.png</a>
<br>
<br>
To handling panels, we are thinking about three methods:<br>
1. surface grouping in struct weston_compositor<br>
We can split the surface list to different surface type lists,
for example weston_compositor::panel_surfaces,
weston_compositor::cursor_surfaces. If using this method, lots of
things should be changed.<br>
<br>
2. add weston_surface::type to differentiate the types.<br>
we still use that west_compositor::surface_list, we can add type
member in struct weston_surface, and initialise them when they are
created. (In our previous fullscreen patches, we use this method as
a workaround)<br>
<br>
3. handle surface type management in shell side(shell.c).<br>
keep one weston_surface list in struct weston_compositor(The
current solution). Add the modification in shell.c:<br>
Add one wl_shell::hidden_panels, when we would like to hide the
panel surfaces, just move them from compositor->surface_list to
this hidden_panels. And when we would like to unhide them, just move
it back to the compositor->surface_list. It's similar to what
happened on wl_shell::hidden_surface_list when locking/unlocking.<br>
<br>
For these three methods, which method do you prefer? Or any other
ideas?<br>
<br>
Thanks,<br>
Juan<br>
<br>
</body>
</html>