[fwbuilder-commits] r2452 - in branches/v4_0: . doc src/gui
Brought to you by:
mikehorn
From: <va...@in...> - 2010-01-28 21:17:16
|
Author: vadim Date: 2010-01-28 13:17:06 -0800 (Thu, 28 Jan 2010) New Revision: 2452 Modified: branches/v4_0/build_num branches/v4_0/doc/ChangeLog branches/v4_0/src/gui/ObjectManipulator.cpp branches/v4_0/src/gui/ObjectManipulator.h branches/v4_0/src/gui/ProjectPanel.cpp branches/v4_0/src/gui/RuleSetView.cpp Log: * ../src/gui/ProjectPanel.cpp (ProjectPanel::isManipulatorSelected): fixes #1130 "Ctrl-C , Ctrl-V shortcuts do not work for selected objects in rule elements". Global keyboard shortcuts Ctrl-C, Ctrl-V, Ctrl-X should work on objects in rule elements when keyboard focus belongs to the rule set view or on objects in the tree when focus is on the tree. This also fixes #1138 "ctrl+x and edit->cut problems in both Policy and NAT". These keyboard shortcuts operate only on objects in the tree and rule elements but not on rules. Visual difference between the state when whole rule is selected and the state when an object is selected in one of the rule elements is insufficient so making Ctrl-X cut whole rule may appear unextected for the user. Modified: branches/v4_0/build_num =================================================================== --- branches/v4_0/build_num 2010-01-27 23:55:19 UTC (rev 2451) +++ branches/v4_0/build_num 2010-01-28 21:17:06 UTC (rev 2452) @@ -1 +1 @@ -#define BUILD_NUM 2449 +#define BUILD_NUM 2451 Modified: branches/v4_0/doc/ChangeLog =================================================================== --- branches/v4_0/doc/ChangeLog 2010-01-27 23:55:19 UTC (rev 2451) +++ branches/v4_0/doc/ChangeLog 2010-01-28 21:17:06 UTC (rev 2452) @@ -1,3 +1,18 @@ +2010-01-28 vadim <va...@vk...> + + * ../src/gui/ProjectPanel.cpp (ProjectPanel::isManipulatorSelected): + fixes #1130 "Ctrl-C , Ctrl-V shortcuts do not work for selected + objects in rule elements". Global keyboard shortcuts Ctrl-C, + Ctrl-V, Ctrl-X should work on objects in rule elements when + keyboard focus belongs to the rule set view or on objects in the + tree when focus is on the tree. This also fixes #1138 "ctrl+x and + edit->cut problems in both Policy and NAT". These keyboard + shortcuts operate only on objects in the tree and rule elements + but not on rules. Visual difference between the state when whole + rule is selected and the state when an object is selected in one + of the rule elements is insufficient so making Ctrl-X cut whole + rule may appear unextected for the user. + 2010-01-26 vadim <va...@vk...> * RuleSetView.cpp (RuleSetView::showContextMenu): fixes #1155 Modified: branches/v4_0/src/gui/ObjectManipulator.cpp =================================================================== --- branches/v4_0/src/gui/ObjectManipulator.cpp 2010-01-27 23:55:19 UTC (rev 2451) +++ branches/v4_0/src/gui/ObjectManipulator.cpp 2010-01-28 21:17:06 UTC (rev 2452) @@ -1345,11 +1345,6 @@ active=false; } -bool ObjectManipulator::isSelected() -{ - return active; -} - list<Cluster*> ObjectManipulator::findClustersUsingFirewall(FWObject *fw) { list<Cluster*> res; Modified: branches/v4_0/src/gui/ObjectManipulator.h =================================================================== --- branches/v4_0/src/gui/ObjectManipulator.h 2010-01-27 23:55:19 UTC (rev 2451) +++ branches/v4_0/src/gui/ObjectManipulator.h 2010-01-28 21:17:06 UTC (rev 2452) @@ -352,11 +352,6 @@ void unselect(); /** - * returns true if anything is selected in the tree - */ - bool isSelected(); - - /** * controls whether "Deleted Objects" library is shown */ void showDeletedObjects(bool f); Modified: branches/v4_0/src/gui/ProjectPanel.cpp =================================================================== --- branches/v4_0/src/gui/ProjectPanel.cpp 2010-01-27 23:55:19 UTC (rev 2451) +++ branches/v4_0/src/gui/ProjectPanel.cpp 2010-01-28 21:17:06 UTC (rev 2452) @@ -405,6 +405,10 @@ void ProjectPanel::editCopy() { + if (fwbdebug) + qDebug() << "ProjectPanel::editCopy() isManipulatorSelected()=" + << isManipulatorSelected(); + if (isManipulatorSelected()) copyObj(); else if (m_panel->ruleSets->count()!=0) @@ -413,6 +417,10 @@ void ProjectPanel::editCut() { + if (fwbdebug) + qDebug() << "ProjectPanel::editCut() isManipulatorSelected()=" + << isManipulatorSelected(); + if (isManipulatorSelected()) cutObj(); else if (m_panel->ruleSets->count()!=0) @@ -421,6 +429,10 @@ void ProjectPanel::editDelete() { + if (fwbdebug) + qDebug() << "ProjectPanel::editDelete() isManipulatorSelected()=" + << isManipulatorSelected(); + if (isManipulatorSelected()) deleteObj(); //else // if (ruleSets->count()!=0) @@ -429,6 +441,10 @@ void ProjectPanel::editPaste() { + if (fwbdebug) + qDebug() << "ProjectPanel::editPaste() isManipulatorSelected()=" + << isManipulatorSelected(); + if (isManipulatorSelected()) pasteObj(); else if (m_panel->ruleSets->count()!=0) @@ -552,7 +568,7 @@ bool ProjectPanel::isManipulatorSelected() { - return m_panel->om->isSelected(); + m_panel->om->getCurrentObjectTree()->hasFocus(); } void ProjectPanel::cutObj() Modified: branches/v4_0/src/gui/RuleSetView.cpp =================================================================== --- branches/v4_0/src/gui/RuleSetView.cpp 2010-01-27 23:55:19 UTC (rev 2451) +++ branches/v4_0/src/gui/RuleSetView.cpp 2010-01-28 21:17:06 UTC (rev 2452) @@ -1954,9 +1954,14 @@ if (Rule::cast(co)!=NULL) pasteRuleAbove(); else { + // object in the clipboard is not a rule QModelIndex index = currentIndex(); if (index.isValid()) + { + RuleNode *node = md->nodeFromIndex(index); + if (node->type != RuleNode::Rule) return; copyAndInsertObject(index, co); + } } } } @@ -2147,6 +2152,8 @@ */ void RuleSetView::copyAndInsertObject(QModelIndex &index, FWObject *object) { + if (!validateForInsertion(index, object)) return; + RuleSetModel* md = ((RuleSetModel*)model()); bool need_to_reload_tree = false; if (md->getRuleSet()->getRoot()!=object->getRoot()) |