SVN commit 1174999 by staniek: Forms *Widgets Tree: **select tab widget instead when clicking tab items **tab icon added for tab items M +28 -5 formeditor/WidgetTreeWidget.cpp M +3 -1 formeditor/WidgetTreeWidget.h AM pics/hi16-action-tabwidget-tab.png AM pics/hi22-action-tabwidget-tab.png --- trunk/koffice/kexi/formeditor/WidgetTreeWidget.cpp #1174998:1174999 @@ -82,7 +82,7 @@ m_customSortingKey = QString("tab%1").arg(tabIndex); itemFlags |= Qt::ItemIsSelectable; itemFlags ^= Qt::ItemIsSelectable; - //TODO itemIcon = ... + itemIcon = "tabwidget-tab"; } } } @@ -345,6 +345,17 @@ blockSignals(false); } +void WidgetTreeWidget::selectWidgetForItem(QTreeWidgetItem *item) +{ + WidgetTreeWidgetItem *it = dynamic_cast(item); + if (!it) + return; + QWidget *w = it->data()->widget(); + if (w && !m_form->selectedWidgets()->contains(w)) { + m_form->selectWidget(w, Form::AddToPreviousSelection | Form::DontRaise | Form::LastSelection); + } +} + void WidgetTreeWidget::slotSelectionChanged() { if (!m_form || !m_slotSelectionChanged_enabled) @@ -353,12 +364,24 @@ const QList list( selectedItems() ); m_form->selectFormWidget(); foreach(QTreeWidgetItem *item, list) { - WidgetTreeWidgetItem *it = static_cast(item); - QWidget *w = it->data()->widget(); - if (w && !m_form->selectedWidgets()->contains(w)) { - m_form->selectWidget(w, Form::AddToPreviousSelection | Form::DontRaise | Form::LastSelection); + selectWidgetForItem(item); } + // alter selection of the item is nonselectable item clicked and parent item is available + if ( currentItem() + && !(currentItem()->flags() & Qt::ItemIsSelectable) + && currentItem()->parent() + && (currentItem()->parent()->flags() & Qt::ItemIsSelectable) + ) + { + m_slotSelectionChanged_enabled = false; + foreach (QTreeWidgetItem *selectedItem, selectedItems()) { + selectedItem->setSelected(false); } + selectWidgetForItem(currentItem()->parent()); + setCurrentItem(currentItem()->parent()); + currentItem()->setSelected(true); + m_slotSelectionChanged_enabled = true; + } if (hadFocus) setFocus(); //restore focus } --- trunk/koffice/kexi/formeditor/WidgetTreeWidget.h #1174998:1174999 @@ -152,9 +152,11 @@ virtual void contextMenuEvent(QContextMenuEvent* e); -private: void handleContextMenuEvent(QContextMenuEvent* e); + void selectWidgetForItem(QTreeWidgetItem *item); + +private: Form *m_form; //2.0 WidgetTreeWidgetItem *m_topItem; Options m_options;