New issue
Advanced search Search tips

Issue 784836 link

Starred by 3 users

Issue metadata

Status: Duplicate
Merged: issue 843018
Owner: ----
Closed: Aug 16
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Bug



Sign in to add a comment

Add support for maximize/minimize/restore

Project Member Reported by msi...@igalia.com, Nov 14 2017

Issue description

ozone/x11/wayland doesn't have proper maximize/minimize/restore support.

This must be fixed by extending both X11WindowBase and WaylandWindow
to handle states properly.
 

Comment 1 by msi...@igalia.com, Nov 14 2017

Blocking: 666958
Cc: -toniki...@igalia.com toniki...@chromium.org
Project Member

Comment 3 by bugdroid1@chromium.org, Dec 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1c090989b717047829eab075c4960a3512014559

commit 1c090989b717047829eab075c4960a3512014559
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed Dec 13 09:55:29 2017

[ozone/wayland] Add support for maximize/minimize/fullscreen.

This CL adds a preliminary support to maximize/minimize or set
Wayland windows to fullscreen.

WaylandWindow extends HandleSurfaceConfigure and stores new
states. As a result, Wayland windows will be sending changed
window states to the |delegate_| and notify ServerWindow
and thus aura::Window about changed states. This change is in
downstream now [1], but will be sent as a follow-up cl.

[1] https://github.com/Igalia/chromium

Bug:  784836 , 578890
Change-Id: I4dee446b5d145ca2a15f168d78aacf7c96acb2e7
Reviewed-on: https://chromium-review.googlesource.com/768681
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523733}
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/wayland_window.h
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/wayland_window_unittest.cc
[add] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper.h
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper_v5.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper_v6.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Jan 16 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f5cb3080bedd6f850e4eb688e24ec6a5f30be60f

commit f5cb3080bedd6f850e4eb688e24ec6a5f30be60f
Author: Maksim Sisov <msisov@igalia.com>
Date: Tue Jan 16 08:54:16 2018

[ozone/x11] Add support for maximize/minimize/fullscreen.

This CL adds preliminary support to X11WindowBase to be able to
maximize/minimize and set X11 windows to fullscreen. Both X11Window
and X11WindowOzone can benefit from it.

In addition, the CL implements Maximize/Minimize/ToggleFullscreeen
methods, X11WindowBase also implements OnWMStateUpdated and subscribes
for PropertyNotify changes to store window state updates.
As a result, X11 windows now send changed window states to the
|delegate_| and the |delegate_| will notify ServerWindow and
thus aura::Window about changed states if triggered by a server
in the future (This change is in downstream now [1], but will be sent
as a follow-up cl)

[1] https://github.com/Igalia/chromium

Bug:  784836 
Change-Id: Idff04e347191ef9f2643280559b0c5cf0b2a29a0
Reviewed-on: https://chromium-review.googlesource.com/810948
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#529383}
[modify] https://crrev.com/f5cb3080bedd6f850e4eb688e24ec6a5f30be60f/ui/platform_window/x11/x11_window_base.cc
[modify] https://crrev.com/f5cb3080bedd6f850e4eb688e24ec6a5f30be60f/ui/platform_window/x11/x11_window_base.h

Project Member

Comment 5 by bugdroid1@chromium.org, Jan 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6162c97c07c724b92d8c73420239a7636c4ad24c

commit 6162c97c07c724b92d8c73420239a7636c4ad24c
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed Jan 24 16:45:12 2018

[ozone/wayland] Provide Wayland with desired bounds on request.

This CL handles a case when Wayland asks its client about desired
bounds.

That is, under some circumstances, Wayland can send a configure
event with width and height set to 0, which means it wants its
client to send back desired bounds.

There is also another case, or a bug in some Wayland protocol
implementations like Gnome Shell, which sends width and height set
to 0 instead of 1 if the browser is started with --start-fullscreen
flag and then exits the fullscreen state.

There are several cases of how we keep track of our desired bounds:
we store previous bounds before going to maximize or fullscreen
states, or we use our current bounds if a window has not had any
state changes.

If using our current bounds is naturally understandable, keeping
the track of bounds before going to maximize and then fullscreen is
a bit tricky. The restored bounds mustn't be overridden if we have
gone from normal to maximized and then to fullscreen and then back
to maximized, because |restored_bounds_| has already saved right bounds
right before going from normal to maximized state.

But if the state is changed from normal to maximized or from normal
to fullscreen, we just store bounds on every change and restore
them on Wayland request.

Bug:  784836 , 578890
Change-Id: I0ae593235cccaf89719384f046ab446b814033e9
Reviewed-on: https://chromium-review.googlesource.com/881481
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#531559}
[modify] https://crrev.com/6162c97c07c724b92d8c73420239a7636c4ad24c/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/6162c97c07c724b92d8c73420239a7636c4ad24c/ui/ozone/platform/wayland/wayland_window.h
[modify] https://crrev.com/6162c97c07c724b92d8c73420239a7636c4ad24c/ui/ozone/platform/wayland/wayland_window_unittest.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Jan 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a8646a32dfe24400847e70128f7d323a637dd807

commit a8646a32dfe24400847e70128f7d323a637dd807
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed Jan 24 17:31:46 2018

[ozone/wayland] Notify client about each state change from WM.

Notify the client about window state changes instantiated from a window
manager side. Those changes are results of shortcut keys
like ALT+F10 (maximize/unmaximize) or super+H (minimize).

Also remove the DCHECKs to avoid crashes due to theoretical races
between requests to change state of a window and a response back
from a WM.

Bug:  784836 , 578890
Change-Id: Iaac5fdd971d89cef580197f00aeeeac64bf264b1
Reviewed-on: https://chromium-review.googlesource.com/880981
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#531585}
[modify] https://crrev.com/a8646a32dfe24400847e70128f7d323a637dd807/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/a8646a32dfe24400847e70128f7d323a637dd807/ui/ozone/platform/wayland/wayland_window_unittest.cc

Components: -Internals>MUS Internals>Services>WindowService
Project Member

Comment 8 by bugdroid1@chromium.org, May 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c4d182f0a99effc90533cda90dbcbbb7e1bfcc51

commit c4d182f0a99effc90533cda90dbcbbb7e1bfcc51
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed May 09 07:30:41 2018

[ozone/wayland] Remove duplicated DCHECK.

This change doesn't bring any functionality changes, but rather
removes an accidentely added duplicate DCHECK.

TBR=rjkroege@chromium.org

Bug:  784836 , 578890
Change-Id: I524178327c4f6131eb582b9de37afe799039a41e
Reviewed-on: https://chromium-review.googlesource.com/1051226
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#557116}
[modify] https://crrev.com/c4d182f0a99effc90533cda90dbcbbb7e1bfcc51/ui/ozone/platform/wayland/wayland_window.cc

Blocking: -666958
Mergedinto: 843018
Status: Duplicate (was: Started)

Sign in to add a comment