From ed185e981ba763f3e78b02bf452b7c683b180e64 Mon Sep 17 00:00:00 2001 From: Felipe Escoto Date: Sun, 10 Feb 2019 21:47:47 -0600 Subject: [PATCH] Don't automatically clone images && fix problems with early loading of empty slide --- src/Services/Clipboard.vala | 6 ------ src/Services/Slide.vala | 24 ++++++++++++++++-------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/Services/Clipboard.vala b/src/Services/Clipboard.vala index 65fd4f6..2e065e4 100644 --- a/src/Services/Clipboard.vala +++ b/src/Services/Clipboard.vala @@ -158,12 +158,6 @@ public class Spice.Clipboard { manager.new_slide (root_object, true); } else { var item = Utils.canvas_item_from_data (root_object, manager.current_slide.canvas); - - if (item is Spice.ImageItem) { - // This clones the image file - (item as Spice.ImageItem).image.copy_to_another_file (); - } - manager.current_slide.add_item (item, true, true); } }); diff --git a/src/Services/Slide.vala b/src/Services/Slide.vala index 45dc608..fc23dea 100644 --- a/src/Services/Slide.vala +++ b/src/Services/Slide.vala @@ -32,6 +32,8 @@ public class Spice.Slide : Object { public string notes { get; set; default = ""; } public Gtk.StackTransitionType transition { get; set; default = Gtk.StackTransitionType.NONE; } + private bool is_empty_last_slide = false; + private Gee.LinkedList to_be_deleted = new Gee.LinkedList(); private bool visible_ = true; public bool visible { @@ -47,10 +49,15 @@ public class Spice.Slide : Object { item.visible = true; } - canvas.window.current_file.file_collector.ref_file (thumbnail_file); + if (!is_empty_last_slide) { + canvas.window.current_file.file_collector.ref_file (thumbnail_file); + } + to_be_deleted.clear (); } else { - canvas.window.current_file.file_collector.unref_file (thumbnail_file); + if (!is_empty_last_slide) { + canvas.window.current_file.file_collector.unref_file (thumbnail_file); + } foreach (var widget in canvas.get_children ()) { if (widget is CanvasItem && widget.visible) { @@ -73,6 +80,8 @@ public class Spice.Slide : Object { public Slide.empty (Spice.Window window) { this.save_data = Utils.get_json_object (EMPTY_SLIDE); + is_empty_last_slide = true; + canvas = new Spice.Canvas (window, save_data); load_data (); @@ -116,7 +125,6 @@ public class Spice.Slide : Object { preview.set_from_pixbuf (pixbuf.scale_simple (SlideList.WIDTH, SlideList.HEIGHT, Gdk.InterpType.BILINEAR)); } } else if (save_data.has_member ("thumbnail")) { - print ("Loading thumbnail file...\n"); var thumbnail_basename = save_data.get_string_member ("thumbnail"); if (canvas != null && thumbnail_basename != "") { var current_file = canvas.window.current_file; @@ -127,12 +135,12 @@ public class Spice.Slide : Object { } } - if (thumbnail_file == null && canvas != null) { - var current_file = canvas.window.current_file; - thumbnail_file = current_file.get_random_file_name (current_file.thumbnails_folder, "jpg"); - } + if (!is_empty_last_slide && canvas != null) { + if (thumbnail_file == null) { + var current_file = canvas.window.current_file; + thumbnail_file = current_file.get_random_file_name (current_file.thumbnails_folder, "jpg"); + } - if (canvas != null) { canvas.window.current_file.file_collector.ref_file (thumbnail_file); }