From 588cc3c7ab4dbbf782bcdd78dd2ec705d19a7666 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Tue, 25 Nov 2014 13:05:04 +0800 Subject: [PATCH] Make WindowStateWatcher X11 only On Windows we need to take another way of detecting window state events. --- atom.gyp | 4 ++-- atom/browser/native_window_views.cc | 4 ++-- atom/browser/native_window_views.h | 2 +- atom/browser/ui/{views => x}/window_state_watcher.cc | 10 +--------- atom/browser/ui/{views => x}/window_state_watcher.h | 10 +++++----- 5 files changed, 11 insertions(+), 19 deletions(-) rename atom/browser/ui/{views => x}/window_state_watcher.cc (93%) rename atom/browser/ui/{views => x}/window_state_watcher.h (85%) diff --git a/atom.gyp b/atom.gyp index 61ace73f4..c0afe970d 100644 --- a/atom.gyp +++ b/atom.gyp @@ -175,12 +175,12 @@ 'atom/browser/ui/views/submenu_button.h', 'atom/browser/ui/views/win_frame_view.cc', 'atom/browser/ui/views/win_frame_view.h', - 'atom/browser/ui/views/window_state_watcher.cc', - 'atom/browser/ui/views/window_state_watcher.h', 'atom/browser/ui/win/notify_icon_host.cc', 'atom/browser/ui/win/notify_icon_host.h', 'atom/browser/ui/win/notify_icon.cc', 'atom/browser/ui/win/notify_icon.h', + 'atom/browser/ui/x/window_state_watcher.cc', + 'atom/browser/ui/x/window_state_watcher.h', 'atom/browser/ui/x/x_window_utils.cc', 'atom/browser/ui/x/x_window_utils.h', 'atom/browser/web_view/web_view_manager.cc', diff --git a/atom/browser/native_window_views.cc b/atom/browser/native_window_views.cc index beba0891f..ae291b997 100644 --- a/atom/browser/native_window_views.cc +++ b/atom/browser/native_window_views.cc @@ -13,7 +13,6 @@ #include "atom/browser/ui/views/menu_bar.h" #include "atom/browser/ui/views/menu_layout.h" -#include "atom/browser/ui/views/window_state_watcher.h" #include "atom/common/draggable_region.h" #include "atom/common/options_switches.h" #include "base/strings/utf_string_conversions.h" @@ -33,6 +32,7 @@ #include "atom/browser/browser.h" #include "atom/browser/ui/views/global_menu_bar_x11.h" #include "atom/browser/ui/views/frameless_view.h" +#include "atom/browser/ui/x/window_state_watcher.h" #include "atom/browser/ui/x/x_window_utils.h" #include "base/environment.h" #include "base/nix/xdg_util.h" @@ -189,10 +189,10 @@ NativeWindowViews::NativeWindowViews(content::WebContents* web_contents, window_->Init(params); +#if defined(USE_X11) // Start monitoring window states. window_state_watcher_.reset(new WindowStateWatcher(this)); -#if defined(USE_X11) // Set _GTK_THEME_VARIANT to dark if we have "dark-theme" option set. bool use_dark_theme = false; if (options.Get(switches::kDarkTheme, &use_dark_theme) && use_dark_theme) { diff --git a/atom/browser/native_window_views.h b/atom/browser/native_window_views.h index dd0e901e9..f15f5cb7c 100644 --- a/atom/browser/native_window_views.h +++ b/atom/browser/native_window_views.h @@ -145,10 +145,10 @@ class NativeWindowViews : public NativeWindow, #if defined(USE_X11) scoped_ptr global_menu_bar_; -#endif // Handles window state events. scoped_ptr window_state_watcher_; +#endif // Handles unhandled keyboard messages coming back from the renderer process. scoped_ptr keyboard_event_handler_; diff --git a/atom/browser/ui/views/window_state_watcher.cc b/atom/browser/ui/x/window_state_watcher.cc similarity index 93% rename from atom/browser/ui/views/window_state_watcher.cc rename to atom/browser/ui/x/window_state_watcher.cc index 53feafe1c..e1b2716b8 100644 --- a/atom/browser/ui/views/window_state_watcher.cc +++ b/atom/browser/ui/x/window_state_watcher.cc @@ -2,11 +2,9 @@ // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. -#include "atom/browser/ui/views/window_state_watcher.h" +#include "atom/browser/ui/x/window_state_watcher.h" -#if defined(USE_X11) #include -#endif #include "ui/events/platform/platform_event_source.h" @@ -24,9 +22,7 @@ const char* kAtomsToCache[] = { WindowStateWatcher::WindowStateWatcher(NativeWindowViews* window) : window_(window), widget_(window->GetAcceleratedWidget()), -#if defined(USE_X11) atom_cache_(gfx::GetXDisplay(), kAtomsToCache), -#endif was_minimized_(false), was_maximized_(false) { ui::PlatformEventSource::GetInstance()->AddPlatformEventObserver(this); @@ -73,14 +69,10 @@ void WindowStateWatcher::DidProcessEvent(const ui::PlatformEvent& event) { } bool WindowStateWatcher::IsWindowStateEvent(const ui::PlatformEvent& event) { -#if defined(USE_X11) ::Atom changed_atom = event->xproperty.atom; return (changed_atom == atom_cache_.GetAtom("_NET_WM_STATE") && event->type == PropertyNotify && event->xproperty.window == widget_); -#else - return false; -#endif } } // namespace atom diff --git a/atom/browser/ui/views/window_state_watcher.h b/atom/browser/ui/x/window_state_watcher.h similarity index 85% rename from atom/browser/ui/views/window_state_watcher.h rename to atom/browser/ui/x/window_state_watcher.h index 17ad64024..2888c9fc6 100644 --- a/atom/browser/ui/views/window_state_watcher.h +++ b/atom/browser/ui/x/window_state_watcher.h @@ -2,13 +2,13 @@ // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. +#ifndef ATOM_BROWSER_UI_X_WINDOW_STATE_WATCHER_H_ +#define ATOM_BROWSER_UI_X_WINDOW_STATE_WATCHER_H_ + #include "ui/events/platform/platform_event_observer.h" #include "atom/browser/native_window_views.h" - -#if defined(USE_X11) #include "ui/gfx/x/x11_atom_cache.h" -#endif namespace atom { @@ -28,9 +28,7 @@ class WindowStateWatcher : public ui::PlatformEventObserver { NativeWindowViews* window_; gfx::AcceleratedWidget widget_; -#if defined(USE_X11) ui::X11AtomCache atom_cache_; -#endif bool was_minimized_; bool was_maximized_; @@ -39,3 +37,5 @@ class WindowStateWatcher : public ui::PlatformEventObserver { }; } // namespace atom + +#endif // ATOM_BROWSER_UI_X_WINDOW_STATE_WATCHER_H_