state: Become the source of layout choice
A redesign of popover was needed: it can no longer query the application state directly due to current state being its own actor, so instead the popover gets a dedicated copy of the relevant state. I'm not entirely happy with the extra complexity of having an extra actor just for 1 string, but at least the duplication between C and Rust and mutual calls have been reduced.
This commit is contained in:
@ -56,8 +56,6 @@ struct squeekboard {
|
||||
/// Gsettings hook for visibility. TODO: this does not belong in gsettings.
|
||||
ServerContextService *settings_handler;
|
||||
struct panel_manager panel_manager; // Controls the shape of the panel.
|
||||
/// Currently wanted layout. TODO: merge into state::Application
|
||||
struct squeek_layout_state layout_choice;
|
||||
};
|
||||
|
||||
|
||||
@ -400,7 +398,7 @@ main (int argc, char **argv)
|
||||
// Also initializes wayland
|
||||
struct rsobjects rsobjects = squeek_init();
|
||||
|
||||
instance.settings_context = eekboard_context_service_new(rsobjects.state_manager, &instance.layout_choice);
|
||||
instance.settings_context = eekboard_context_service_new(rsobjects.state_manager);
|
||||
|
||||
// set up dbus
|
||||
|
||||
@ -450,10 +448,10 @@ main (int argc, char **argv)
|
||||
|
||||
instance.panel_manager = panel_manager_new(instance.settings_context,
|
||||
rsobjects.submission,
|
||||
&instance.layout_choice,
|
||||
rsobjects.state_manager);
|
||||
rsobjects.state_manager,
|
||||
rsobjects.popover);
|
||||
|
||||
register_ui_loop_handler(rsobjects.receiver, &instance.panel_manager, instance.settings_context, instance.dbus_handler);
|
||||
register_ui_loop_handler(rsobjects.receiver, &instance.panel_manager, rsobjects.popover, instance.settings_context, instance.dbus_handler);
|
||||
|
||||
session_register();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user