1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:37:45 +00:00

LibGUI: Make a macro for registering a GUI::Margins object property

This will allow anyone to register a margins property without having
to duplicate the parsing logic.
This commit is contained in:
Andreas Kling 2021-06-15 14:27:24 +02:00
parent f20c5e1872
commit 46a7e1b372
2 changed files with 22 additions and 20 deletions

View file

@ -46,4 +46,25 @@ private:
int m_right { 0 };
int m_bottom { 0 };
};
}
#define REGISTER_MARGINS_PROPERTY(property_name, getter, setter) \
register_property( \
property_name, [this]() { \
auto m = getter(); \
JsonObject margins_object; \
margins_object.set("left", m.left()); \
margins_object.set("right", m.right()); \
margins_object.set("top", m.top()); \
margins_object.set("bottom", m.bottom()); \
return margins_object; }, \
[this](auto& value) { \
if (!value.is_array() || value.as_array().size() != 4) \
return false; \
int m[4]; \
for (size_t i = 0; i < 4; ++i) \
m[i] = value.as_array().at(i).to_i32(); \
setter({ m[0], m[1], m[2], m[3] }); \
return true; \
});