Drop "send_event" boolean trap in X11Window::restackWindow()
The synthetic ConfigureNotify event is not sent when the stack mode is TopIf and BottomIf, i.e. the way the restackWindow() function handles the "send_event" argument is inconsistent. And the window manager doesn't have to send a synthetic configure event when processing a _NET_RESTACK_WINDOW client message. It must do it only after handling a ConfigureRequest request, which the X11Window::configureRequestEvent() function already does. So rather than fixing the handling of the "send_event" argument, this change removes that boolean trap instead.
This commit is contained in:
parent
eff06e4109
commit
0622526e8f
4 changed files with 4 additions and 9 deletions
|
@ -731,7 +731,7 @@ void X11Window::configureRequestEvent(xcb_configure_request_event_t *e)
|
||||||
Xcb::fromXNative(e->y), Xcb::fromXNative(e->width), Xcb::fromXNative(e->height), 0, false);
|
Xcb::fromXNative(e->y), Xcb::fromXNative(e->width), Xcb::fromXNative(e->height), 0, false);
|
||||||
}
|
}
|
||||||
if (e->value_mask & XCB_CONFIG_WINDOW_STACK_MODE) {
|
if (e->value_mask & XCB_CONFIG_WINDOW_STACK_MODE) {
|
||||||
restackWindow(e->sibling, e->stack_mode, NET::FromApplication, userTime(), false);
|
restackWindow(e->sibling, e->stack_mode, NET::FromApplication, userTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sending a synthetic configure notify always is fine, even in cases where
|
// Sending a synthetic configure notify always is fine, even in cases where
|
||||||
|
|
|
@ -186,7 +186,7 @@ void RootInfo::restackWindow(xcb_window_t w, RequestSource src, xcb_window_t abo
|
||||||
if (src != NET::FromApplication && src != FromTool) {
|
if (src != NET::FromApplication && src != FromTool) {
|
||||||
src = NET::FromTool;
|
src = NET::FromTool;
|
||||||
}
|
}
|
||||||
c->restackWindow(above, detail, src, timestamp, true);
|
c->restackWindow(above, detail, src, timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5435,7 +5435,7 @@ bool X11Window::allowWindowActivation(xcb_timestamp_t time, bool focus_in)
|
||||||
return NET::timestampCompare(time, user_time) >= 0; // time >= user_time
|
return NET::timestampCompare(time, user_time) >= 0; // time >= user_time
|
||||||
}
|
}
|
||||||
|
|
||||||
void X11Window::restackWindow(xcb_window_t above, int detail, NET::RequestSource src, xcb_timestamp_t timestamp, bool send_event)
|
void X11Window::restackWindow(xcb_window_t above, int detail, NET::RequestSource src, xcb_timestamp_t timestamp)
|
||||||
{
|
{
|
||||||
X11Window *other = workspace()->findClient(Predicate::WindowMatch, above);
|
X11Window *other = workspace()->findClient(Predicate::WindowMatch, above);
|
||||||
if (detail == XCB_STACK_MODE_OPPOSITE) {
|
if (detail == XCB_STACK_MODE_OPPOSITE) {
|
||||||
|
@ -5480,10 +5480,6 @@ void X11Window::restackWindow(xcb_window_t above, int detail, NET::RequestSource
|
||||||
workspace()->lowerWindowRequest(this, src, timestamp);
|
workspace()->lowerWindowRequest(this, src, timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_event) {
|
|
||||||
sendSyntheticConfigureNotify();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool X11Window::belongsToDesktop() const
|
bool X11Window::belongsToDesktop() const
|
||||||
|
|
|
@ -229,8 +229,7 @@ public:
|
||||||
void NETMoveResize(qreal x_root, qreal y_root, NET::Direction direction, xcb_button_t button);
|
void NETMoveResize(qreal x_root, qreal y_root, NET::Direction direction, xcb_button_t button);
|
||||||
void NETMoveResizeWindow(int flags, qreal x, qreal y, qreal width, qreal height);
|
void NETMoveResizeWindow(int flags, qreal x, qreal y, qreal width, qreal height);
|
||||||
void GTKShowWindowMenu(qreal x_root, qreal y_root);
|
void GTKShowWindowMenu(qreal x_root, qreal y_root);
|
||||||
void restackWindow(xcb_window_t above, int detail, NET::RequestSource source, xcb_timestamp_t timestamp,
|
void restackWindow(xcb_window_t above, int detail, NET::RequestSource source, xcb_timestamp_t timestamp);
|
||||||
bool send_event = false);
|
|
||||||
|
|
||||||
void gotPing(xcb_timestamp_t timestamp);
|
void gotPing(xcb_timestamp_t timestamp);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue