From a647750a454f10819ec2581d4272e6205d264d5a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 14 Nov 2025 13:48:16 +0600 Subject: [PATCH] Fixed keyboard layout saving --- source/ubl-settings-keyboard.c | 20 ++++++++++++++++---- source/ubl-settings-keyboard.h | 3 ++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-keyboard.c b/source/ubl-settings-keyboard.c index 2e378d5..c832b84 100644 --- a/source/ubl-settings-keyboard.c +++ b/source/ubl-settings-keyboard.c @@ -10,6 +10,7 @@ gboolean yon_interface_update(main_window *widgets){ g_signal_handlers_block_by_func(G_OBJECT(widgets->LayoutChangingCombo),G_CALLBACK(on_options_save),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->ScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->ComposeSwitch),G_CALLBACK(on_compose_switch),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->DefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets); // g_signal_handlers_block_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0); @@ -120,6 +121,7 @@ gboolean yon_interface_update(main_window *widgets){ g_signal_handlers_unblock_by_func(G_OBJECT(widgets->LayoutChangingCombo),G_CALLBACK(on_options_save),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ComposeSwitch),G_CALLBACK(on_compose_switch),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets); // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets); return G_SOURCE_REMOVE; } @@ -267,7 +269,7 @@ void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets){ // } // } -void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets){ +void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets){ gtk_widget_set_sensitive(widgets->LayoutTree,!status); gtk_widget_set_sensitive(widgets->LayoutAddButton,!status); if (status){ @@ -278,15 +280,24 @@ void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets){ on_layout_selection_changed(GTK_TREE_VIEW(widgets->LayoutTree),widgets); } +} + +void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets){ if (!status){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->LayoutsList); GtkTreeIter iter; char *locales = NULL; for_iter(model,&iter){ - char *target; + char *target, *variant; - gtk_tree_model_get(model,&iter,0,&target,-1); - char *temp = yon_char_append_element(locales?locales:"",target,","); + gtk_tree_model_get(model,&iter,0,&target,1,&variant,-1); + char *key = NULL; + if (!yon_char_is_empty(variant)){ + key = yon_char_unite(target,"_",variant,NULL); + } else { + key = yon_char_new(target); + } + char *temp = yon_char_append_element(locales?locales:"",key,","); if (!yon_char_is_empty(locales)) free(locales); locales = temp; } @@ -365,6 +376,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->OptionsTree),"cursor-changed",G_CALLBACK(on_option_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_sensitive_toggled),widgets); g_signal_connect(G_OBJECT(widgets->LayoutMoveUpButton),"clicked",G_CALLBACK(on_layout_move_up),widgets); g_signal_connect(G_OBJECT(widgets->LayoutMoveDownButton),"clicked",G_CALLBACK(on_layout_move_down),widgets); diff --git a/source/ubl-settings-keyboard.h b/source/ubl-settings-keyboard.h index 66d82ba..d090338 100644 --- a/source/ubl-settings-keyboard.h +++ b/source/ubl-settings-keyboard.h @@ -279,4 +279,5 @@ void on_font_selection_changed(GtkWidget *,layouts_window *window); void yon_interface_save(main_window *widgets); void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets); void on_layout_selection_changed(GtkTreeView*,main_window *widgets); -void on_option_selection_changed(GtkTreeView *self,main_window *widgets); \ No newline at end of file +void on_option_selection_changed(GtkTreeView *self,main_window *widgets); +void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets); \ No newline at end of file