macOS: Allow overriding NSKeyValueObservingOptions for QMacKeyValueObserver

Change-Id: I6dc0f7c542ccfb768c1cd8688168c415e2c8a087
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Tor Arne Vestbø 2019-07-18 15:19:25 +02:00
parent de775f2e62
commit 92563a2453
2 changed files with 9 additions and 6 deletions

View File

@ -514,10 +514,9 @@ Q_CONSTRUCTOR_FUNCTION(qt_apple_check_os_version);
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void QMacKeyValueObserver::addObserver() void QMacKeyValueObserver::addObserver(NSKeyValueObservingOptions options)
{ {
[object addObserver:observer forKeyPath:keyPath [object addObserver:observer forKeyPath:keyPath options:options context:callback.get()];
options:NSKeyValueObservingOptionNew context:callback.get()];
} }
void QMacKeyValueObserver::removeObserver() { void QMacKeyValueObserver::removeObserver() {

View File

@ -350,8 +350,12 @@ public:
QMacKeyValueObserver() {} QMacKeyValueObserver() {}
// Note: QMacKeyValueObserver must not outlive the object observed! // Note: QMacKeyValueObserver must not outlive the object observed!
QMacKeyValueObserver(id object, NSString *keyPath, Callback callback) QMacKeyValueObserver(id object, NSString *keyPath, Callback callback,
: object(object), keyPath(keyPath), callback(new Callback(callback)) { addObserver(); } NSKeyValueObservingOptions options = NSKeyValueObservingOptionNew)
: object(object), keyPath(keyPath), callback(new Callback(callback))
{
addObserver(options);
}
QMacKeyValueObserver(const QMacKeyValueObserver &other) QMacKeyValueObserver(const QMacKeyValueObserver &other)
: QMacKeyValueObserver(other.object, other.keyPath, *other.callback.get()) {} : QMacKeyValueObserver(other.object, other.keyPath, *other.callback.get()) {}
@ -381,7 +385,7 @@ private:
std::swap(first.callback, second.callback); std::swap(first.callback, second.callback);
} }
void addObserver(); void addObserver(NSKeyValueObservingOptions options);
id object = nil; id object = nil;
NSString *keyPath = nullptr; NSString *keyPath = nullptr;