void TabOrderEditor::initTabOrder() { m_tab_order_list.clear(); QDesignerFormEditorInterface *core = formWindow()->core(); if (const QDesignerMetaDataBaseItemInterface *item = core->metaDataBase()->item(formWindow())) { m_tab_order_list = item->tabOrder(); } // Remove any widgets that have been removed form the form for (int i = 0; i < m_tab_order_list.size(); ) { QWidget *w = m_tab_order_list.at(i); if (!formWindow()->mainContainer()->isAncestorOf(w) || skipWidget(w)) m_tab_order_list.removeAt(i); else ++i; } // Append any widgets that are in the form but are not in the tab order QList<QWidget *> childQueue; childQueue.append(formWindow()->mainContainer()); while (!childQueue.isEmpty()) { QWidget *child = childQueue.takeFirst(); childQueue += qvariant_cast<QWidgetList>(child->property("_q_widgetOrder")); if (skipWidget(child)) continue; if (!m_tab_order_list.contains(child)) m_tab_order_list.append(child); } // Just in case we missed some widgets QDesignerFormWindowCursorInterface *cursor = formWindow()->cursor(); for (int i = 0; i < cursor->widgetCount(); ++i) { QWidget *widget = cursor->widget(i); if (skipWidget(widget)) continue; if (!m_tab_order_list.contains(widget)) m_tab_order_list.append(widget); } m_indicator_region = QRegion(); for (int i = 0; i < m_tab_order_list.size(); ++i) { if (m_tab_order_list.at(i)->isVisible()) m_indicator_region |= indicatorRect(i); } if (m_current_index >= m_tab_order_list.size()) m_current_index = m_tab_order_list.size() - 1; if (m_current_index < 0) m_current_index = 0; }
void TabOrderEditor::initTabOrder() { m_tab_order_list.clear(); QDesignerFormEditorInterface *core = formWindow()->core(); if (const QDesignerMetaDataBaseItemInterface *item = core->metaDataBase()->item(formWindow())) { m_tab_order_list = item->tabOrder(); } // Remove any widgets that have been removed form the form for (int i = 0; i < m_tab_order_list.size(); ) { QWidget *w = m_tab_order_list.at(i); if (!formWindow()->mainContainer()->isAncestorOf(w) || skipWidget(w)) m_tab_order_list.removeAt(i); else ++i; } // Append any widgets that are in the form but are not in the tab order QDesignerFormWindowCursorInterface *cursor = formWindow()->cursor(); for (int i = 0; i < cursor->widgetCount(); ++i) { QWidget *widget = cursor->widget(i); if (skipWidget(widget)) continue; if (!m_tab_order_list.contains(widget)) m_tab_order_list.append(widget); } m_indicator_region = QRegion(); for (int i = 0; i < m_tab_order_list.size(); ++i) { if (m_tab_order_list.at(i)->isVisible()) m_indicator_region |= indicatorRect(i); } if (m_current_index >= m_tab_order_list.size()) m_current_index = m_tab_order_list.size() - 1; if (m_current_index < 0) m_current_index = 0; }