aboutsummaryrefslogtreecommitdiffhomepage
path: root/qt/ScintillaEditBase/PlatQt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt/ScintillaEditBase/PlatQt.cpp')
-rw-r--r--qt/ScintillaEditBase/PlatQt.cpp35
1 files changed, 21 insertions, 14 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp
index 851571b5e..8f572981c 100644
--- a/qt/ScintillaEditBase/PlatQt.cpp
+++ b/qt/ScintillaEditBase/PlatQt.cpp
@@ -760,10 +760,11 @@ public:
virtual ~ListWidget();
void setDelegate(IListBoxDelegate *lbDelegate);
- void selectionChanged();
+
+ int currentSelection();
protected:
- void mouseReleaseEvent(QMouseEvent * event) override;
+ void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override;
void mouseDoubleClickEvent(QMouseEvent *event) override;
QStyleOptionViewItem viewOptions() const override;
@@ -799,7 +800,7 @@ public:
void SetDelegate(IListBoxDelegate *lbDelegate) override;
void SetList(const char *list, char separator, char typesep) override;
- ListWidget *GetWidget() const;
+ ListWidget *GetWidget() const noexcept;
private:
bool unicodeMode;
int visibleRows;
@@ -943,12 +944,11 @@ void ListBoxImpl::Select(int n)
}
}
list->setCurrentRow(n);
- list->selectionChanged();
}
int ListBoxImpl::GetSelection()
{
ListWidget *list = GetWidget();
- return list->currentRow();
+ return list->currentSelection();
}
int ListBoxImpl::Find(const char *prefix)
{
@@ -1038,7 +1038,7 @@ void ListBoxImpl::SetList(const char *list, char separator, char typesep)
Append(startword, numword?atoi(numword + 1):-1);
}
}
-ListWidget *ListBoxImpl::GetWidget() const
+ListWidget *ListBoxImpl::GetWidget() const noexcept
{
return static_cast<ListWidget *>(wid);
}
@@ -1060,13 +1060,25 @@ void ListWidget::setDelegate(IListBoxDelegate *lbDelegate)
delegate = lbDelegate;
}
-void ListWidget::selectionChanged() {
+void ListWidget::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) {
+ QListWidget::selectionChanged(selected, deselected);
if (delegate) {
- ListBoxEvent event(ListBoxEvent::EventType::selectionChange);
- delegate->ListNotify(&event);
+ const int selection = currentSelection();
+ if (selection >= 0) {
+ ListBoxEvent event(ListBoxEvent::EventType::selectionChange);
+ delegate->ListNotify(&event);
+ }
}
}
+int ListWidget::currentSelection() {
+ const QModelIndexList indices = selectionModel()->selectedRows();
+ foreach (const QModelIndex ind, indices) {
+ return ind.row();
+ }
+ return -1;
+}
+
void ListWidget::mouseDoubleClickEvent(QMouseEvent * /* event */)
{
if (delegate) {
@@ -1075,11 +1087,6 @@ void ListWidget::mouseDoubleClickEvent(QMouseEvent * /* event */)
}
}
-void ListWidget::mouseReleaseEvent(QMouseEvent * /* event */)
-{
- selectionChanged();
-}
-
QStyleOptionViewItem ListWidget::viewOptions() const
{
QStyleOptionViewItem result = QListWidget::viewOptions();