Merge branch 'Plasma/5.11'
This commit is contained in:
commit
aed7ff64c4
2 changed files with 32 additions and 8 deletions
|
@ -166,6 +166,26 @@ void PointerInputRedirection::init()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
connect(this, &PointerInputRedirection::decorationChanged, this,
|
||||||
|
[this] {
|
||||||
|
disconnect(m_decorationGeometryConnection);
|
||||||
|
m_decorationGeometryConnection = QMetaObject::Connection();
|
||||||
|
if (m_decoration) {
|
||||||
|
m_decorationGeometryConnection = connect(m_decoration->client(), &AbstractClient::geometryChanged, this,
|
||||||
|
[this] {
|
||||||
|
// ensure maximize button gets the leave event when maximizing/restore a window, see BUG 385140
|
||||||
|
const auto oldDeco = m_decoration;
|
||||||
|
update();
|
||||||
|
if (oldDeco && oldDeco == m_decoration && !m_decoration->client()->isMove() && !m_decoration->client()->isResize() && !areButtonsPressed()) {
|
||||||
|
// position of window did not change, we need to send HoverMotion manually
|
||||||
|
const QPointF p = m_pos - m_decoration->client()->pos();
|
||||||
|
QHoverEvent event(QEvent::HoverMove, p, p);
|
||||||
|
QCoreApplication::instance()->sendEvent(m_decoration->decoration(), &event);
|
||||||
|
}
|
||||||
|
}, Qt::QueuedConnection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
// connect the move resize of all window
|
// connect the move resize of all window
|
||||||
auto setupMoveResizeConnection = [this] (AbstractClient *c) {
|
auto setupMoveResizeConnection = [this] (AbstractClient *c) {
|
||||||
connect(c, &AbstractClient::clientStartUserMovedResized, this, &PointerInputRedirection::updateOnStartMoveResize);
|
connect(c, &AbstractClient::clientStartUserMovedResized, this, &PointerInputRedirection::updateOnStartMoveResize);
|
||||||
|
@ -425,6 +445,16 @@ void PointerInputRedirection::processPinchGestureCancelled(quint32 time, KWin::L
|
||||||
m_input->processFilters(std::bind(&InputEventFilter::pinchGestureCancelled, std::placeholders::_1, time));
|
m_input->processFilters(std::bind(&InputEventFilter::pinchGestureCancelled, std::placeholders::_1, time));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PointerInputRedirection::areButtonsPressed() const
|
||||||
|
{
|
||||||
|
for (auto state : m_buttons) {
|
||||||
|
if (state == InputRedirection::PointerButtonPressed) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void PointerInputRedirection::update()
|
void PointerInputRedirection::update()
|
||||||
{
|
{
|
||||||
if (!m_inited) {
|
if (!m_inited) {
|
||||||
|
@ -437,14 +467,6 @@ void PointerInputRedirection::update()
|
||||||
if (input()->isSelectingWindow()) {
|
if (input()->isSelectingWindow()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto areButtonsPressed = [this] {
|
|
||||||
for (auto state : qAsConst(m_buttons)) {
|
|
||||||
if (state == InputRedirection::PointerButtonPressed) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
if (areButtonsPressed()) {
|
if (areButtonsPressed()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,6 +153,7 @@ private:
|
||||||
void disconnectConfinedPointerRegionConnection();
|
void disconnectConfinedPointerRegionConnection();
|
||||||
void disconnectPointerConstraintsConnection();
|
void disconnectPointerConstraintsConnection();
|
||||||
void breakPointerConstraints(KWayland::Server::SurfaceInterface *surface);
|
void breakPointerConstraints(KWayland::Server::SurfaceInterface *surface);
|
||||||
|
bool areButtonsPressed() const;
|
||||||
CursorImage *m_cursor;
|
CursorImage *m_cursor;
|
||||||
bool m_inited = false;
|
bool m_inited = false;
|
||||||
bool m_supportsWarping;
|
bool m_supportsWarping;
|
||||||
|
@ -163,6 +164,7 @@ private:
|
||||||
QMetaObject::Connection m_internalWindowConnection;
|
QMetaObject::Connection m_internalWindowConnection;
|
||||||
QMetaObject::Connection m_constraintsConnection;
|
QMetaObject::Connection m_constraintsConnection;
|
||||||
QMetaObject::Connection m_confinedPointerRegionConnection;
|
QMetaObject::Connection m_confinedPointerRegionConnection;
|
||||||
|
QMetaObject::Connection m_decorationGeometryConnection;
|
||||||
bool m_confined = false;
|
bool m_confined = false;
|
||||||
bool m_locked = false;
|
bool m_locked = false;
|
||||||
bool m_blockConstraint = false;
|
bool m_blockConstraint = false;
|
||||||
|
|
Loading…
Reference in a new issue