From 13bf44b76ddfa85bc4d8e0a425ef75b8efd8a6e6 Mon Sep 17 00:00:00 2001 From: Erelwar Date: Mon, 22 Jun 2020 08:28:21 +0000 Subject: [PATCH 01/11] Fix/woraround for issues #451, #460. --- app/diagram.c | 4 ++++ app/filedlg.c | 24 ++++++++++++++---------- app/modify_tool.c | 2 +- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/diagram.c b/app/diagram.c index 5e0e294aa..aa60abf4c 100644 --- a/app/diagram.c +++ b/app/diagram.c @@ -390,9 +390,13 @@ diagram_load(const char *filename, DiaImportFilter *ifilter) if (diagram != NULL && was_default && app_is_interactive()) { diagram->is_default = FALSE; + GFile *file = g_file_new_for_path (filename); + dia_diagram_set_file(diagram, file); + g_clear_object (&file); if (g_slist_length(diagram->displays) == 1) { display_set_active (diagram->displays->data); + ddisplay_show_all(diagram->displays->data); } } diff --git a/app/filedlg.c b/app/filedlg.c index 4f06469cb..67bd4313b 100644 --- a/app/filedlg.c +++ b/app/filedlg.c @@ -417,18 +417,19 @@ file_save_as_response_callback(GtkWidget *fs, return; } - if (g_stat(filename, &stat_struct) == 0) { - GtkWidget *dialog = NULL; - char *utf8filename = NULL; - if (!g_utf8_validate(filename, -1, NULL)) { - utf8filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); - if (utf8filename == NULL) { - message_warning(_("Some characters in the filename are neither UTF-8\n" + char *utf8filename = NULL; + if (!g_utf8_validate(filename, -1, NULL)) { + utf8filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); + if (utf8filename == NULL) { + message_warning(_("Some characters in the filename are neither UTF-8\n" "nor your local encoding.\nSome things will break.")); - } + } } if (utf8filename == NULL) utf8filename = g_strdup(filename); + /* g_stat() accepts only utf8 encoded names */ + if (g_stat(utf8filename, &stat_struct) == 0) { + GtkWidget *dialog = NULL; dialog = gtk_message_dialog_new (GTK_WINDOW(fs), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, @@ -437,7 +438,6 @@ file_save_as_response_callback(GtkWidget *fs, gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), _("The file '%s' already exists.\n" "Do you want to overwrite it?"), utf8filename); - g_clear_pointer (&utf8filename, g_free); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES); if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_YES) { @@ -456,7 +456,10 @@ file_save_as_response_callback(GtkWidget *fs, { DiaContext *ctx = dia_context_new (_("Save as")); - GFile *file = g_file_new_for_path (filename); + /* ensure that g_file_new_for_path() will get filename in correct encoding */ + char *glibfilename = NULL; + glibfilename = g_filename_from_utf8(utf8filename, -1, NULL, NULL, NULL); + GFile *file = g_file_new_for_path (glibfilename); dia_diagram_set_file (dia, file); dia_context_set_filename (ctx, filename); @@ -469,6 +472,7 @@ file_save_as_response_callback(GtkWidget *fs, g_clear_object (&file); } g_clear_pointer (&filename, g_free); + g_clear_pointer (&utf8filename, g_free); } /* if we have our own reference, drop it before destroy */ diff --git a/app/modify_tool.c b/app/modify_tool.c index 5d1dfd250..fa0fef3a6 100644 --- a/app/modify_tool.c +++ b/app/modify_tool.c @@ -789,7 +789,7 @@ modify_button_release(ModifyTool *tool, GdkEventButton *event, &tool->last_to, NULL, HANDLE_MOVE_USER_FINAL,gdk_event_to_dia_ModifierKeys(event->state)); if (objchange != NULL) { - dia_object_change_change_new (ddisp->diagram, tool->object, objchange); + //dia_object_change_change_new (ddisp->diagram, tool->object, objchange); } object_add_updates(tool->object, ddisp->diagram); -- GitLab From f5db63c887e0a6968f491db50dbe12c4274e4e45 Mon Sep 17 00:00:00 2001 From: Erelwar Date: Mon, 22 Jun 2020 10:58:38 +0000 Subject: [PATCH 02/11] Update app/diagram.c --- app/diagram.c | 1 - 1 file changed, 1 deletion(-) diff --git a/app/diagram.c b/app/diagram.c index aa60abf4c..28f2a4aee 100644 --- a/app/diagram.c +++ b/app/diagram.c @@ -396,7 +396,6 @@ diagram_load(const char *filename, DiaImportFilter *ifilter) if (g_slist_length(diagram->displays) == 1) { display_set_active (diagram->displays->data); - ddisplay_show_all(diagram->displays->data); } } -- GitLab From 3731c942528a57f94bfc5471d3bfa73eafa165e6 Mon Sep 17 00:00:00 2001 From: Erelwar Date: Mon, 22 Jun 2020 11:33:26 +0000 Subject: [PATCH 03/11] Update app/diagram.c, app/filedlg.c files --- app/diagram.c | 11 +++++------ app/filedlg.c | 3 ++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/diagram.c b/app/diagram.c index 28f2a4aee..6c39b15b7 100644 --- a/app/diagram.c +++ b/app/diagram.c @@ -328,9 +328,11 @@ diagram_load_into (Diagram *diagram, diagram_modified (diagram); } } else { - /* the initial diagram should have confirmed filename */ - diagram->unsaved = - strcmp (filename, diagram->filename) == 0 ? FALSE : was_default; + /* Valid existing Dia file opened - file already saved, set filename to diadram */ + diagram->unsaved = FALSE; + GFile *file = g_file_new_for_path (filename); + dia_diagram_set_file(diagram, file); + g_clear_object (&file); } diagram_set_modified (diagram, TRUE); @@ -390,9 +392,6 @@ diagram_load(const char *filename, DiaImportFilter *ifilter) if (diagram != NULL && was_default && app_is_interactive()) { diagram->is_default = FALSE; - GFile *file = g_file_new_for_path (filename); - dia_diagram_set_file(diagram, file); - g_clear_object (&file); if (g_slist_length(diagram->displays) == 1) { display_set_active (diagram->displays->data); diff --git a/app/filedlg.c b/app/filedlg.c index 67bd4313b..837116815 100644 --- a/app/filedlg.c +++ b/app/filedlg.c @@ -420,7 +420,7 @@ file_save_as_response_callback(GtkWidget *fs, char *utf8filename = NULL; if (!g_utf8_validate(filename, -1, NULL)) { utf8filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); - if (utf8filename == NULL) { + if (utf8filename == NULL) { message_warning(_("Some characters in the filename are neither UTF-8\n" "nor your local encoding.\nSome things will break.")); } @@ -470,6 +470,7 @@ file_save_as_response_callback(GtkWidget *fs, dia_context_release (ctx); g_clear_object (&file); + g_clear_pointer (&glibfilename, g_free); } g_clear_pointer (&filename, g_free); g_clear_pointer (&utf8filename, g_free); -- GitLab From 8aa638d31718309c27cc0b127583acff2d8a73ab Mon Sep 17 00:00:00 2001 From: Erelwar Date: Mon, 22 Jun 2020 13:49:47 +0000 Subject: [PATCH 04/11] Update app/menus.c --- app/menus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/menus.c b/app/menus.c index dcc1ef1da..a9946dac8 100644 --- a/app/menus.c +++ b/app/menus.c @@ -276,7 +276,7 @@ static const GtkRadioActionEntry display_select_radio_entries[] = { "SelectInverse", NULL, N_("In_verse"), NULL, NULL, SELECT_INVERT } }; -#define ZOOM_FIT -1 +#define ZOOM_FIT -1.0 enum { COL_DISPLAY, -- GitLab From 9d64d24524d4e04bfc1cab5bf27a6ccabb6e6805 Mon Sep 17 00:00:00 2001 From: Erelwar Date: Tue, 23 Jun 2020 13:15:10 +0000 Subject: [PATCH 05/11] Update app/modify_tool.c, lib/element.c files --- app/modify_tool.c | 2 +- lib/element.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/modify_tool.c b/app/modify_tool.c index fa0fef3a6..5d1dfd250 100644 --- a/app/modify_tool.c +++ b/app/modify_tool.c @@ -789,7 +789,7 @@ modify_button_release(ModifyTool *tool, GdkEventButton *event, &tool->last_to, NULL, HANDLE_MOVE_USER_FINAL,gdk_event_to_dia_ModifierKeys(event->state)); if (objchange != NULL) { - //dia_object_change_change_new (ddisp->diagram, tool->object, objchange); + dia_object_change_change_new (ddisp->diagram, tool->object, objchange); } object_add_updates(tool->object, ddisp->diagram); diff --git a/lib/element.c b/lib/element.c index cad03feb0..2843e6ac5 100644 --- a/lib/element.c +++ b/lib/element.c @@ -604,7 +604,7 @@ element_change_new (const Point *corner, ec->object_change.apply = _element_change_swap; ec->object_change.revert = _element_change_swap; - ec->object_change.free = (ObjectChangeFreeFunc) g_free; + ec->object_change.free = NULL; ec->element = elem; ec->corner = elem->corner; -- GitLab From f081920df0ba866245d942ca9347fb4ef49773e2 Mon Sep 17 00:00:00 2001 From: Erelwar Date: Fri, 26 Jun 2020 15:52:31 +0000 Subject: [PATCH 06/11] Update app/filedlg.c --- app/filedlg.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/filedlg.c b/app/filedlg.c index 837116815..d40241313 100644 --- a/app/filedlg.c +++ b/app/filedlg.c @@ -426,6 +426,7 @@ file_save_as_response_callback(GtkWidget *fs, } } if (utf8filename == NULL) utf8filename = g_strdup(filename); + g_clear_pointer (&filename, g_free); /* g_stat() accepts only utf8 encoded names */ if (g_stat(utf8filename, &stat_struct) == 0) { @@ -444,7 +445,7 @@ file_save_as_response_callback(GtkWidget *fs, /* don't hide/destroy the dialog, but simply go back to it */ gtk_window_present (GTK_WINDOW (fs)); gtk_widget_destroy (dialog); - g_clear_pointer (&filename, g_free); + g_clear_pointer (&utf8filename, g_free); return; } gtk_widget_destroy(dialog); @@ -462,17 +463,16 @@ file_save_as_response_callback(GtkWidget *fs, GFile *file = g_file_new_for_path (glibfilename); dia_diagram_set_file (dia, file); - dia_context_set_filename (ctx, filename); + dia_context_set_filename (ctx, utf8filename); - if (diagram_save (dia, filename, ctx)) { - recent_file_history_add (filename); + if (diagram_save (dia, utf8filename, ctx)) { + recent_file_history_add (utf8filename); } dia_context_release (ctx); g_clear_object (&file); g_clear_pointer (&glibfilename, g_free); } - g_clear_pointer (&filename, g_free); g_clear_pointer (&utf8filename, g_free); } -- GitLab From a6b3e5a2fd29e1d54e37590271e9fe26a6a1a1f4 Mon Sep 17 00:00:00 2001 From: Erelwar Date: Thu, 2 Jul 2020 07:55:27 +0000 Subject: [PATCH 07/11] Update objects/standard/textobj.c --- objects/standard/textobj.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/objects/standard/textobj.c b/objects/standard/textobj.c index 932b04969..db207b36f 100644 --- a/objects/standard/textobj.c +++ b/objects/standard/textobj.c @@ -307,17 +307,29 @@ textobj_draw(Textobj *textobj, DiaRenderer *renderer) if (textobj->text_angle == 0) { text_draw (textobj->text, renderer); } else { - dia_renderer_draw_rotated_text (renderer, - textobj->text, - &textobj->text_handle.pos, - textobj->text_angle); /* XXX: interactive case not working correctly */ - if (DIA_IS_INTERACTIVE_RENDERER (renderer) && + if (DIA_IS_INTERACTIVE_RENDERER (renderer) && dia_object_is_selected (&textobj->object) && textobj->text->focus.has_focus) { /* editing is not rotated */ text_draw (textobj->text, renderer); - } + } else { + /* Draw rotated text with cairo renderer if present */ + if(DIA_CAIRO_IS_RENDERER (renderer)) { + DiaCairoRenderer *cairo_renderer = DIA_CAIRO_RENDERER (renderer); + cairo_save(cairo_renderer->cr); + cairo_translate (cairo_renderer->cr, textobj->text_handle.pos.x, textobj->text_handle.pos.y); + cairo_rotate(cairo_renderer->cr, textobj->text_angle/180*G_PI); + cairo_translate (cairo_renderer->cr, -textobj->text_handle.pos.x, -textobj->text_handle.pos.y); + text_draw (textobj->text, renderer); + cairo_restore(cairo_renderer->cr); + } else { + dia_renderer_draw_rotated_text (renderer, + textobj->text, + &textobj->text_handle.pos, + textobj->text_angle); + } + } } } -- GitLab From 5819f49142db3a6d96c56160db631d89b486039c Mon Sep 17 00:00:00 2001 From: Erelwar Date: Thu, 2 Jul 2020 08:11:14 +0000 Subject: [PATCH 08/11] Update objects/standard/textobj.c --- objects/standard/textobj.c | 1 + 1 file changed, 1 insertion(+) diff --git a/objects/standard/textobj.c b/objects/standard/textobj.c index db207b36f..136453abf 100644 --- a/objects/standard/textobj.c +++ b/objects/standard/textobj.c @@ -26,6 +26,7 @@ #include "connectionpoint.h" #include "diarenderer.h" #include "diainteractiverenderer.h" +#include "renderer/diacairo.h" #include "font.h" #include "text.h" #include "attributes.h" -- GitLab From 3acced9a49bf8f4509d7dea9ebf047d64982002d Mon Sep 17 00:00:00 2001 From: Erelwar Date: Mon, 6 Jul 2020 09:32:28 +0000 Subject: [PATCH 09/11] Update app/load_save.c --- app/load_save.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/load_save.c b/app/load_save.c index 892512e5b..6a5c507ee 100644 --- a/app/load_save.c +++ b/app/load_save.c @@ -462,11 +462,6 @@ diagram_data_load (const char *filename, return FALSE; } - /* Destroy the default layer: */ - if (dia_layer_object_count (dia_diagram_data_get_active_layer (data)) == 0) { - data_remove_layer (data, dia_diagram_data_get_active_layer (data)); - } - diagramdata = find_node_named (root->xmlChildrenNode, "diagramdata"); @@ -781,6 +776,11 @@ diagram_data_load (const char *filename, g_hash_table_destroy (objects_hash); + /* Remove first default level */ + if (data_layer_get_nth (data, 0) != NULL) { + data_remove_layer (data, data_layer_get_nth (data, 0)); + } + if (data_layer_count (data) < 1) { message_error (_("Error loading diagram:\n%s.\n" "A valid Dia file defines at least one layer."), -- GitLab From 08ff5ac8a87aebf8d7615ffc9b32213d5916790d Mon Sep 17 00:00:00 2001 From: Erelwar Date: Wed, 8 Jul 2020 06:07:31 +0000 Subject: [PATCH 10/11] Fix to properly check layer-less diagram loading. --- app/load_save.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/load_save.c b/app/load_save.c index 6a5c507ee..56fc6e8fd 100644 --- a/app/load_save.c +++ b/app/load_save.c @@ -776,12 +776,8 @@ diagram_data_load (const char *filename, g_hash_table_destroy (objects_hash); - /* Remove first default level */ - if (data_layer_get_nth (data, 0) != NULL) { - data_remove_layer (data, data_layer_get_nth (data, 0)); - } - - if (data_layer_count (data) < 1) { + /* Default layer plus at least one from file */ + if (data_layer_count (data) < 2) { message_error (_("Error loading diagram:\n%s.\n" "A valid Dia file defines at least one layer."), dia_message_filename(filename)); @@ -798,6 +794,11 @@ diagram_data_load (const char *filename, } g_hash_table_destroy (unknown_objects_hash); + /* Remove first default level */ + if (data_layer_get_nth (data, 0) != NULL) { + data_remove_layer (data, data_layer_get_nth (data, 0)); + } + return TRUE; } -- GitLab From 6ea7218e8769f2b2266c11e97c65ab8ae1cbf683 Mon Sep 17 00:00:00 2001 From: Erelwar Date: Fri, 10 Jul 2020 09:19:30 +0000 Subject: [PATCH 11/11] Fix g_stat calls, mostly "struct stat" -> "GStatBuf". Also fix feeding g_stat with non-utf8 filename at "file_export_response_callback". --- app/commands.c | 2 +- app/filedlg.c | 29 +++++++++++----- app/load_save.c | 2 +- app/sheet-editor/sheets_dialog_callbacks.c | 2 +- lib/plug-ins.c | 2 +- lib/sheet.c | 2 +- objects/Misc/diagram_as_object.c | 2 +- objects/custom/custom_object.c | 2 +- objects/custom_lines/custom_linetypes.c | 40 +++++++++++----------- objects/standard/image.c | 4 +-- plug-ins/postscript/paginate_psprint.c | 2 +- 11 files changed, 50 insertions(+), 39 deletions(-) diff --git a/app/commands.c b/app/commands.c index dfc6f279a..a038d516e 100644 --- a/app/commands.c +++ b/app/commands.c @@ -537,7 +537,7 @@ _clipboard_get_data_callback (GtkClipboard *clipboard, g_clear_object (&pixbuf); } } else { - struct stat st; + GStatBuf st; FILE *f; if ( g_stat (outfname, &st) == 0 diff --git a/app/filedlg.c b/app/filedlg.c index d40241313..d668b9f9c 100644 --- a/app/filedlg.c +++ b/app/filedlg.c @@ -404,7 +404,7 @@ file_save_as_response_callback(GtkWidget *fs, { char *filename; Diagram *dia; - struct stat stat_struct; + GStatBuf stat_struct; if (response == GTK_RESPONSE_ACCEPT) { dia = g_object_get_data (G_OBJECT(fs), "user_data"); @@ -783,7 +783,7 @@ file_export_response_callback (GtkWidget *fs, char *filename; Diagram *dia; DiaExportFilter *ef; - struct stat statbuf; + GStatBuf statbuf; dia = g_object_get_data (G_OBJECT (fs), "user_data"); g_assert (dia); @@ -795,7 +795,18 @@ file_export_response_callback (GtkWidget *fs, filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fs)); - if (g_stat(filename, &statbuf) == 0) { + char *utf8filename = NULL; + if (!g_utf8_validate(filename, -1, NULL)) { + utf8filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); + if (utf8filename == NULL) { + message_warning(_("Some characters in the filename are neither UTF-8\n" + "nor your local encoding.\nSome things will break.")); + } + } + if (utf8filename == NULL) utf8filename = g_strdup(filename); + g_clear_pointer (&filename, g_free); + + if (g_stat(utf8filename, &statbuf) == 0) { GtkWidget *dialog = NULL; dialog = gtk_message_dialog_new (GTK_WINDOW(fs), @@ -805,13 +816,13 @@ file_export_response_callback (GtkWidget *fs, _("File already exists")); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), _("The file '%s' already exists.\n" - "Do you want to overwrite it?"), dia_message_filename(filename)); + "Do you want to overwrite it?"), dia_message_filename(utf8filename)); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES); if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_YES) { /* if not overwrite allow to select another filename */ gtk_widget_destroy(dialog); - g_clear_pointer (&filename, g_free); + g_clear_pointer (&utf8filename, g_free); return; } @@ -830,10 +841,10 @@ file_export_response_callback (GtkWidget *fs, DiaContext *ctx = dia_context_new (_("Export")); g_object_ref (dia->data); - dia_context_set_filename (ctx, filename); + dia_context_set_filename (ctx, utf8filename); ef->export_func (dia->data, ctx, - filename, + utf8filename, dia->filename, ef->user_data); g_object_unref (dia->data); @@ -841,9 +852,9 @@ file_export_response_callback (GtkWidget *fs, } else { message_error (_("Could not determine which export filter\n" "to use to save '%s'"), - dia_message_filename (filename)); + dia_message_filename (utf8filename)); } - g_clear_pointer (&filename, g_free); + g_clear_pointer (&utf8filename, g_free); } g_clear_object (&dia); /* drop our diagram reference */ diff --git a/app/load_save.c b/app/load_save.c index 56fc6e8fd..13e150bae 100644 --- a/app/load_save.c +++ b/app/load_save.c @@ -1289,7 +1289,7 @@ void diagram_cleanup_autosave(Diagram *dia) { gchar *savefile; - struct stat statbuf; + GStatBuf statbuf; savefile = dia->autosavefilename; if (savefile == NULL) return; diff --git a/app/sheet-editor/sheets_dialog_callbacks.c b/app/sheet-editor/sheets_dialog_callbacks.c index 913276c8a..44bed2e5b 100644 --- a/app/sheet-editor/sheets_dialog_callbacks.c +++ b/app/sheet-editor/sheets_dialog_callbacks.c @@ -728,7 +728,7 @@ on_sheets_new_dialog_button_ok_clicked (GtkButton *button, GtkWidget *entry; gchar *file_name; gchar *p; - struct stat stat_buf; + GStatBuf stat_buf; GList *plugin_list; DiaObjectType *ot; typedef gboolean (*CustomObjectLoadFunc) (gchar*, DiaObjectType **); diff --git a/lib/plug-ins.c b/lib/plug-ins.c index a7fb65e52..bc2d6deb8 100644 --- a/lib/plug-ins.c +++ b/lib/plug-ins.c @@ -289,7 +289,7 @@ static void for_each_in_dir(const gchar *directory, ForEachInDirDoFunc dofunc, ForEachInDirFilterFunc filter) { - struct stat statbuf; + GStatBuf statbuf; const char *dentry; GDir *dp; GError *error = NULL; diff --git a/lib/sheet.c b/lib/sheet.c index 2c54883b8..59114e776 100644 --- a/lib/sheet.c +++ b/lib/sheet.c @@ -343,7 +343,7 @@ load_register_sheet (const char *dirname, sheetp = get_sheets_list (); while (sheetp) { if (sheetp->data && !strcmp (((Sheet *) (sheetp->data))->name, name)) { - struct stat first_file, this_file; + GStatBuf first_file, this_file; int stat_ret; stat_ret = g_stat (((Sheet *) (sheetp->data))->filename, &first_file); diff --git a/objects/Misc/diagram_as_object.c b/objects/Misc/diagram_as_object.c index 18aa2d4bd..e0c0eb882 100644 --- a/objects/Misc/diagram_as_object.c +++ b/objects/Misc/diagram_as_object.c @@ -245,7 +245,7 @@ _dae_draw (DiagramAsElement *dae, DiaRenderer *renderer) static void _dae_update_data(DiagramAsElement *dae) { - struct stat statbuf; + GStatBuf statbuf; Element *elem = &dae->element; DiaObject *obj = &elem->object; static int working = 0; diff --git a/objects/custom/custom_object.c b/objects/custom/custom_object.c index d876fb9b1..c5b9bfd9b 100644 --- a/objects/custom/custom_object.c +++ b/objects/custom/custom_object.c @@ -1943,7 +1943,7 @@ custom_object_new(ShapeInfo *info, DiaObjectType **otype) obj->default_user_data = info; if (info->icon) { - struct stat buf; + GStatBuf buf; if (0==g_stat(info->icon,&buf)) { obj->pixmap = NULL; obj->pixmap_file = info->icon; diff --git a/objects/custom_lines/custom_linetypes.c b/objects/custom_lines/custom_linetypes.c index f780c9768..83f2b10be 100644 --- a/objects/custom_lines/custom_linetypes.c +++ b/objects/custom_lines/custom_linetypes.c @@ -54,7 +54,7 @@ static DiaObject *custom_bezierline_load (ObjectNode obj_node, int version, DiaC static void customline_save (DiaObject *object, ObjectNode obj_node, DiaContext *ctx); -static ObjectTypeOps +static ObjectTypeOps custom_zigzagline_type_ops = { (CreateFunc)customline_create, /* create */ (LoadFunc) custom_zigzagline_load, /* load */ @@ -63,7 +63,7 @@ custom_zigzagline_type_ops = { (ApplyDefaultsFunc) NULL /* apply_defaults*/ }; -static ObjectTypeOps +static ObjectTypeOps custom_polyline_type_ops = { (CreateFunc)customline_create, /* create */ (LoadFunc) custom_polyline_load, /* load */ @@ -72,7 +72,7 @@ custom_polyline_type_ops = { (ApplyDefaultsFunc) NULL /* apply_defaults*/ }; -static ObjectTypeOps +static ObjectTypeOps custom_bezierline_type_ops = { (CreateFunc)customline_create, /* create */ (LoadFunc) custom_bezierline_load, /* load */ @@ -151,11 +151,11 @@ custom_bezierline_load (ObjectNode obj_node, int version, DiaContext *ctx) return _custom_zigzagline_load(obj_node, version, ctx, bezier_ot); } -static void +static void customline_save (DiaObject *object, ObjectNode obj_node, DiaContext *ctx) { g_assert (object->type && object->type->ops && object->type->ops->save); - + if (!ensure_standard_types()) { g_warning ("Can't create standard types"); return; @@ -167,7 +167,7 @@ customline_save (DiaObject *object, ObjectNode obj_node, DiaContext *ctx) polyline_ot->ops->save (object, obj_node, ctx); else if (object->type->ops == &custom_bezierline_type_ops) bezier_ot->ops->save (object, obj_node, ctx); - else + else g_warning ("customline_save() no delegate"); } @@ -183,7 +183,7 @@ _customline_prop_descs[] = { PROP_DESC_END }; -void +void customline_apply_properties( DiaObject* line, LineInfo* info ) { GPtrArray *props; @@ -191,30 +191,30 @@ customline_apply_properties( DiaObject* line, LineInfo* info ) ColorProperty *cprop; RealProperty *rprop; ArrowProperty *aprop; - + props = prop_list_from_descs( _customline_prop_descs, pdtpp_true ); g_assert( props->len == 6 ); - + /* order/index/type must match _customline_prop_descs */ cprop = g_ptr_array_index( props, 0 ); cprop->color_data = info->line_color; - + lsprop = g_ptr_array_index( props, 1 ); lsprop->style = info->line_style; lsprop->dash = info->dashlength; - + rprop = g_ptr_array_index( props, 2 ); rprop->real_data = info->line_width; - + rprop = g_ptr_array_index( props, 3 ); rprop->real_data = info->corner_radius; - + aprop = g_ptr_array_index( props, 4 ); aprop->arrow_data = info->start_arrow; - + aprop = g_ptr_array_index( props, 5 ); aprop->arrow_data = info->end_arrow; - + line->ops->set_props( line, props ); prop_list_free(props); @@ -238,7 +238,7 @@ customline_create(Point *startpoint, if (!line_info->object_type->prop_offsets) { DiaObjectType *ot = line_info->object_type; - + if (line_info->type == CUSTOM_LINETYPE_ZIGZAGLINE) ot->prop_offsets = zigzag_ot->prop_offsets; else if (line_info->type == CUSTOM_LINETYPE_POLYLINE) @@ -255,7 +255,7 @@ customline_create(Point *startpoint, res = polyline_ot->ops->create( startpoint, NULL, handle1, handle2 ); else if (line_info->type == CUSTOM_LINETYPE_BEZIERLINE) res = bezier_ot->ops->create( startpoint, NULL, handle1, handle2 ); - else + else g_warning(_("INTERNAL: CustomLines: Illegal line type in LineInfo object.")); if (res) { @@ -266,7 +266,7 @@ customline_create(Point *startpoint, return( res ); } -void +void custom_linetype_new(LineInfo *info, DiaObjectType **otype) { DiaObjectType *obj = g_new0(DiaObjectType, 1); @@ -285,7 +285,7 @@ custom_linetype_new(LineInfo *info, DiaObjectType **otype) obj->name = info->name; obj->default_user_data = info; - /* we have to either intialize both, or ... + /* we have to either intialize both, or ... * provide our own vtable entries for describe_props and get_props */ obj->prop_descs = _customline_prop_descs; @@ -302,7 +302,7 @@ custom_linetype_new(LineInfo *info, DiaObjectType **otype) } if (info->icon_filename) { - struct stat buf; + GStatBuf buf; if (0==g_stat(info->icon_filename,&buf)) { obj->pixmap = NULL; obj->pixmap_file = info->icon_filename; diff --git a/objects/standard/image.c b/objects/standard/image.c index f000d27ed..d44fad99f 100644 --- a/objects/standard/image.c +++ b/objects/standard/image.c @@ -222,7 +222,7 @@ image_get_props(Image *image, GPtrArray *props) static void image_set_props(Image *image, GPtrArray *props) { - struct stat st; + GStatBuf st; time_t mtime = 0; char *old_file = image->file ? g_strdup(image->file) : NULL; const GdkPixbuf *old_pixbuf = dia_image_pixbuf (image->image); @@ -887,7 +887,7 @@ image_load(ObjectNode obj_node, int version, DiaContext *ctx) /* update mtime */ { - struct stat st; + GStatBuf st; if (g_stat (image->file, &st) != 0) st.st_mtime = 0; diff --git a/plug-ins/postscript/paginate_psprint.c b/plug-ins/postscript/paginate_psprint.c index dd47bed9a..9b6248bde 100644 --- a/plug-ins/postscript/paginate_psprint.c +++ b/plug-ins/postscript/paginate_psprint.c @@ -399,7 +399,7 @@ diagram_print_ps (DiagramData *dia, const gchar* original_filename) is_pipe = TRUE; } else { const gchar *new_filename = gtk_entry_get_text (GTK_ENTRY (ofile)); - struct stat statbuf; + GStatBuf statbuf; if (g_stat (new_filename, &statbuf) == 0) { /* Output file exists */ -- GitLab