Fixes to ctrl+backspace behavior (#5013)

This commit is contained in:
Herman Stornes 2023-12-16 14:40:05 +01:00 committed by GitHub
parent 918b8ca4bd
commit b78b57b454
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 44 additions and 4 deletions

View file

@ -52,6 +52,7 @@
- Bugfix: Fixed support for Windows 11 Snap layouts. (#4994)
- Bugfix: Fixed some windows appearing between screens. (#4797)
- Bugfix: Fixed a bug on Wayland where tooltips would spawn as separate windows instead of behaving like tooltips. (#4998)
- Bugfix: Fixes to section deletion in text input fields. (#5013)
- Bugfix: Show user text input within watch streak notices. (#5029)
- Dev: Run miniaudio in a separate thread, and simplify it to not manage the device ourselves. There's a chance the simplification is a bad idea. (#4978)
- Dev: Change clang-format from v14 to v16. (#4929)

View file

@ -227,6 +227,7 @@ EmotePopup::EmotePopup(QWidget *parent)
this->search_->setClearButtonEnabled(true);
this->search_->findChild<QAbstractButton *>()->setIcon(
QPixmap(":/buttons/clearSearch.png"));
this->search_->installEventFilter(this);
layout2->addWidget(this->search_);
layout->addLayout(layout2);
@ -448,6 +449,21 @@ void EmotePopup::loadChannel(ChannelPtr channel)
}
}
bool EmotePopup::eventFilter(QObject *object, QEvent *event)
{
if (object == this->search_ && event->type() == QEvent::KeyPress)
{
auto *keyEvent = dynamic_cast<QKeyEvent *>(event);
if (keyEvent == QKeySequence::DeleteStartOfWord &&
this->search_->selectionLength() > 0)
{
this->search_->backspace();
return true;
}
}
return false;
}
void EmotePopup::filterTwitchEmotes(std::shared_ptr<Channel> searchChannel,
const QString &searchText)
{

View file

@ -46,6 +46,7 @@ private:
const QString &searchText);
void filterEmotes(const QString &text);
void addShortcuts() override;
bool eventFilter(QObject *object, QEvent *event) override;
};
} // namespace chatterino

View file

@ -497,6 +497,12 @@ bool SelectChannelDialog::EventFilter::eventFilter(QObject *watched,
widget->previousInFocusChain()->setFocus();
return true;
}
else if (event_key == QKeySequence::DeleteStartOfWord &&
this->dialog->ui_.twitch.channelName->selectionLength() > 0)
{
this->dialog->ui_.twitch.channelName->backspace();
return true;
}
else
{
return false;

View file

@ -113,6 +113,7 @@ void SettingsDialog::initUi()
edit->setClearButtonEnabled(true);
edit->findChild<QAbstractButton *>()->setIcon(
QPixmap(":/buttons/clearSearch.png"));
this->ui_.search->installEventFilter(this);
QObject::connect(edit.getElement(), &QLineEdit::textChanged, this,
&SettingsDialog::filterElements);
@ -206,6 +207,21 @@ void SettingsDialog::setElementFilter(const QString &query)
this->ui_.search->setText(query);
}
bool SettingsDialog::eventFilter(QObject *object, QEvent *event)
{
if (object == this->ui_.search && event->type() == QEvent::KeyPress)
{
auto *keyEvent = dynamic_cast<QKeyEvent *>(event);
if (keyEvent == QKeySequence::DeleteStartOfWord &&
this->ui_.search->selectionLength() > 0)
{
this->ui_.search->backspace();
return true;
}
}
return false;
}
void SettingsDialog::addTabs()
{
this->ui_.tabContainer->setSpacing(0);

View file

@ -59,6 +59,7 @@ private:
void selectTab(SettingsTabId id);
void filterElements(const QString &query);
void setElementFilter(const QString &query);
bool eventFilter(QObject *object, QEvent *event) override;
void onOkClicked();
void onCancelClicked();

View file

@ -202,11 +202,10 @@ bool SearchPopup::eventFilter(QObject *object, QEvent *event)
if (object == this->searchInput_ && event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_Backspace &&
keyEvent->modifiers() == Qt::ControlModifier &&
this->searchInput_->text() == this->searchInput_->selectedText())
if (keyEvent == QKeySequence::DeleteStartOfWord &&
this->searchInput_->selectionLength() > 0)
{
this->searchInput_->clear();
this->searchInput_->backspace();
return true;
}
}