Skip to content

Commit 57dd480

Browse files
liehenniushijia
andauthored
fix(wayland):Candidate word panel fails to hide upon virtual keyboard display (#1427)
Co-authored-by: niushijia <[email protected]>
1 parent 34c6739 commit 57dd480

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/frontend/dbusfrontend/dbusfrontend.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,25 @@ class DBusInputContext1 : public InputContext,
213213

214214
void updateClientSideUIImpl() override {
215215
auto *instance = im_->instance();
216-
auto preedit = instance->outputFilter(this, inputPanel().preedit());
217-
auto auxUp = instance->outputFilter(this, inputPanel().auxUp());
218-
auto auxDown = instance->outputFilter(this, inputPanel().auxDown());
219-
auto candidateList = inputPanel().candidateList();
220-
int cursorIndex = 0;
221216

222217
std::vector<dbus::DBusStruct<std::string, int>> preeditStrings;
223218
std::vector<dbus::DBusStruct<std::string, int>> auxUpStrings;
224219
std::vector<dbus::DBusStruct<std::string, int>> auxDownStrings;
225220
std::vector<dbus::DBusStruct<std::string, std::string>> candidates;
226221

222+
if (instance->inputMethodMode() == InputMethodMode::OnScreenKeyboard) {
223+
updateClientSideUITo(name_, preeditStrings, -1, auxUpStrings,
224+
auxDownStrings, candidates, -1, 0, false,
225+
false);
226+
return;
227+
}
228+
229+
auto preedit = instance->outputFilter(this, inputPanel().preedit());
230+
auto auxUp = instance->outputFilter(this, inputPanel().auxUp());
231+
auto auxDown = instance->outputFilter(this, inputPanel().auxDown());
232+
auto candidateList = inputPanel().candidateList();
233+
int cursorIndex = 0;
234+
227235
preeditStrings = buildFormattedTextVector(preedit);
228236
auxUpStrings = buildFormattedTextVector(auxUp);
229237
auxDownStrings = buildFormattedTextVector(auxDown);
@@ -596,6 +604,11 @@ DBusFrontendModule::DBusFrontendModule(Instance *instance)
596604
instance_->inputContextManager().foreach([](InputContext *ic) {
597605
if (ic->frontendName() == "dbus") {
598606
static_cast<DBusInputContext1 *>(ic)->updateCapability();
607+
if (ic->capabilityFlags().test(
608+
CapabilityFlag::ClientSideInputPanel)) {
609+
static_cast<DBusInputContext1 *>(ic)
610+
->updateClientSideUIImpl();
611+
}
599612
}
600613
return true;
601614
});

0 commit comments

Comments
 (0)