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
7 changed files with 44 additions and 4 deletions
+1
View File
@@ -52,6 +52,7 @@
- Bugfix: Fixed support for Windows 11 Snap layouts. (#4994) - Bugfix: Fixed support for Windows 11 Snap layouts. (#4994)
- Bugfix: Fixed some windows appearing between screens. (#4797) - 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: 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) - 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: 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) - Dev: Change clang-format from v14 to v16. (#4929)
+16
View File
@@ -227,6 +227,7 @@ EmotePopup::EmotePopup(QWidget *parent)
this->search_->setClearButtonEnabled(true); this->search_->setClearButtonEnabled(true);
this->search_->findChild<QAbstractButton *>()->setIcon( this->search_->findChild<QAbstractButton *>()->setIcon(
QPixmap(":/buttons/clearSearch.png")); QPixmap(":/buttons/clearSearch.png"));
this->search_->installEventFilter(this);
layout2->addWidget(this->search_); layout2->addWidget(this->search_);
layout->addLayout(layout2); 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, void EmotePopup::filterTwitchEmotes(std::shared_ptr<Channel> searchChannel,
const QString &searchText) const QString &searchText)
{ {
+1
View File
@@ -46,6 +46,7 @@ private:
const QString &searchText); const QString &searchText);
void filterEmotes(const QString &text); void filterEmotes(const QString &text);
void addShortcuts() override; void addShortcuts() override;
bool eventFilter(QObject *object, QEvent *event) override;
}; };
} // namespace chatterino } // namespace chatterino
@@ -497,6 +497,12 @@ bool SelectChannelDialog::EventFilter::eventFilter(QObject *watched,
widget->previousInFocusChain()->setFocus(); widget->previousInFocusChain()->setFocus();
return true; return true;
} }
else if (event_key == QKeySequence::DeleteStartOfWord &&
this->dialog->ui_.twitch.channelName->selectionLength() > 0)
{
this->dialog->ui_.twitch.channelName->backspace();
return true;
}
else else
{ {
return false; return false;
+16
View File
@@ -113,6 +113,7 @@ void SettingsDialog::initUi()
edit->setClearButtonEnabled(true); edit->setClearButtonEnabled(true);
edit->findChild<QAbstractButton *>()->setIcon( edit->findChild<QAbstractButton *>()->setIcon(
QPixmap(":/buttons/clearSearch.png")); QPixmap(":/buttons/clearSearch.png"));
this->ui_.search->installEventFilter(this);
QObject::connect(edit.getElement(), &QLineEdit::textChanged, this, QObject::connect(edit.getElement(), &QLineEdit::textChanged, this,
&SettingsDialog::filterElements); &SettingsDialog::filterElements);
@@ -206,6 +207,21 @@ void SettingsDialog::setElementFilter(const QString &query)
this->ui_.search->setText(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() void SettingsDialog::addTabs()
{ {
this->ui_.tabContainer->setSpacing(0); this->ui_.tabContainer->setSpacing(0);
+1
View File
@@ -59,6 +59,7 @@ private:
void selectTab(SettingsTabId id); void selectTab(SettingsTabId id);
void filterElements(const QString &query); void filterElements(const QString &query);
void setElementFilter(const QString &query); void setElementFilter(const QString &query);
bool eventFilter(QObject *object, QEvent *event) override;
void onOkClicked(); void onOkClicked();
void onCancelClicked(); void onCancelClicked();
+3 -4
View File
@@ -202,11 +202,10 @@ bool SearchPopup::eventFilter(QObject *object, QEvent *event)
if (object == this->searchInput_ && event->type() == QEvent::KeyPress) if (object == this->searchInput_ && event->type() == QEvent::KeyPress)
{ {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_Backspace && if (keyEvent == QKeySequence::DeleteStartOfWord &&
keyEvent->modifiers() == Qt::ControlModifier && this->searchInput_->selectionLength() > 0)
this->searchInput_->text() == this->searchInput_->selectedText())
{ {
this->searchInput_->clear(); this->searchInput_->backspace();
return true; return true;
} }
} }