diff --git a/src/lib/QtCore/QVariant.ts b/src/lib/QtCore/QVariant.ts index 6b0962d80..7493bb1e8 100644 --- a/src/lib/QtCore/QVariant.ts +++ b/src/lib/QtCore/QVariant.ts @@ -36,3 +36,14 @@ export class QVariant extends Component { return this.native.toStringList(); } } + +/** + * Get the correct native object which should be passed down to the + * C++ wrapper from a QVariantType object. + */ +export function nativeObjectFromVariantType(obj: QVariantType): any { + if (obj instanceof QRect) { + return obj.native; + } + return obj; +} diff --git a/src/lib/QtGui/QEvent/QInputMethodQueryEvent.ts b/src/lib/QtGui/QEvent/QInputMethodQueryEvent.ts index 5907792dd..d294c15bc 100644 --- a/src/lib/QtGui/QEvent/QInputMethodQueryEvent.ts +++ b/src/lib/QtGui/QEvent/QInputMethodQueryEvent.ts @@ -1,9 +1,14 @@ import addon from '../../utils/addon'; import { NativeRawPointer } from '../../core/Component'; -import { QVariant, QVariantType } from '../../QtCore/QVariant'; +import { QVariant, QVariantType, nativeObjectFromVariantType } from '../../QtCore/QVariant'; import { QEvent } from './QEvent'; -import { QRect } from '../../QtCore/QRect'; +/** + * Note: Qt performs some default processing for `QInputMethodQueryEvents`. + * When attaching an event listener via `addEventListener()` use the + * options object to specify that you want to run after the default + * processing, otherwise your `setValue()` calls will be overwritten. + */ export class QInputMethodQueryEvent extends QEvent { constructor(event: NativeRawPointer<'QEvent'>) { super(new addon.QInputMethodQueryEvent(event)); @@ -14,11 +19,7 @@ export class QInputMethodQueryEvent extends QEvent { } setValue(query: number /* InputMethodQuery */, value: QVariantType): void { - if (value instanceof QRect) { - this.native.setValue(query, value.native); - } else { - this.native.setValue(query, value); - } + this.native.setValue(query, nativeObjectFromVariantType(value)); } value(query: number /* InputMethodQuery */): QVariant {