From b7ff37e53d8af0bb6052d0d15b75eb59be204bf7 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 25 Apr 2014 11:45:39 +0200 Subject: [PATCH] + Update check states in fillet dialog --- src/Mod/Part/Gui/DlgFilletEdges.cpp | 12 ++++++++++-- src/Mod/Part/Gui/DlgFilletEdges.h | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Mod/Part/Gui/DlgFilletEdges.cpp b/src/Mod/Part/Gui/DlgFilletEdges.cpp index 25904c459..99ea9a996 100644 --- a/src/Mod/Part/Gui/DlgFilletEdges.cpp +++ b/src/Mod/Part/Gui/DlgFilletEdges.cpp @@ -126,6 +126,12 @@ FilletRadiusModel::FilletRadiusModel(QObject * parent) : QStandardItemModel(pare { } +void FilletRadiusModel::updateCheckStates() +{ + // See http://www.qtcentre.org/threads/18856-Checkboxes-in-Treeview-do-not-get-refreshed?s=b0fea2bfc66da1098413ae9f2a651a68&p=93201#post93201 + /*emit*/ layoutChanged(); +} + Qt::ItemFlags FilletRadiusModel::flags (const QModelIndex & index) const { Qt::ItemFlags fl = QStandardItemModel::flags(index); @@ -682,7 +688,7 @@ void DlgFilletEdges::on_selectFaces_toggled(bool on) void DlgFilletEdges::on_selectAllButton_clicked() { std::vector subElements; - QAbstractItemModel* model = ui->treeView->model(); + FilletRadiusModel* model = static_cast(ui->treeView->model()); bool block = model->blockSignals(true); // do not call toggleCheckState for (int i=0; irowCount(); ++i) { QModelIndex index = model->index(i,0); @@ -702,6 +708,7 @@ void DlgFilletEdges::on_selectAllButton_clicked() model->setData(index, value, Qt::CheckStateRole); } model->blockSignals(block); + model->updateCheckStates(); App::Document* doc = d->object->getDocument(); Gui::Selection().addSelection(doc->getName(), @@ -711,7 +718,7 @@ void DlgFilletEdges::on_selectAllButton_clicked() void DlgFilletEdges::on_selectNoneButton_clicked() { - QAbstractItemModel* model = ui->treeView->model(); + FilletRadiusModel* model = static_cast(ui->treeView->model()); bool block = model->blockSignals(true); // do not call toggleCheckState for (int i=0; irowCount(); ++i) { Qt::CheckState checkState = Qt::Unchecked; @@ -719,6 +726,7 @@ void DlgFilletEdges::on_selectNoneButton_clicked() model->setData(model->index(i,0), value, Qt::CheckStateRole); } model->blockSignals(block); + model->updateCheckStates(); App::Document* doc = d->object->getDocument(); Gui::Selection().clearSelection(doc->getName()); diff --git a/src/Mod/Part/Gui/DlgFilletEdges.h b/src/Mod/Part/Gui/DlgFilletEdges.h index ac376dcd6..c00f21dcd 100644 --- a/src/Mod/Part/Gui/DlgFilletEdges.h +++ b/src/Mod/Part/Gui/DlgFilletEdges.h @@ -66,6 +66,8 @@ public: Qt::ItemFlags flags (const QModelIndex & index) const; bool setData (const QModelIndex & index, const QVariant & value, int role = Qt::EditRole); + void updateCheckStates(); + Q_SIGNALS: void toggleCheckState(const QModelIndex&); };