[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [virt-tools-list] [PATCH virt-viewer 4/4] window: keep window size when leaving auto-conf fullscreen


On 03/26/2013 02:09 AM, Marc-André Lureau wrote:

----- Mensaje original -----

On 03/25/2013 10:32 PM, Marc-André Lureau wrote:
On Mon, Mar 25, 2013 at 10:26 PM, Marc-André Lureau
<marcandre lureau gmail com> wrote:
+    if (virt_viewer_app_get_fullscreen_auto_conf(priv->app)) {

Actually, I realize the bug is about all kind of fullscreen. My
reasoning was that auto-conf is a bit special because it tries it
to keep client monitor configuration, rather than obeying to window
manager constrains. But that distincition is a bit blurry nowadays.

So we can decide to use app_get_fullscreen() instead here.

I agree that the problem is with all kinds of fullscreen, but only
when we start fullscreen. so we've no priv->before_saved and then
we end up with the very small windows for all monitors.

It seems wrong to me to always try to keep the fullscreen size /
resolution when we leave fullscreen. I think restoring the size
and position from before going fullscreen is the right thing to
do. Except when there is no size / position to restore, and I
believe that in that case it does make sense to keep the window
sizes as they were in fullscreen mode.

So how about:

      if (priv->before_saved) {
      } else {

That's ok, though we need to change the:

-    if (!priv->before_saved) {
+    if (gtk_widget_get_realized(priv->window)) {

Which seems a reasonable change.

But what then if enter_fullscreen is somehow execute twice?
Then the coordinates + size we get from the second run are
when we're already fullscreen. Which is what the
!priv->before_saved protects against.

So IMHO the new check should be:
+    if (!priv->before_saved && gtk_widget_get_realized(priv->window)) {

Also, I don't think we should set back priv->before_saved = FALSE, as it contains valid value from then on. And setting it back to FALSE might end up to queue_resize() if we call leave_fullscreen() twice for some reason.

leave_fullscreen is protected against being called twice, it starts with:

    if (!priv->fullscreen)

Where as enter_fullscreen has the before_fullscreen saving before
its similar getting called twice check, not sure why things are done
that way, but they are.


Thinking about this it is probably best to move the

    if (priv->fullscreen)

In enter_fullscreen to the top, and then go with your suggestion,
so make the check for setting before_fullscreen + before_saved:

    if (gtk_widget_get_realized(priv->window)) {

And removing the priv->before_saved = FALSE call.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]