fix: maximize/unmaximize firing on linux (#32441)
This commit is contained in:
parent
6e6f5efad9
commit
2a8d49a059
2 changed files with 9 additions and 4 deletions
|
@ -21,7 +21,9 @@ WindowStateWatcher::WindowStateWatcher(NativeWindowViews* window)
|
||||||
x11::GetAtom("_NET_WM_STATE_MAXIMIZED_VERT")),
|
x11::GetAtom("_NET_WM_STATE_MAXIMIZED_VERT")),
|
||||||
net_wm_state_maximized_horz_atom_(
|
net_wm_state_maximized_horz_atom_(
|
||||||
x11::GetAtom("_NET_WM_STATE_MAXIMIZED_HORZ")),
|
x11::GetAtom("_NET_WM_STATE_MAXIMIZED_HORZ")),
|
||||||
net_wm_state_fullscreen_atom_(x11::GetAtom("_NET_WM_STATE_FULLSCREEN")) {
|
net_wm_state_fullscreen_atom_(x11::GetAtom("_NET_WM_STATE_FULLSCREEN")),
|
||||||
|
was_minimized_(window_->IsMinimized()),
|
||||||
|
was_maximized_(window_->IsMaximized()) {
|
||||||
ui::X11EventSource::GetInstance()->connection()->AddEventObserver(this);
|
ui::X11EventSource::GetInstance()->connection()->AddEventObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,9 +33,6 @@ WindowStateWatcher::~WindowStateWatcher() {
|
||||||
|
|
||||||
void WindowStateWatcher::OnEvent(const x11::Event& x11_event) {
|
void WindowStateWatcher::OnEvent(const x11::Event& x11_event) {
|
||||||
if (IsWindowStateEvent(x11_event)) {
|
if (IsWindowStateEvent(x11_event)) {
|
||||||
const bool was_minimized_ = window_->IsMinimized();
|
|
||||||
const bool was_maximized_ = window_->IsMaximized();
|
|
||||||
|
|
||||||
std::vector<x11::Atom> wm_states;
|
std::vector<x11::Atom> wm_states;
|
||||||
if (GetArrayProperty(
|
if (GetArrayProperty(
|
||||||
static_cast<x11::Window>(window_->GetAcceleratedWidget()),
|
static_cast<x11::Window>(window_->GetAcceleratedWidget()),
|
||||||
|
@ -67,6 +66,9 @@ void WindowStateWatcher::OnEvent(const x11::Event& x11_event) {
|
||||||
else
|
else
|
||||||
window_->NotifyWindowLeaveFullScreen();
|
window_->NotifyWindowLeaveFullScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
was_minimized_ = is_minimized;
|
||||||
|
was_maximized_ = is_maximized;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,9 @@ class WindowStateWatcher : public x11::EventObserver {
|
||||||
const x11::Atom net_wm_state_maximized_vert_atom_;
|
const x11::Atom net_wm_state_maximized_vert_atom_;
|
||||||
const x11::Atom net_wm_state_maximized_horz_atom_;
|
const x11::Atom net_wm_state_maximized_horz_atom_;
|
||||||
const x11::Atom net_wm_state_fullscreen_atom_;
|
const x11::Atom net_wm_state_fullscreen_atom_;
|
||||||
|
|
||||||
|
bool was_minimized_ = false;
|
||||||
|
bool was_maximized_ = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace electron
|
} // namespace electron
|
||||||
|
|
Loading…
Add table
Reference in a new issue