mirror of https://gitee.com/openkylin/fcitx5.git
Use two separate options to control the behavior of virtual keyboard when the object gets focus or loses focus
In some GUI frameworks like Qt, it provides good support to show virtual keyboard and provides poor support to hide virtual keyboard. So Qt IM module has the need to disable the default behavior of virtual keyboard when the object get focus and enable the default behavior of virtual keyboard when the object loses focus. Qt can decide if it should show virtual keyboard when the object gets focus. However, fcitx will hide virtual keyboard when the object loses focus.
This commit is contained in:
parent
36ebc2b4bb
commit
102d8a0517
|
@ -129,10 +129,12 @@ public:
|
||||||
return method(std::move(message));
|
return method(std::move(message));
|
||||||
});
|
});
|
||||||
|
|
||||||
setClientControlVirtualkeyboardVisibility(
|
setClientControlVirtualkeyboardShow(
|
||||||
getArgument(args, "clientControlVirtualkeyboardVisibility",
|
getArgument(args, "clientControlVirtualkeyboardShow",
|
||||||
|
"false") == "true");
|
||||||
|
setClientControlVirtualkeyboardHide(
|
||||||
|
getArgument(args, "clientControlVirtualkeyboardHide",
|
||||||
"false") == "true");
|
"false") == "true");
|
||||||
|
|
||||||
created();
|
created();
|
||||||
|
|
||||||
setFocusGroup(
|
setFocusGroup(
|
||||||
|
|
|
@ -163,14 +163,24 @@ void InputContext::hideVirtualKeyboard() const {
|
||||||
return instance->userInterfaceManager().hideVirtualKeyboard();
|
return instance->userInterfaceManager().hideVirtualKeyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InputContext::clientControlVirtualkeyboardVisibility() const {
|
bool InputContext::clientControlVirtualkeyboardShow() const {
|
||||||
FCITX_D();
|
FCITX_D();
|
||||||
return d->clientControlVirtualkeyboardVisibility_;
|
return d->clientControlVirtualkeyboardShow_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputContext::setClientControlVirtualkeyboardVisibility(bool show) {
|
void InputContext::setClientControlVirtualkeyboardShow(bool show) {
|
||||||
FCITX_D();
|
FCITX_D();
|
||||||
d->clientControlVirtualkeyboardVisibility_ = show;
|
d->clientControlVirtualkeyboardShow_ = show;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool InputContext::clientControlVirtualkeyboardHide() const {
|
||||||
|
FCITX_D();
|
||||||
|
return d->clientControlVirtualkeyboardHide_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputContext::setClientControlVirtualkeyboardHide(bool hide) {
|
||||||
|
FCITX_D();
|
||||||
|
d->clientControlVirtualkeyboardHide_ = hide;
|
||||||
}
|
}
|
||||||
|
|
||||||
CapabilityFlags calculateFlags(CapabilityFlags flag, bool isPreeditEnabled) {
|
CapabilityFlags calculateFlags(CapabilityFlags flag, bool isPreeditEnabled) {
|
||||||
|
|
|
@ -267,9 +267,13 @@ public:
|
||||||
|
|
||||||
void hideVirtualKeyboard() const;
|
void hideVirtualKeyboard() const;
|
||||||
|
|
||||||
bool clientControlVirtualkeyboardVisibility() const;
|
bool clientControlVirtualkeyboardShow() const;
|
||||||
|
|
||||||
void setClientControlVirtualkeyboardVisibility(bool show);
|
void setClientControlVirtualkeyboardShow(bool show);
|
||||||
|
|
||||||
|
bool clientControlVirtualkeyboardHide() const;
|
||||||
|
|
||||||
|
void setClientControlVirtualkeyboardHide(bool show);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -137,7 +137,8 @@ public:
|
||||||
InputPanel inputPanel_;
|
InputPanel inputPanel_;
|
||||||
StatusArea statusArea_;
|
StatusArea statusArea_;
|
||||||
bool hasFocus_ = false;
|
bool hasFocus_ = false;
|
||||||
bool clientControlVirtualkeyboardVisibility_ = false;
|
bool clientControlVirtualkeyboardShow_ = false;
|
||||||
|
bool clientControlVirtualkeyboardHide_ = false;
|
||||||
std::string program_;
|
std::string program_;
|
||||||
CapabilityFlags capabilityFlags_;
|
CapabilityFlags capabilityFlags_;
|
||||||
bool isPreeditEnabled_ = true;
|
bool isPreeditEnabled_ = true;
|
||||||
|
|
|
@ -988,7 +988,7 @@ Instance::Instance(int argc, char **argv) {
|
||||||
|
|
||||||
if (virtualKeyboardAutoShow()) {
|
if (virtualKeyboardAutoShow()) {
|
||||||
auto *inputContext = icEvent.inputContext();
|
auto *inputContext = icEvent.inputContext();
|
||||||
if (!inputContext->clientControlVirtualkeyboardVisibility()) {
|
if (!inputContext->clientControlVirtualkeyboardShow()) {
|
||||||
inputContext->showVirtualKeyboard();
|
inputContext->showVirtualKeyboard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1030,7 +1030,7 @@ Instance::Instance(int argc, char **argv) {
|
||||||
deactivateInputMethod(icEvent);
|
deactivateInputMethod(icEvent);
|
||||||
if (virtualKeyboardAutoHide()) {
|
if (virtualKeyboardAutoHide()) {
|
||||||
auto *inputContext = icEvent.inputContext();
|
auto *inputContext = icEvent.inputContext();
|
||||||
if (!inputContext->clientControlVirtualkeyboardVisibility()) {
|
if (!inputContext->clientControlVirtualkeyboardHide()) {
|
||||||
inputContext->hideVirtualKeyboard();
|
inputContext->hideVirtualKeyboard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue