From 2e8acba1bcf47249e2b172dc81938f03942806e7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 19 Dec 2024 12:05:27 +0600 Subject: [PATCH 1/5] Test fix for rare crash --- source/libublsettings-gtk3.c | 43 +++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index 5a8bb57..e360250 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -594,7 +594,6 @@ void _yon_gtk_column_minimal_fixed_size_set(GtkTreeViewColumn *column){ if (layout != NULL) { pango_layout_get_pixel_size(layout, &header_width, NULL); - g_object_unref(layout); } if (GTK_IS_WIDGET(label)) { g_object_ref_sink(label); @@ -609,6 +608,7 @@ void _yon_gtk_tree_view_minimal_fixed_size_set_full(GtkTreeView *tree){ for (int i=0;icheck_function))(parameter,current->target, current->parameter)) { +// } + +// } + +// int yon_gtk_config_add_listener (GtkWidget *target, char *parameter, char *save_command,int(check_function)(char*,GtkWidget*,char*)){ +// if (__yon_config_listeners){ +// dictionary *dict; +// for_dictionaries(dict,__yon_config_listeners){ +// if (target==((config_listener*)dict->data)->target){ +// return 0; +// } +// } +// } +// config_listener *current = malloc(sizeof(config_listener)); +// current->target=target; +// current->parameter = parameter; +// current->save_command = save_command; +// current->check_function = (void*)check_function; +// if (GTK_IS_TOGGLE_BUTTON(target)){ +// g_signal_connect(G_OBJECT(target),"toggled",C_CALLBACK(__yon_gtk_config_activated),current); + +// } + +// yon_dictionary_add_or_create_if_exists_with_data(__yon_config_listeners,NULL,current); +// return 0; +// } + #endif \ No newline at end of file From 8545f8a0211e4b8f111c78bcd9b72e22c782274d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 24 Dec 2024 18:06:57 +0600 Subject: [PATCH 2/5] Added function to block input of restricted symbols in entry --- source/libublsettings-gtk3.c | 26 ++++++++++++++++++++++++++ source/libublsettings-gtk3.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index e360250..1c35b60 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -1214,6 +1214,32 @@ void yon_on_text_insert_only_digits(GtkEditable *editable, const gchar *text, gi g_free(new_text); } +void yon_on_insert_restricted_check(GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer){ + gchar *new_text = g_new(gchar, length + 1); + gint i, j = 0; + + for (i = 0; i < length; i++) { + if (text[i]=='!'||text[i]=='@'||text[i]=='#'||text[i]=='%'||text[i]=='^'||text[i]=='&'||text[i]=='*'||text[i]=='\"'||text[i]=='\'') { + new_text[j] = text[i]; + j++; + } + } + + if (j < length) { + g_signal_handlers_block_by_func(editable, G_CALLBACK(yon_on_insert_restricted_check), NULL); + gtk_editable_insert_text(editable, new_text, j, position); + g_signal_handlers_unblock_by_func(editable, G_CALLBACK(yon_on_insert_restricted_check), NULL); + g_signal_stop_emission_by_name(editable, "insert-text"); + } + + g_free(new_text); +} + +void yon_gtk_entry_block_restricted_symbols(GtkEntry *target){ + g_return_if_fail(GTK_IS_ENTRY(target)); + g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_insert_restricted_check),NULL); +} + // GtkEntry section // struct entry_pattern_data { // GtkEntry *entry; diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index a01f7d3..e5d770a 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -485,6 +485,8 @@ void yon_gtk_entry_set_password_visibility_icon(GtkEntry *target); void yon_on_text_insert_only_digits(GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer user_data); +void yon_gtk_entry_block_restricted_symbols(GtkEntry *target); + // GtkTreeStore section dictionary *yon_gtk_tree_store_get_children(GtkTreeStore *tree, GtkTreeIter *parent,int column); From 74659486842368157dc42d98ea86ab08726a7776 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 25 Dec 2024 09:52:42 +0600 Subject: [PATCH 3/5] Fixed entry block of input for special symbols --- source/libublsettings-gtk3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index 1c35b60..5f1347a 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -1219,7 +1219,7 @@ void yon_on_insert_restricted_check(GtkEditable *editable, const gchar *text, gi gint i, j = 0; for (i = 0; i < length; i++) { - if (text[i]=='!'||text[i]=='@'||text[i]=='#'||text[i]=='%'||text[i]=='^'||text[i]=='&'||text[i]=='*'||text[i]=='\"'||text[i]=='\'') { + if (text[i]!='!'&&text[i]!='@'&&text[i]!='#'&&text[i]!='%'&&text[i]!='^'&&text[i]!='&'&&text[i]!='*'&&text[i]!='\"'&&text[i]!='\'') { new_text[j] = text[i]; j++; } From ed6c0cb8d3591e7c5faa332fa43929135a4ef86a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 25 Dec 2024 14:34:12 +0600 Subject: [PATCH 4/5] Fixed rare bug --- source/libublsettings-gtk3.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index 5f1347a..e5ce5ae 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -586,7 +586,7 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){ } return -1; } -void _yon_gtk_column_minimal_fixed_size_set(GtkTreeViewColumn *column){ +gboolean _yon_gtk_column_minimal_fixed_size_set(GtkTreeViewColumn *column){ const gchar *title = gtk_tree_view_column_get_title(column); GtkWidget *label = gtk_label_new(title); int header_width = 0; @@ -601,12 +601,13 @@ void _yon_gtk_column_minimal_fixed_size_set(GtkTreeViewColumn *column){ gtk_tree_view_column_set_min_width(column, header_width+10); g_object_unref(label); + return G_SOURCE_REMOVE; } void _yon_gtk_tree_view_minimal_fixed_size_set_full(GtkTreeView *tree){ GList *list = gtk_tree_view_get_columns(tree); for (int i=0;i Date: Sat, 28 Dec 2024 09:45:29 +0600 Subject: [PATCH 5/5] Added new function --- source/libublsettings-gtk3.c | 5 +++++ source/libublsettings-gtk3.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index e5ce5ae..45c1551 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -587,6 +587,7 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){ } gboolean _yon_gtk_column_minimal_fixed_size_set(GtkTreeViewColumn *column){ + g_return_val_if_fail(GTK_IS_TREE_VIEW_COLUMN(column),0); const gchar *title = gtk_tree_view_column_get_title(column); GtkWidget *label = gtk_label_new(title); int header_width = 0; @@ -604,6 +605,10 @@ gboolean _yon_gtk_column_minimal_fixed_size_set(GtkTreeViewColumn *column){ return G_SOURCE_REMOVE; } +void yon_gtk_tree_view_column_minimal_fixed_size_set(GtkTreeViewColumn *column){ + _yon_gtk_column_minimal_fixed_size_set(column); +} + void _yon_gtk_tree_view_minimal_fixed_size_set_full(GtkTreeView *tree){ GList *list = gtk_tree_view_get_columns(tree); for (int i=0;i