void TabOrderEditor::mousePressEvent(QMouseEvent *e) { e->accept(); if (!m_indicator_region.contains(e->pos())) { if (QWidget *child = m_bg_widget->childAt(e->pos())) { QDesignerFormEditorInterface *core = m_form_window->core(); if (core->widgetFactory()->isPassiveInteractor(child)) { QMouseEvent event(QEvent::MouseButtonPress, child->mapFromGlobal(e->globalPos()), e->button(), e->buttons(), e->modifiers()); qApp->sendEvent(child, &event); QMouseEvent event2(QEvent::MouseButtonRelease, child->mapFromGlobal(e->globalPos()), e->button(), e->buttons(), e->modifiers()); qApp->sendEvent(child, &event2); updateBackground(); } } return; } if (e->button() != Qt::LeftButton) return; const int target_index = widgetIndexAt(e->pos()); if (target_index == -1) return; m_beginning = false; if (e->modifiers() & Qt::ControlModifier) { m_current_index = target_index + 1; if (m_current_index >= m_tab_order_list.size()) m_current_index = 0; update(); return; } if (m_current_index == -1) return; m_tab_order_list.swap(target_index, m_current_index); ++m_current_index; if (m_current_index == m_tab_order_list.size()) m_current_index = 0; TabOrderCommand *cmd = new TabOrderCommand(formWindow()); cmd->init(m_tab_order_list); formWindow()->commandHistory()->push(cmd); }
void TabOrderEditor::showTabOrderDialog() { if (m_tab_order_list.size() < 2) return; OrderDialog dlg(this); dlg.setWindowTitle(tr("Tab Order List")); dlg.setDescription(tr("Tab Order")); dlg.setFormat(OrderDialog::TabOrderFormat); dlg.setPageList(m_tab_order_list); if (dlg.exec() == QDialog::Rejected) return; const QWidgetList newOrder = dlg.pageList(); if (newOrder == m_tab_order_list) return; m_tab_order_list = newOrder; TabOrderCommand *cmd = new TabOrderCommand(formWindow()); cmd->init(m_tab_order_list); formWindow()->commandHistory()->push(cmd); update(); }