 Chromium Code Reviews
 Chromium Code Reviews Issue 2165083002:
  Linux: Refactor X11DesktopHandler  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 2165083002:
  Linux: Refactor X11DesktopHandler  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| Index: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h | 
| diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h | 
| index b648c0062a7517f66db480ce0221e8f825effacd..9f2113d6f947fcb438261380d26ea5ed07497233 100644 | 
| --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h | 
| +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h | 
| @@ -72,10 +72,6 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 | 
| // otherwise. | 
| ::Region GetWindowShape() const; | 
| - // Called by X11DesktopHandler to notify us that the native windowing system | 
| - // has changed our activation. | 
| - void HandleNativeWidgetActivationChanged(bool active); | 
| - | 
| void AddObserver(views::DesktopWindowTreeHostObserverX11* observer); | 
| void RemoveObserver(views::DesktopWindowTreeHostObserverX11* observer); | 
| @@ -186,6 +182,23 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 | 
| // Called when |xwindow_|'s _NET_FRAME_EXTENTS property is updated. | 
| void OnFrameExtentsUpdated(); | 
| + // Record the activation state. | 
| + void BeforeActivationStateChanged(); | 
| + | 
| + // Handle the state change since BeforeActivationStateChanged(). | 
| + void AfterActivationStateChanged(); | 
| + | 
| + // Called on an XEnterWindowEvent, XLeaveWindowEvent, XIEnterEvent, or an | 
| + // XILeaveEvent. | 
| + void OnCrossingEvent(bool enter, | 
| + bool focus_in_window_or_ancestor, | 
| + int mode, | 
| + int detail); | 
| + | 
| + // Called on an XFocusInEvent, XFocusOutEvent, XIFocusInEvent, or an | 
| + // XIFocusOutEvent. | 
| + void OnFocusEvent(bool focus_in, int mode, int detail); | 
| + | 
| // Makes a round trip to the X server to get the enclosing workspace for this | 
| // window. Returns true iff |workspace_| was changed. | 
| bool UpdateWorkspace(); | 
| @@ -266,6 +279,8 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 | 
| bool window_mapped_; | 
| // Should we wait for an UnmapNotify before trying to remap the window? | 
| + // If |wait_for_unmap_| is true, we have sent an XUnmapWindow request to the | 
| + // server and have yet to receive an UnmapNotify. | 
| bool wait_for_unmap_; | 
| // The bounds of |xwindow_|. | 
| @@ -356,8 +371,41 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 | 
| // the frame when |xwindow_| gains focus or handles a mouse button event. | 
| bool urgency_hint_set_; | 
| + // Does |xwindow_| have the pointer grab (XI2 or normal)? | 
| + bool has_pointer_grab_; | 
| + | 
| bool activatable_; | 
| + // The focus-tracking state variables are as described in | 
| + // gtk/docs/focus_tracking.txt | 
| + // | 
| + // |xwindow_| is active iff: | 
| + // (|has_window_focus_| || |has_pointer_focus_|) && | 
| + // !|ignore_keyboard_input_| | 
| + | 
| + // Is the pointer in |xwindow_| or one of its children? | 
| + bool has_pointer_; | 
| + | 
| + // Is |xwindow_| or one of its children focused? | 
| + bool has_window_focus_; | 
| + | 
| + // (An ancestor window or the PointerRoot is focused) && |has_pointer_|. | 
| + // |has_pointer_focus_| == true is the odd case where we will receive keyboard | 
| + // input when |has_window_focus_| == false. |has_window_focus_| and | 
| + // |has_pointer_focus_| are mutually exclusive. | 
| + bool has_pointer_focus_; | 
| + | 
| + // X11 does not support defocusing windows; you can only focus a different | 
| 
danakj
2016/08/26 19:58:43
btw I didn't want to derail this but I'll throw it
 | 
| + // window. If we would like to be defocused, we just ignore keyboard input we | 
| + // no longer care about. | 
| + bool ignore_keyboard_input_; | 
| + | 
| + // Used for tracking activation state in {Before|After}ActivationStateChanged. | 
| + bool was_active_; | 
| + bool had_pointer_; | 
| + bool had_pointer_grab_; | 
| + bool had_window_focus_; | 
| + | 
| base::CancelableCallback<void()> delayed_resize_task_; | 
| base::WeakPtrFactory<DesktopWindowTreeHostX11> close_widget_factory_; |