@@ -25,6 +25,7 @@ DynamicWidgetContainer::DynamicWidgetContainer(Gfx::Orientation orientation)
25
25
VERIFY (orientation == Gfx::Orientation::Vertical);
26
26
REGISTER_STRING_PROPERTY (" section_label" , section_label, set_section_label);
27
27
REGISTER_STRING_PROPERTY (" config_domain" , config_domain, set_config_domain);
28
+ REGISTER_STRING_PROPERTY (" config_key" , config_key, set_config_key);
28
29
REGISTER_SIZE_PROPERTY (" detached_size" , detached_size, set_detached_size);
29
30
REGISTER_BOOL_PROPERTY (" with_individual_order" , is_container_with_individual_order, set_container_with_individual_order);
30
31
REGISTER_BOOL_PROPERTY (" show_controls" , show_controls, set_show_controls);
@@ -123,7 +124,7 @@ void DynamicWidgetContainer::set_view_state(ViewState state)
123
124
(void )detach_widgets ();
124
125
125
126
if (persist_state ())
126
- Config::write_i32 (config_domain (), " DynamicWidgetContainers" sv, section_label (), to_underlying (state));
127
+ Config::write_i32 (config_domain (), " DynamicWidgetContainers" sv, config_key (), to_underlying (state));
127
128
}
128
129
129
130
void DynamicWidgetContainer::restore_view_state ()
@@ -133,9 +134,9 @@ void DynamicWidgetContainer::restore_view_state()
133
134
134
135
deferred_invoke ([&]() {
135
136
if (is_container_with_individual_order ()) {
136
- auto order_or_error = JsonValue::from_string (Config::read_string (config_domain (), " DynamicWidgetContainers" sv, section_label ()));
137
+ auto order_or_error = JsonValue::from_string (Config::read_string (config_domain (), " DynamicWidgetContainers" sv, config_key ()));
137
138
if (order_or_error.is_error () || !order_or_error.value ().is_array ()) {
138
- Config::remove_key (config_domain (), " DynamicWidgetContainers" sv, section_label ());
139
+ Config::remove_key (config_domain (), " DynamicWidgetContainers" sv, config_key ());
139
140
return ;
140
141
}
141
142
@@ -166,7 +167,7 @@ void DynamicWidgetContainer::restore_view_state()
166
167
for (auto const & child : new_child_order)
167
168
add_child (*child);
168
169
} else {
169
- int persisted_state = Config::read_i32 (config_domain (), " DynamicWidgetContainers" sv, section_label (), to_underlying (ViewState::Expanded));
170
+ int persisted_state = Config::read_i32 (config_domain (), " DynamicWidgetContainers" sv, config_key (), to_underlying (ViewState::Expanded));
170
171
set_view_state (static_cast <ViewState>(persisted_state));
171
172
}
172
173
update ();
@@ -187,6 +188,14 @@ void DynamicWidgetContainer::set_config_domain(String domain)
187
188
restore_view_state ();
188
189
}
189
190
191
+ void DynamicWidgetContainer::set_config_key (String key)
192
+ {
193
+ m_config_key = move (key);
194
+ // FIXME: A much better solution would be to call the restore_view_state within a dedicated "initialization finished" method that is called by the gml runtime after that widget is ready.
195
+ // We do not have such a method yet.
196
+ restore_view_state ();
197
+ }
198
+
190
199
void DynamicWidgetContainer::set_detached_size (Gfx::IntSize const size)
191
200
{
192
201
m_detached_size = { size };
@@ -446,7 +455,7 @@ void DynamicWidgetContainer::swap_widget_positions(NonnullRefPtr<Core::EventRece
446
455
for (auto & child : child_containers ())
447
456
new_widget_order.must_append (child.section_label ());
448
457
449
- Config::write_string (config_domain (), " DynamicWidgetContainers" sv, section_label (), new_widget_order.serialized <StringBuilder>());
458
+ Config::write_string (config_domain (), " DynamicWidgetContainers" sv, config_key (), new_widget_order.serialized <StringBuilder>());
450
459
}
451
460
452
461
void DynamicWidgetContainer::update_control_button_visibility ()
0 commit comments