83d5833b4f
* refactor: precache the IsWindowStateEvent() atom XAtoms never change after creation so we can perload the atoms we need. This is useful in WindowStateWatcher's XEvent handler, which is called on every XEvent, e.g. mouse movement... * empty commit for ci
39 lines
1,006 B
C++
39 lines
1,006 B
C++
// Copyright (c) 2014 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef SHELL_BROWSER_UI_X_WINDOW_STATE_WATCHER_H_
|
|
#define SHELL_BROWSER_UI_X_WINDOW_STATE_WATCHER_H_
|
|
|
|
#include "ui/events/platform/x11/x11_event_source.h"
|
|
|
|
#include "shell/browser/native_window_views.h"
|
|
|
|
namespace electron {
|
|
|
|
class WindowStateWatcher : public ui::XEventObserver {
|
|
public:
|
|
explicit WindowStateWatcher(NativeWindowViews* window);
|
|
~WindowStateWatcher() override;
|
|
|
|
protected:
|
|
// ui::XEventObserver:
|
|
void WillProcessXEvent(XEvent* xev) override;
|
|
void DidProcessXEvent(XEvent* xev) override;
|
|
|
|
private:
|
|
bool IsWindowStateEvent(XEvent* xev) const;
|
|
|
|
NativeWindowViews* window_;
|
|
gfx::AcceleratedWidget widget_;
|
|
const ::XAtom window_state_atom_;
|
|
|
|
bool was_minimized_ = false;
|
|
bool was_maximized_ = false;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(WindowStateWatcher);
|
|
};
|
|
|
|
} // namespace electron
|
|
|
|
#endif // SHELL_BROWSER_UI_X_WINDOW_STATE_WATCHER_H_
|