Files
obs-studio/UI/item-widget-helpers.cpp
gxalpha 3e4bbe85c8 UI: Remove workaround for current scene being deselectable on Qt 6.4.3+
Qt 6.2 introduced an issue where SingleSelection item views would
deselect the current item if the user clicked on empty area in the
widget.
This was very confusing in the scene tree as it was now possible to
unselect the current scene. A workaround for this in OBS was added in
08e4ee6 and expanded on in dc30cf0, but being quite hacky it never was
the perfect solution.
I since dug into Qt and fixed the issue upstream in qt/qtbase@f11e5435c7
for Qt 6.4.3 and newer, so we can remove the workaround when using those
versions (with the long term goal of removing the code altogether).
2023-02-11 16:01:27 -08:00

56 lines
1.7 KiB
C++

/******************************************************************************
Copyright (C) 2015 by Hugh Bailey <obs.jim@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
#include <QListWidget>
QListWidgetItem *TakeListItem(QListWidget *widget, int row)
{
QListWidgetItem *item = widget->item(row);
if (item)
delete widget->itemWidget(item);
return widget->takeItem(row);
}
void DeleteListItem(QListWidget *widget, QListWidgetItem *item)
{
if (item) {
delete widget->itemWidget(item);
delete item;
}
}
void ClearListItems(QListWidget *widget)
{
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 3)
// Workaround for the SceneTree workaround for QTBUG-105870
widget->setProperty("clearing", true);
#endif
widget->setCurrentItem(nullptr, QItemSelectionModel::Clear);
for (int i = 0; i < widget->count(); i++)
delete widget->itemWidget(widget->item(i));
widget->clear();
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 3)
// Workaround for the SceneTree workaround for QTBUG-105870
widget->setProperty("clearing", false);
#endif
}