Thread: [fwbuilder-commits] r2302 - in branches/v3_1: . doc src/gui
Brought to you by:
mikehorn
From: <va...@in...> - 2009-12-30 01:05:35
|
Author: vadim Date: 2009-12-29 15:58:17 -0800 (Tue, 29 Dec 2009) New Revision: 2302 Modified: branches/v3_1/build_num branches/v3_1/doc/ChangeLog branches/v3_1/src/gui/ProjectPanel.cpp branches/v3_1/src/gui/ProjectPanel_events.cpp branches/v3_1/src/gui/RuleSetModel.cpp branches/v3_1/src/gui/RuleSetView.cpp branches/v3_1/src/gui/RuleSetView.h Log: * RuleSetView.cpp (RuleSetView::restoreCurrentRowColumn): fixed bug that caused rule set view to scroll all the way to the top every time user modified any object used in the rules. Fixes #968 Modified: branches/v3_1/build_num =================================================================== --- branches/v3_1/build_num 2009-12-29 18:01:56 UTC (rev 2301) +++ branches/v3_1/build_num 2009-12-29 23:58:17 UTC (rev 2302) @@ -1 +1 @@ -#define BUILD_NUM 2300 +#define BUILD_NUM 2301 Modified: branches/v3_1/doc/ChangeLog =================================================================== --- branches/v3_1/doc/ChangeLog 2009-12-29 18:01:56 UTC (rev 2301) +++ branches/v3_1/doc/ChangeLog 2009-12-29 23:58:17 UTC (rev 2302) @@ -1,3 +1,9 @@ +2009-12-29 vadim <va...@vk...> + + * RuleSetView.cpp (RuleSetView::restoreCurrentRowColumn): fixed + bug that caused rule set view to scroll all the way to the top + every time user modified any object used in the rules. Fixes #968 + 2009-12-28 vadim <va...@vk...> Ticket #1040 (Another GUI crash in newClusterDialog) closed by a2k Modified: branches/v3_1/src/gui/ProjectPanel.cpp =================================================================== --- branches/v3_1/src/gui/ProjectPanel.cpp 2009-12-29 18:01:56 UTC (rev 2301) +++ branches/v3_1/src/gui/ProjectPanel.cpp 2009-12-29 23:58:17 UTC (rev 2302) @@ -59,6 +59,7 @@ #include <QApplication> #include <QUndoStack> #include <QUndoGroup> +#include <QScrollBar> #include <iostream> Modified: branches/v3_1/src/gui/ProjectPanel_events.cpp =================================================================== --- branches/v3_1/src/gui/ProjectPanel_events.cpp 2009-12-29 18:01:56 UTC (rev 2301) +++ branches/v3_1/src/gui/ProjectPanel_events.cpp 2009-12-29 23:58:17 UTC (rev 2302) @@ -93,14 +93,15 @@ case RELOAD_RULESET_EVENT: registerRuleSetRedrawRequest(); // update rule set title as well - updateFirewallName(); + //updateFirewallName(); ev->accept(); return true; case RELOAD_RULESET_IMMEDIATELY_EVENT: - reopenFirewall(); + redrawRuleSets(); + //reopenFirewall(); // update rule set title as well - updateFirewallName(); + //updateFirewallName(); ev->accept(); return true; } Modified: branches/v3_1/src/gui/RuleSetModel.cpp =================================================================== --- branches/v3_1/src/gui/RuleSetModel.cpp 2009-12-29 18:01:56 UTC (rev 2301) +++ branches/v3_1/src/gui/RuleSetModel.cpp 2009-12-29 23:58:17 UTC (rev 2302) @@ -342,9 +342,14 @@ QModelIndex RuleSetModel::index(int row, int column, const QModelIndex &parent) const { - //if (fwbdebug) qDebug() << "RuleSetModel::index(int row, int column, const QModelIndex &parent)"; + // if (fwbdebug) + // qDebug() << "RuleSetModel::index(int row, int column, const QModelIndex &parent)" + // << "row=" << row + // << "column=" << column; + if (row < 0 || column < 0) return QModelIndex(); + RuleNode *parentNode = nodeFromIndex(parent); RuleNode *childNode = parentNode->children.value(row); if (!childNode) @@ -355,7 +360,6 @@ QModelIndex RuleSetModel::index(QString groupName) const { - if (!groupName.isEmpty()) { int row = 0; @@ -363,47 +367,43 @@ { if (node->type == RuleNode::Group && node->name == groupName) { - return createIndex(row, 0, node); } row++; } } - return QModelIndex(); } QModelIndex RuleSetModel::index(int row, int column, QString groupName) const { - //if (fwbdebug) qDebug() << " RuleSetModel::index(int row, int column, QString groupName)"; - + // if (fwbdebug) + // qDebug() << " RuleSetModel::index(int row, int column, QString groupName)"; QModelIndex parent = index(groupName); - return (parent.isValid())?index(row, column, parent):QModelIndex(); + return (parent.isValid()) ? index(row, column, parent) : QModelIndex(); } QModelIndex RuleSetModel::index(libfwbuilder::Rule *rule, libfwbuilder::RuleElement *re) const { - //if (fwbdebug) qDebug() << "RuleSetModel::index(libfwbuilder::Rule *rule, int col)"; + // if (fwbdebug) + // qDebug() << "RuleSetModel::index(libfwbuilder::Rule *rule, int col)"; int col = columnForRuleElementType(re->getTypeName().c_str()); return index(rule, col); } QModelIndex RuleSetModel::index(libfwbuilder::Rule *rule, int col) const { - //if (fwbdebug) qDebug() << "RuleSetModel::index(libfwbuilder::Rule *rule, int col) " << col; - + // if (fwbdebug) + // qDebug() << "RuleSetModel::index(libfwbuilder::Rule *rule, int col) " << col; if (col < 0 || rule == 0) return QModelIndex(); QModelIndex parent; QString groupName = QString::fromUtf8(rule->getRuleGroupName().c_str()); - if (!groupName.isEmpty()) { QList<RuleNode *> topLevel = root->children; - int row = 0; foreach (RuleNode * node, topLevel) { - if (node->type == RuleNode::Group && node->name == groupName) { parent = createIndex(row, 0, node); @@ -412,9 +412,7 @@ row++; } } - RuleNode *parentNode = nodeFromIndex(parent); - int row = 0; RuleNode* child = NULL; foreach(RuleNode *node, parentNode->children) @@ -426,15 +424,14 @@ } row++; } - if (child == NULL) return QModelIndex(); - return createIndex(row, col, child); } int RuleSetModel::columnForRuleElementType(QString typeName) const { - //if (fwbdebug) qDebug() << "RuleSetModel::columnForRuleElementType(QString typeName)"; + // if (fwbdebug) + // qDebug() << "RuleSetModel::columnForRuleElementType(QString typeName)"; int col = 1; foreach (ColDesc cd, header) { @@ -442,13 +439,13 @@ break; col++; } - return col; } int RuleSetModel::columnByType(ColDesc::ColumnType type) { - if (fwbdebug) qDebug() << "RuleSetModel::columnByType(ColDesc::ColumnType type)"; + // if (fwbdebug) + // qDebug() << "RuleSetModel::columnByType(ColDesc::ColumnType type)"; int col = 1; foreach (ColDesc cd, header) { @@ -456,7 +453,6 @@ break; col++; } - return col; } Modified: branches/v3_1/src/gui/RuleSetView.cpp =================================================================== --- branches/v3_1/src/gui/RuleSetView.cpp 2009-12-29 18:01:56 UTC (rev 2301) +++ branches/v3_1/src/gui/RuleSetView.cpp 2009-12-29 23:58:17 UTC (rev 2302) @@ -167,7 +167,9 @@ void RuleSetView::selectRE(QModelIndex index) { if (fwbdebug) - qDebug() << "RuleSetView::selectRE(QModelIndex index)"; + qDebug() << "RuleSetView::selectRE(QModelIndex index)" + << index; + if (fwosm->index != index) { fwosm->selectedObject = NULL; @@ -2207,23 +2209,28 @@ void RuleSetView::saveCurrentRowColumn(SelectionMemento &memento) { + RuleSetModel* md = ((RuleSetModel*)model()); QModelIndex index = fwosm->index; - - memento.column = index.column(); - memento.row = index.row(); - RuleNode* node = static_cast<RuleNode *>(index.internalPointer()); - - if (node!=NULL && node->parent !=NULL && !node->parent->isRoot()) + if (index.isValid()) { - memento.groupName = node->parent->name; + memento.column = index.column(); + memento.rule_id = md->nodeFromIndex(index)->rule->getId(); + } else + { + memento.column = -1; + memento.rule_id = -1; } } void RuleSetView::restoreCurrentRowColumn(SelectionMemento &memento) { - RuleSetModel* md = ((RuleSetModel*)model()); - QModelIndex index = md->index(memento.row, memento.column, memento.groupName); - selectRE(index); + if (memento.rule_id != -1) + { + RuleSetModel* md = ((RuleSetModel*)model()); + Rule *rule = Rule::cast(project->db()->findInIndex(memento.rule_id)); + QModelIndex index = md->index(rule, memento.column); + selectRE(index); + } } void RuleSetView::updateCurrentCell() Modified: branches/v3_1/src/gui/RuleSetView.h =================================================================== --- branches/v3_1/src/gui/RuleSetView.h 2009-12-29 18:01:56 UTC (rev 2301) +++ branches/v3_1/src/gui/RuleSetView.h 2009-12-29 23:58:17 UTC (rev 2302) @@ -58,8 +58,8 @@ class SelectionMemento { public: - QString groupName; - int row; + SelectionMemento() { rule_id = -1; column = -1; } + int rule_id; int column; }; |