Skip to content

Commit

Permalink
Fixes to ctrl+backspace behavior (#5013)
Browse files Browse the repository at this point in the history
  • Loading branch information
gremble0 authored Dec 16, 2023
1 parent 918b8ca commit b78b57b
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
16 changes: 16 additions & 0 deletions src/widgets/dialogs/EmotePopup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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)
{
Expand Down
1 change: 1 addition & 0 deletions src/widgets/dialogs/EmotePopup.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class EmotePopup : public BasePopup
const QString &searchText);
void filterEmotes(const QString &text);
void addShortcuts() override;
bool eventFilter(QObject *object, QEvent *event) override;
};

} // namespace chatterino
6 changes: 6 additions & 0 deletions src/widgets/dialogs/SelectChannelDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
16 changes: 16 additions & 0 deletions src/widgets/dialogs/SettingsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions src/widgets/dialogs/SettingsDialog.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class SettingsDialog : public BaseWindow
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();
Expand Down
7 changes: 3 additions & 4 deletions src/widgets/helper/SearchPopup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Expand Down

0 comments on commit b78b57b

Please sign in to comment.