inputmethod: Be more assertive towards the input panel visibility
If a new input client has taken over, don't override the trackedClient's geometry. Only consider the input geometry of a visible keyboard.
This commit is contained in:
parent
6fa96852dc
commit
09f99df1a3
1 changed files with 7 additions and 2 deletions
|
@ -141,8 +141,13 @@ void InputMethod::clientAdded(AbstractClient *_client)
|
||||||
if (!_client->isInputMethod()) {
|
if (!_client->isInputMethod()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto client = dynamic_cast<InputPanelV1Client *>(_client);
|
|
||||||
|
|
||||||
|
if (m_inputClient) {
|
||||||
|
qCWarning(KWIN_VIRTUALKEYBOARD) << "Replacing input client" << m_inputClient;
|
||||||
|
disconnect(m_inputClient, nullptr, this, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto client = dynamic_cast<InputPanelV1Client *>(_client);
|
||||||
m_inputClient = client;
|
m_inputClient = client;
|
||||||
connect(client->surface(), &SurfaceInterface::inputChanged, this, &InputMethod::updateInputPanelState);
|
connect(client->surface(), &SurfaceInterface::inputChanged, this, &InputMethod::updateInputPanelState);
|
||||||
connect(client, &QObject::destroyed, this, [this] {
|
connect(client, &QObject::destroyed, this, [this] {
|
||||||
|
@ -545,7 +550,7 @@ void InputMethod::updateInputPanelState()
|
||||||
|
|
||||||
QRect overlap = QRect(0, 0, 0, 0);
|
QRect overlap = QRect(0, 0, 0, 0);
|
||||||
if (m_trackedClient) {
|
if (m_trackedClient) {
|
||||||
const bool bottomKeyboard = m_inputClient && m_inputClient->mode() != InputPanelV1Client::Overlay;
|
const bool bottomKeyboard = m_inputClient && m_inputClient->mode() != InputPanelV1Client::Overlay && m_inputClient->isShown(false);
|
||||||
m_trackedClient->setVirtualKeyboardGeometry(bottomKeyboard ? m_inputClient->inputGeometry() : QRect());
|
m_trackedClient->setVirtualKeyboardGeometry(bottomKeyboard ? m_inputClient->inputGeometry() : QRect());
|
||||||
|
|
||||||
if (m_inputClient) {
|
if (m_inputClient) {
|
||||||
|
|
Loading…
Reference in a new issue