Fixed crash at postsave function if it had widgets manipulations #36

Merged
asmeron merged 3 commits from YanTheKaller/libublsettingsui-gtk3:master into master 11 months ago

@ -227,10 +227,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</style>
</object>
<object class="GtkWindow" id="MainWindow">
<property name="width-request">800</property>
<property name="height-request">600</property>
<property name="width-request">640</property>
<property name="height-request">440</property>
<property name="can-focus">False</property>
<property name="default-width">800</property>
<property name="default-width">1024</property>
<property name="default-height">720</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3</property>
<child>
<object class="GtkBox">

@ -1,4 +1,5 @@
#include "libublsettingsui-gtk3.h"
// #include "ubl-window-settings.h"
Review

Если не нужно - удалить.

Если не нужно - удалить.
Review

Нужен

Нужен
static char *__yon_config_mode=NULL;
@ -166,6 +167,17 @@ template_debug_window *template_debugger_window_new(){
return window;
}
struct save_return {
void *save_success_argument;
config_str file_return;
int file_save;
};
gboolean _yon_postsave_function_start(struct save_return *data){
save_success_function(data->save_success_argument,data->file_return,data->file_save);
return G_SOURCE_REMOVE;
}
void _yon_saving_threaded(char *final_command){
FILE *file = popen(final_command,"r");
int file_save;
@ -174,7 +186,11 @@ void _yon_saving_threaded(char *final_command){
file_return = yon_char_parsed_append(file_return,&file_save,final_command);
if (save_success_function)
{
save_success_function(save_success_argument,file_return,file_save);
struct save_return *data = malloc(sizeof(struct save_return));
data->save_success_argument = save_success_argument;
data->file_return = file_return;
data->file_save = file_save;
gdk_threads_add_idle((GSourceFunc)_yon_postsave_function_start,data);
}
}
@ -621,6 +637,18 @@ template_main_window *setup_window(){
gtk_widget_show(widgets->Window);
return widgets;
}
void __yon_on_size_changed(GtkWindow *self, GtkScrolledWindow *target){
int x,y;
gtk_window_get_size(self,&x,&y);
if (x<800)
gtk_scrolled_window_set_policy(target,GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
else
gtk_scrolled_window_set_policy(target,GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC);
}
void yon_gtk_scrolled_window_set_horizontal_at_desired_size(GtkWidget *window, GtkScrolledWindow *target){
g_signal_connect(G_OBJECT(window),"check-resize",G_CALLBACK(__yon_on_size_changed),target);
}
int yon_ubl_window_init(char *app_title, char *app_description, char *locale, char *css, char *tech_name, char *version, char *wiki){
template_app_information.app_title=app_title;

@ -98,6 +98,7 @@
#define SAVE_MODE_HDD_HOME_LABEL _("HDD sandbox with profile saving")
#define CUSTOM_CONFIG_CREATION_ERROR_LABEL _("New configuration file creation failed")
#define ROOT_CHECK_LABEL _("Upgrade to root")
#define SETTINGS_TITLE_LABEL _("Settings")
#endif
#define dull_parameter_get_command "ubconfig --source global get users PARAMETER"
@ -305,4 +306,6 @@ void on_about(GtkWidget *self, char *version_application);
void on_open_documentation_confirmation(GtkWidget *self, char *link);
int yon_ubl_setup_arguments(int argc, char *argv[],config_str *unfound_arguments, int *arguments_size, char *additional_options_output);
void yon_gtk_scrolled_window_set_horizontal_at_desired_size(GtkWidget *window, GtkScrolledWindow *target);
#endif
Loading…
Cancel
Save