Files
electron/shell/browser/ui/x/window_state_watcher.h
Charles Kerr 83d5833b4f refactor: precache the IsWindowStateEvent() XAtom (#22706)
* 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
2020-03-17 19:30:58 -05:00

40 lines
1006 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_