Merge pull request #459 from Jedi18/minor_fixes

Fix emoji related issues
This commit is contained in:
DeepBlueV7.X 2021-02-09 16:25:37 +01:00 committed by GitHub
commit 23a9306383
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 44 additions and 5 deletions

View file

@ -163,6 +163,10 @@ Rectangle {
TimelineManager.timeline.input.paste(false);
event.accepted = true;
} else if (event.key == Qt.Key_Space) {
// close popup if user enters space after colon
if(cursorPosition == completerTriggeredAt + 1)
popup.close();
if (popup.opened && popup.count <= 0)
popup.close();
@ -266,6 +270,11 @@ Rectangle {
target: TimelineManager.timeline
}
Connections {
target: TimelineManager
onFocusInput: messageInput.forceActiveFocus()
}
MouseArea {
// workaround for wrong cursor shape on some platforms
anchors.fill: parent
@ -293,6 +302,7 @@ Rectangle {
ToolTip.text: qsTr("Emoji")
onClicked: emojiPopup.visible ? emojiPopup.close() : emojiPopup.show(emojiButton, function(emoji) {
messageInput.insert(messageInput.cursorPosition, emoji);
TimelineManager.focusMessageInput()
})
}

View file

@ -14,5 +14,6 @@ ImageButton {
image: ":/icons/icons/ui/smile.png"
onClicked: emojiPicker.visible ? emojiPicker.close() : emojiPicker.show(emojiButton, function(emoji) {
TimelineManager.queueReactionMessage(event_id, emoji);
TimelineManager.focusMessageInput()
})
}

View file

@ -93,7 +93,7 @@ UserSettings::load(std::optional<QString> profile)
sortByImportance_ = settings.value("user/sort_by_unread", true).toBool();
readReceipts_ = settings.value("user/read_receipts", true).toBool();
theme_ = settings.value("user/theme", defaultTheme_).toString();
font_ = settings.value("user/font_family", "default").toString();
font_ = settings.value("user/font_family", "").toString();
avatarCircles_ = settings.value("user/avatar_circles", true).toBool();
decryptSidebar_ = settings.value("user/decrypt_sidebar", true).toBool();
privacyScreen_ = settings.value("user/privacy_screen", false).toBool();
@ -101,7 +101,7 @@ UserSettings::load(std::optional<QString> profile)
shareKeysWithTrustedUsers_ =
settings.value("user/share_keys_with_trusted_users", true).toBool();
mobileMode_ = settings.value("user/mobile_mode", false).toBool();
emojiFont_ = settings.value("user/emoji_font_family", "default").toString();
emojiFont_ = settings.value("user/emoji_font_family", "Default").toString();
baseFontSize_ = settings.value("user/font_size", QFont().pointSizeF()).toDouble();
auto tempPresence = settings.value("user/presence", "").toString().toStdString();
auto presenceValue = QMetaEnum::fromType<Presence>().keyToValue(tempPresence.c_str());
@ -341,7 +341,13 @@ UserSettings::setEmojiFontFamily(QString family)
{
if (family == emojiFont_)
return;
if (family == tr("Default")) {
emojiFont_ = "Default";
} else {
emojiFont_ = family;
}
emit emojiFontChanged(family);
save();
}
@ -725,11 +731,18 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
// TODO: Is there a way to limit to just emojis, rather than
// all emoji fonts?
auto emojiFamilies = fontDb.families(QFontDatabase::Symbol);
emojiFontSelectionCombo_->addItem(tr("Default"));
for (const auto &family : emojiFamilies) {
emojiFontSelectionCombo_->addItem(family);
}
fontSelectionCombo_->setCurrentIndex(fontSelectionCombo_->findText(settings_->font()));
QString currentFont = settings_->font();
if (currentFont == "Default") {
fontSelectionCombo_->setCurrentIndex(
fontSelectionCombo_->findText(tr(currentFont.toStdString().c_str())));
} else {
fontSelectionCombo_->setCurrentIndex(fontSelectionCombo_->findText(currentFont));
}
emojiFontSelectionCombo_->setCurrentIndex(
emojiFontSelectionCombo_->findText(settings_->emojiFont()));

View file

@ -177,7 +177,14 @@ public:
int timelineMaxWidth() const { return timelineMaxWidth_; }
double fontSize() const { return baseFontSize_; }
QString font() const { return font_; }
QString emojiFont() const { return emojiFont_; }
QString emojiFont() const
{
if (emojiFont_ == "Default") {
return tr("Default");
}
return emojiFont_;
}
Presence presence() const { return presence_; }
QString ringtone() const { return ringtone_; }
QString microphone() const { return microphone_; }

View file

@ -541,3 +541,9 @@ TimelineViewManager::queueCallMessage(const QString &roomid,
{
models.value(roomid)->sendMessageEvent(callHangUp, mtx::events::EventType::CallHangUp);
}
void
TimelineViewManager::focusMessageInput()
{
emit focusInput();
}

View file

@ -66,6 +66,7 @@ public:
Q_INVOKABLE void openLink(QString link) const;
Q_INVOKABLE void focusMessageInput();
Q_INVOKABLE void openInviteUsersDialog();
Q_INVOKABLE void openMemberListDialog() const;
Q_INVOKABLE void openLeaveRoomDialog() const;
@ -87,6 +88,7 @@ signals:
void showRoomList();
void narrowViewChanged();
void focusChanged();
void focusInput();
public slots:
void updateReadReceipts(const QString &room_id, const std::vector<QString> &event_ids);