[Uml-devel] branches/work/soc-umbrello/umbrello/widgets
Gopala Krishna A
krishna.ggk at gmail.com
Tue Aug 18 08:26:15 UTC 2009
SVN commit 1012845 by gopala:
WidgetBase::contextMenuEvent, AssociationWidget::contextMenuEvent and
FloatingTextWidget::contextMenuEvent:
* Fix the inability to apply widget attributes through context menu due to the
widget being not selected.
* Also clear the selection if no modifier is used and right clicked on
unselected widget.
M +10 -2 associationwidget.cpp
M +9 -1 floatingtextwidget.cpp
M +8 -0 widgetbase.cpp
--- branches/work/soc-umbrello/umbrello/widgets/associationwidget.cpp #1012844:1012845
@@ -1604,11 +1604,19 @@
menuType = ListPopupMenu::mt_Association_Selected;
}
+ UMLScene *scene = umlScene();
QWidget *parent = 0;
- if (umlScene()) {
- parent = umlScene()->activeView();
+ if (scene) {
+ parent = scene->activeView();
}
+ if (!isSelected() && scene && !scene->selectedItems().isEmpty()) {
+ Qt::KeyboardModifiers forSelection = (Qt::ControlModifier | Qt::ShiftModifier);
+ if ((event->modifiers() & forSelection) == 0) {
+ scene->clearSelection();
+ }
+ }
+ setSelected(true);
QPointer<ListPopupMenu> menu = new ListPopupMenu(parent, menuType, this);
QAction *triggered = menu->exec(event->screenPos());
ListPopupMenu *parentMenu = ListPopupMenu::menuFromAction(triggered);
--- branches/work/soc-umbrello/umbrello/widgets/floatingtextwidget.cpp #1012844:1012845
@@ -530,7 +530,8 @@
{
AssociationWidget *assoc = dynamic_cast<AssociationWidget*>(m_linkWidget);
- UMLView *view = umlScene() ? umlScene()->activeView() : 0;
+ UMLScene *scene = umlScene();
+ UMLView *view = scene ? scene->activeView() : 0;
ListPopupMenu::Menu_Type menuType = ListPopupMenu::mt_Undefined;
if (assoc) {
@@ -541,6 +542,13 @@
}
}
+ if (!isSelected() && scene && !scene->selectedItems().isEmpty()) {
+ Qt::KeyboardModifiers forSelection = (Qt::ControlModifier | Qt::ShiftModifier);
+ if ((event->modifiers() & forSelection) == 0) {
+ scene->clearSelection();
+ }
+ }
+ setSelected(true);
if (menuType != ListPopupMenu::mt_Undefined) {
QPointer<ListPopupMenu> menu = new ListPopupMenu(view, menuType);
QAction *triggered = menu->exec(event->screenPos());
--- branches/work/soc-umbrello/umbrello/widgets/widgetbase.cpp #1012844:1012845
@@ -854,6 +854,14 @@
{
event->accept();
+ UMLScene *scene = umlScene();
+ if (!isSelected() && scene && !scene->selectedItems().isEmpty()) {
+ Qt::KeyboardModifiers forSelection = (Qt::ControlModifier | Qt::ShiftModifier);
+ if ((event->modifiers() & forSelection) == 0) {
+ scene->clearSelection();
+ }
+ }
+ setSelected(true);
QPointer<ListPopupMenu> menu = new ListPopupMenu(0, this, false, false);
QAction *triggered = menu->exec(event->screenPos());
ListPopupMenu *parentMenu = ListPopupMenu::menuFromAction(triggered);
More information about the umbrello-devel
mailing list