| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_X11_H_ | 5 #ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_X11_H_ |
| 6 #define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_X11_H_ | 6 #define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_X11_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <X11/extensions/shape.h> | 10 #include <X11/extensions/shape.h> |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 gfx::Rect GetX11RootWindowBounds() const; | 65 gfx::Rect GetX11RootWindowBounds() const; |
| 66 | 66 |
| 67 // Returns the current bounds in terms of the X11 Root Window including the | 67 // Returns the current bounds in terms of the X11 Root Window including the |
| 68 // borders provided by the window manager (if any). | 68 // borders provided by the window manager (if any). |
| 69 gfx::Rect GetX11RootWindowOuterBounds() const; | 69 gfx::Rect GetX11RootWindowOuterBounds() const; |
| 70 | 70 |
| 71 // Returns the window shape if the window is not rectangular. Returns NULL | 71 // Returns the window shape if the window is not rectangular. Returns NULL |
| 72 // otherwise. | 72 // otherwise. |
| 73 ::Region GetWindowShape() const; | 73 ::Region GetWindowShape() const; |
| 74 | 74 |
| 75 // Called by X11DesktopHandler to notify us that the native windowing system | |
| 76 // has changed our activation. | |
| 77 void HandleNativeWidgetActivationChanged(bool active); | |
| 78 | |
| 79 void AddObserver(DesktopWindowTreeHostObserverX11* observer); | 75 void AddObserver(DesktopWindowTreeHostObserverX11* observer); |
| 80 void RemoveObserver(DesktopWindowTreeHostObserverX11* observer); | 76 void RemoveObserver(DesktopWindowTreeHostObserverX11* observer); |
| 81 | 77 |
| 82 // Swaps the current handler for events in the non client view with |handler|. | 78 // Swaps the current handler for events in the non client view with |handler|. |
| 83 void SwapNonClientEventHandler(std::unique_ptr<ui::EventHandler> handler); | 79 void SwapNonClientEventHandler(std::unique_ptr<ui::EventHandler> handler); |
| 84 | 80 |
| 85 // Runs the |func| callback for each content-window, and deallocates the | 81 // Runs the |func| callback for each content-window, and deallocates the |
| 86 // internal list of open windows. | 82 // internal list of open windows. |
| 87 static void CleanUpWindowList(void (*func)(aura::Window* window)); | 83 static void CleanUpWindowList(void (*func)(aura::Window* window)); |
| 88 | 84 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 // window size to the monitor size causes the WM to set the EWMH for | 175 // window size to the monitor size causes the WM to set the EWMH for |
| 180 // fullscreen. | 176 // fullscreen. |
| 181 gfx::Size AdjustSize(const gfx::Size& requested_size); | 177 gfx::Size AdjustSize(const gfx::Size& requested_size); |
| 182 | 178 |
| 183 // Called when |xwindow_|'s _NET_WM_STATE property is updated. | 179 // Called when |xwindow_|'s _NET_WM_STATE property is updated. |
| 184 void OnWMStateUpdated(); | 180 void OnWMStateUpdated(); |
| 185 | 181 |
| 186 // Called when |xwindow_|'s _NET_FRAME_EXTENTS property is updated. | 182 // Called when |xwindow_|'s _NET_FRAME_EXTENTS property is updated. |
| 187 void OnFrameExtentsUpdated(); | 183 void OnFrameExtentsUpdated(); |
| 188 | 184 |
| 185 // Record the activation state. |
| 186 void BeforeActivationStateChanged(); |
| 187 |
| 188 // Handle the state change since BeforeActivationStateChanged(). |
| 189 void AfterActivationStateChanged(); |
| 190 |
| 191 // Called on an XEnterWindowEvent, XLeaveWindowEvent, XIEnterEvent, or an |
| 192 // XILeaveEvent. |
| 193 void OnCrossingEvent(bool enter, |
| 194 bool focus_in_window_or_ancestor, |
| 195 int mode, |
| 196 int detail); |
| 197 |
| 198 // Called on an XFocusInEvent, XFocusOutEvent, XIFocusInEvent, or an |
| 199 // XIFocusOutEvent. |
| 200 void OnFocusEvent(bool focus_in, int mode, int detail); |
| 201 |
| 189 // Makes a round trip to the X server to get the enclosing workspace for this | 202 // Makes a round trip to the X server to get the enclosing workspace for this |
| 190 // window. Returns true iff |workspace_| was changed. | 203 // window. Returns true iff |workspace_| was changed. |
| 191 bool UpdateWorkspace(); | 204 bool UpdateWorkspace(); |
| 192 | 205 |
| 193 // Updates |xwindow_|'s minimum and maximum size. | 206 // Updates |xwindow_|'s minimum and maximum size. |
| 194 void UpdateMinAndMaxSize(); | 207 void UpdateMinAndMaxSize(); |
| 195 | 208 |
| 196 // Updates |xwindow_|'s _NET_WM_USER_TIME if |xwindow_| is active. | 209 // Updates |xwindow_|'s _NET_WM_USER_TIME if |xwindow_| is active. |
| 197 void UpdateWMUserTime(const ui::PlatformEvent& event); | 210 void UpdateWMUserTime(const ui::PlatformEvent& event); |
| 198 | 211 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 | 272 |
| 260 // The native root window. | 273 // The native root window. |
| 261 ::Window x_root_window_; | 274 ::Window x_root_window_; |
| 262 | 275 |
| 263 ui::X11AtomCache atom_cache_; | 276 ui::X11AtomCache atom_cache_; |
| 264 | 277 |
| 265 // Is the window mapped to the screen? | 278 // Is the window mapped to the screen? |
| 266 bool window_mapped_; | 279 bool window_mapped_; |
| 267 | 280 |
| 268 // Should we wait for an UnmapNotify before trying to remap the window? | 281 // Should we wait for an UnmapNotify before trying to remap the window? |
| 282 // If |wait_for_unmap_| is true, we have sent an XUnmapWindow request to the |
| 283 // server and have yet to receive an UnmapNotify. |
| 269 bool wait_for_unmap_; | 284 bool wait_for_unmap_; |
| 270 | 285 |
| 271 // The bounds of |xwindow_|. | 286 // The bounds of |xwindow_|. |
| 272 gfx::Rect bounds_in_pixels_; | 287 gfx::Rect bounds_in_pixels_; |
| 273 | 288 |
| 274 // Whenever the bounds are set, we keep the previous set of bounds around so | 289 // Whenever the bounds are set, we keep the previous set of bounds around so |
| 275 // we can have a better chance of getting the real | 290 // we can have a better chance of getting the real |
| 276 // |restored_bounds_in_pixels_|. Window managers tend to send a Configure | 291 // |restored_bounds_in_pixels_|. Window managers tend to send a Configure |
| 277 // message with the maximized bounds, and then set the window maximized | 292 // message with the maximized bounds, and then set the window maximized |
| 278 // property. (We don't rely on this for when we request that the window be | 293 // property. (We don't rely on this for when we request that the window be |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 static std::list<XID>* open_windows_; | 364 static std::list<XID>* open_windows_; |
| 350 | 365 |
| 351 base::string16 window_title_; | 366 base::string16 window_title_; |
| 352 | 367 |
| 353 // Whether we currently are flashing our frame. This feature is implemented | 368 // Whether we currently are flashing our frame. This feature is implemented |
| 354 // by setting the urgency hint with the window manager, which can draw | 369 // by setting the urgency hint with the window manager, which can draw |
| 355 // attention to the window or completely ignore the hint. We stop flashing | 370 // attention to the window or completely ignore the hint. We stop flashing |
| 356 // the frame when |xwindow_| gains focus or handles a mouse button event. | 371 // the frame when |xwindow_| gains focus or handles a mouse button event. |
| 357 bool urgency_hint_set_; | 372 bool urgency_hint_set_; |
| 358 | 373 |
| 374 // Does |xwindow_| have the pointer grab (XI2 or normal)? |
| 375 bool has_pointer_grab_; |
| 376 |
| 359 bool activatable_; | 377 bool activatable_; |
| 360 | 378 |
| 379 // The focus-tracking state variables are as described in |
| 380 // gtk/docs/focus_tracking.txt |
| 381 // |
| 382 // |xwindow_| is active iff: |
| 383 // (|has_window_focus_| || |has_pointer_focus_|) && |
| 384 // !|ignore_keyboard_input_| |
| 385 |
| 386 // Is the pointer in |xwindow_| or one of its children? |
| 387 bool has_pointer_; |
| 388 |
| 389 // Is |xwindow_| or one of its children focused? |
| 390 bool has_window_focus_; |
| 391 |
| 392 // (An ancestor window or the PointerRoot is focused) && |has_pointer_|. |
| 393 // |has_pointer_focus_| == true is the odd case where we will receive keyboard |
| 394 // input when |has_window_focus_| == false. |has_window_focus_| and |
| 395 // |has_pointer_focus_| are mutually exclusive. |
| 396 bool has_pointer_focus_; |
| 397 |
| 398 // X11 does not support defocusing windows; you can only focus a different |
| 399 // window. If we would like to be defocused, we just ignore keyboard input we |
| 400 // no longer care about. |
| 401 bool ignore_keyboard_input_; |
| 402 |
| 403 // Used for tracking activation state in {Before|After}ActivationStateChanged. |
| 404 bool was_active_; |
| 405 bool had_pointer_; |
| 406 bool had_pointer_grab_; |
| 407 bool had_window_focus_; |
| 408 |
| 361 base::CancelableCallback<void()> delayed_resize_task_; | 409 base::CancelableCallback<void()> delayed_resize_task_; |
| 362 | 410 |
| 363 base::WeakPtrFactory<DesktopWindowTreeHostX11> close_widget_factory_; | 411 base::WeakPtrFactory<DesktopWindowTreeHostX11> close_widget_factory_; |
| 364 | 412 |
| 365 DISALLOW_COPY_AND_ASSIGN(DesktopWindowTreeHostX11); | 413 DISALLOW_COPY_AND_ASSIGN(DesktopWindowTreeHostX11); |
| 366 }; | 414 }; |
| 367 | 415 |
| 368 } // namespace views | 416 } // namespace views |
| 369 | 417 |
| 370 #endif // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_X11_H_ | 418 #endif // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_X11_H_ |
| OLD | NEW |