Selaa lähdekoodia

LibCore: Support write-only Object properties

Some properties are set and then never retrieved, e.g. GUI icon paths.
Add a helper to create such properties, similar to the read-only helper.
Timothy Flynn 2 vuotta sitten
vanhempi
commit
746364d7c1
2 muutettua tiedostoa jossa 15 lisäystä ja 1 poistoa
  1. 9 0
      Userland/Libraries/LibCore/Object.h
  2. 6 1
      Userland/Libraries/LibCore/Property.h

+ 9 - 0
Userland/Libraries/LibCore/Object.h

@@ -311,6 +311,15 @@ requires IsBaseOf<Object, T>
         [this] { return this->getter(); },                       \
         {});
 
+#define REGISTER_WRITE_ONLY_STRING_PROPERTY(property_name, setter) \
+    register_property(                                             \
+        property_name,                                             \
+        {},                                                        \
+        [this](auto& value) {                                      \
+            this->setter(value.to_deprecated_string());            \
+            return true;                                           \
+        });
+
 #define REGISTER_READONLY_SIZE_PROPERTY(property_name, getter) \
     register_property(                                         \
         property_name,                                         \

+ 6 - 1
Userland/Libraries/LibCore/Property.h

@@ -26,7 +26,12 @@ public:
         return m_setter(value);
     }
 
-    JsonValue get() const { return m_getter(); }
+    JsonValue get() const
+    {
+        if (!m_getter)
+            return {};
+        return m_getter();
+    }
 
     DeprecatedString const& name() const { return m_name; }
     bool is_readonly() const { return !m_setter; }