diff --git a/source/libublsettings-gtk3-tree-view.c b/source/libublsettings-gtk3-tree-view.c index 8004439..7a2ea2a 100644 --- a/source/libublsettings-gtk3-tree-view.c +++ b/source/libublsettings-gtk3-tree-view.c @@ -134,7 +134,7 @@ void yon_gtk_tree_view_column_set_fixed_size(GtkTreeView *target,int column_num) GtkTreeIter iter; GtkTreeModel *model = gtk_tree_view_get_model(target); GtkTreeViewColumn *current_column = gtk_tree_view_get_column(target,column_num); - int column_size = gtk_tree_view_column_get_fixed_width(current_column); + int column_size = 0; for_iter(model,&iter){ GList *list = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(current_column)); @@ -146,59 +146,10 @@ void yon_gtk_tree_view_column_set_fixed_size(GtkTreeView *target,int column_num) } g_list_free(list); if (column_sizesize;i++){ - g_signal_handlers_block_by_func(G_OBJECT(gtk_tree_view_get_column(GTK_TREE_VIEW(info->target),info->columns[i])),yon_on_fixed_changed,info); - yon_gtk_tree_view_column_set_fixed_size(GTK_TREE_VIEW(info->target),info->columns[i]); - g_signal_handlers_unblock_by_func(G_OBJECT(gtk_tree_view_get_column(GTK_TREE_VIEW(info->target),info->columns[i])),yon_on_fixed_changed,info); - } - -} - -void on_row_fixed_deleted(GtkTreeModel* self, GtkTreePath* path, struct fixed_info *info){ - - for (int i=0;isize;i++){ - g_signal_handlers_block_by_func(G_OBJECT(gtk_tree_view_get_column(GTK_TREE_VIEW(info->target),info->columns[i])),yon_on_fixed_changed,info); - yon_gtk_tree_view_column_set_fixed_size(GTK_TREE_VIEW(info->target),info->columns[i]); - g_signal_handlers_unblock_by_func(G_OBJECT(gtk_tree_view_get_column(GTK_TREE_VIEW(info->target),info->columns[i])),yon_on_fixed_changed,info); - } -} - -void yon_on_fixed_changed(GtkTreeViewColumn *self, GParamSpec*,struct fixed_info *info){ - for (int i=0;isize;i++){ - if (self == gtk_tree_view_get_column(GTK_TREE_VIEW(info->target),info->columns[i])){ - int *new_columns = malloc(sizeof(int)*(info->size-1)); - for (int j=0;jsize-1;j++){ - if (jcolumns[j]; - else new_columns[j]=info->columns[j+1]; - } - free(info->columns); - info->columns=new_columns; - info->size--; - if (!info->size){ - GObject *model = G_OBJECT(gtk_tree_view_get_model(GTK_TREE_VIEW(info->target))); - g_signal_handlers_disconnect_by_func(model,on_row_fixed_changed,info); - g_signal_handlers_disconnect_by_func(model,on_row_fixed_deleted,info); - free(info->columns); - free(info); - } - g_signal_handlers_disconnect_by_func(self,yon_on_fixed_changed,info); - return; - } - } + gtk_tree_view_column_set_fixed_width(current_column,column_size+10); } int yon_gtk_tree_view_set_fixed_size(GtkTreeView *target,...){ @@ -207,20 +158,10 @@ int yon_gtk_tree_view_set_fixed_size(GtkTreeView *target,...){ int current; int target_columns = gtk_tree_view_get_n_columns(target); GtkTreeModel *model = gtk_tree_view_get_model(target); - struct fixed_info *info = malloc(sizeof(struct fixed_info)); - info->target=GTK_WIDGET(target); - info->columns=NULL; - info->size=0; - g_signal_connect(G_OBJECT(model),"row-changed",G_CALLBACK(on_row_fixed_changed),info); - g_signal_connect(G_OBJECT(model),"row-deleted",G_CALLBACK(on_row_fixed_deleted),info); while ((current=va_arg(args,int))!=-1){ if (current>target_columns) return 0; - if (!info->columns) info->columns = malloc(sizeof(int)); - else info->columns = realloc(info->columns,sizeof(int)*(info->size+1)); - info->columns[info->size]=current; - g_signal_connect(G_OBJECT(gtk_tree_view_get_column(target,current)),"notify::fixed-width",G_CALLBACK(yon_on_fixed_changed),info); - info->size++; + yon_gtk_tree_view_column_set_fixed_size(target,current); } va_end(args); return 1; diff --git a/source/libublsettings-gtk3-window-config.c b/source/libublsettings-gtk3-window-config.c index d936171..0b0012b 100644 --- a/source/libublsettings-gtk3-window-config.c +++ b/source/libublsettings-gtk3-window-config.c @@ -356,4 +356,14 @@ yon_window_config_add_instant_parameter(yon_char_append(window_name,"Height"),"window",&height,YON_TYPE_INT); yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosX"),"window",&X,YON_TYPE_INT); yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosY"),"window",&Y,YON_TYPE_INT); + } + + int yon_window_config_check_exist(char *section, char *parameter){ + if (__yon_window_config_file&&!yon_char_is_empty(section)&&!yon_char_is_empty(parameter)){ + gsize size; + char **keys = g_key_file_get_keys(__yon_window_config_file,section,&size,NULL); + return !!yon_char_parsed_check_exist(keys,size,parameter); + } + return 0; + } \ No newline at end of file diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index a78b872..030aee7 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -168,6 +168,8 @@ void yon_window_config_custom_window_get(GtkWindow *window, char *window_name); */ void yon_window_config_custom_window_set(GtkWindow *window, char *window_name); +int yon_window_config_check_exist(char *section, char *parameter); + int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment); /**on_subwindow_close(GtkWidget *self)