20 firstWidgetInTabOrder = NULL;
21 lastWidgetInTabOrder = NULL;
32 if (json_object_object_get_ex(details,
"isDark", &o))
33 isDark = json_object_get_boolean(o);
35 bool showArrow =
true;
36 if (json_object_object_get_ex(details,
"showArrow", &o))
37 showArrow = json_object_get_boolean(o);
40 dialogPointer = &dialog;
46 if( dialog.layout() == 0 )
48 QPoint topLeftMargin = QPoint(margin.left(),margin.top());
49 foreach (QObject *widget, dialog.children())
50 static_cast<QWidget *
>(widget)->move(
static_cast<QWidget *
>(widget)->pos() + topLeftMargin);
58 int availableSpaceLeftBoundary = QApplication::desktop()->availableGeometry(&dialog).left();
59 QPoint dialogTopLeft = portLeftCenter - QPoint(dialog.width() - (showArrow ? 0 : margin.right()), dialog.height()/2.);
60 bool screenSpaceLimitsPos = (availableSpaceLeftBoundary > dialogTopLeft.x());
61 if (screenSpaceLimitsPos)
63 dialogTopLeft = (screenSpaceLimitsPos? QPoint(availableSpaceLeftBoundary, dialogTopLeft.y()) :
68 dialog.move(dialogTopLeft);
76 return (dialog.result() == QDialog::Accepted ?
getAcceptedValue() : originalValue);
94 if (firstWidgetInTabOrder)
95 firstWidgetInTabOrder->removeEventFilter(
this);
98 widget->installEventFilter(
this);
100 firstWidgetInTabOrder = widget;
110 if (lastWidgetInTabOrder)
111 lastWidgetInTabOrder->removeEventFilter(
this);
114 widget->installEventFilter(
this);
116 lastWidgetInTabOrder = widget;
128 if (event->type() == QEvent::KeyPress)
130 QKeyEvent *keyEvent = (QKeyEvent *)(event);
131 bool tabPressed = (keyEvent->key() == Qt::Key_Tab);
132 bool shiftTabPressed = (keyEvent->key() == Qt::Key_Backtab);
134 bool aboutToCompleteReverseTabCycle = ((
object == firstWidgetInTabOrder) && shiftTabPressed);
135 bool aboutToCompleteTabCycle = ((
object == lastWidgetInTabOrder) && tabPressed);
137 if (aboutToCompleteReverseTabCycle || aboutToCompleteTabCycle)
139 QKeyEvent modifiedKeyEvent(event->type(), Qt::Key_Return, 0);
140 QApplication::sendEvent(
object, &modifiedKeyEvent);
142 if (aboutToCompleteReverseTabCycle)
158 return VuoInputEditor::eventFilter(
object, event);