From 577c25569031233ea5bc7d3659f890da128ab607 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 12 Nov 2025 16:16:57 +0600 Subject: [PATCH] Saving fix --- source/ubl-settings-keyboard.c | 38 ++++++++++++++++++++++++++-------- source/ubl-settings-keyboard.h | 3 ++- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/source/ubl-settings-keyboard.c b/source/ubl-settings-keyboard.c index d3eebc8..a261281 100644 --- a/source/ubl-settings-keyboard.c +++ b/source/ubl-settings-keyboard.c @@ -267,6 +267,30 @@ void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets){ // } // } +void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets){ + gtk_widget_set_sensitive(widgets->LayoutTree,!status); + gtk_widget_set_sensitive(widgets->LayoutAddButton,!status); + gtk_widget_set_sensitive(widgets->LayoutRemoveButton,!status); + gtk_widget_set_sensitive(widgets->LayoutMoveUpButton,!status); + gtk_widget_set_sensitive(widgets->LayoutMoveDownButton,!status); + if (!status){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->LayoutsList); + GtkTreeIter iter; + char *locales = NULL; + for_iter(model,&iter){ + char *target; + + gtk_tree_model_get(model,&iter,0,&target,-1); + char *temp = yon_char_append_element(locales?locales:"",target,","); + if (!yon_char_is_empty(locales)) free(locales); + locales = temp; + } + if (!yon_char_is_empty(locales)){ + yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,locales); + } + } +} + void yon_main_window_complete(main_window *widgets){ widgets = yon_remalloc(widgets,sizeof(main_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); @@ -318,11 +342,7 @@ void yon_main_window_complete(main_window *widgets){ // g_signal_connect(G_OBJECT(widgets->LayoutsList),"row-inserted",G_CALLBACK(on_layout_dnd_inserted),widgets); // g_signal_connect(G_OBJECT(widgets->LayoutsList),"row-deleted",G_CALLBACK(on_layout_dnd_deleted),widgets); - g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutTree); - g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutAddButton); - g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutRemoveButton); - g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutMoveUpButton); - g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LayoutMoveDownButton); + g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_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); @@ -331,10 +351,10 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); - g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),NULL); - g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),NULL); - g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),NULL); - g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL); + g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets); } int size; diff --git a/source/ubl-settings-keyboard.h b/source/ubl-settings-keyboard.h index a1778c6..b86beac 100644 --- a/source/ubl-settings-keyboard.h +++ b/source/ubl-settings-keyboard.h @@ -276,4 +276,5 @@ void yon_font_open(GtkWidget *,main_window *widgets); void on_keymaps_selection_changed(GtkWidget *,layouts_window *window); void on_font_accept(GtkWidget *, layouts_window *window); void on_font_selection_changed(GtkWidget *,layouts_window *window); -void yon_interface_save(main_window *widgets); \ No newline at end of file +void yon_interface_save(main_window *widgets); +void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets); \ No newline at end of file