aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/conversation_content_view')
-rw-r--r--main/src/ui/conversation_content_view/file_image_widget.vala18
-rw-r--r--main/src/ui/conversation_content_view/file_widget.vala9
2 files changed, 21 insertions, 6 deletions
diff --git a/main/src/ui/conversation_content_view/file_image_widget.vala b/main/src/ui/conversation_content_view/file_image_widget.vala
index 6efe2d58..f39dd30a 100644
--- a/main/src/ui/conversation_content_view/file_image_widget.vala
+++ b/main/src/ui/conversation_content_view/file_image_widget.vala
@@ -154,10 +154,20 @@ public class FileImageWidget : Widget {
public async void load_from_file(File file, string file_name) throws GLib.Error {
FixedRatioPicture image = new FixedRatioPicture() { min_width=100, min_height=100, max_width=600, max_height=300 };
- // Work-around because Gtk.Picture does not apply the orientation itself
- Gdk.Pixbuf? pixbuf = new Pixbuf.from_file(file.get_path());
- pixbuf = pixbuf.apply_embedded_orientation();
- image.paintable = Texture.for_pixbuf(pixbuf);
+ FileInputStream file_stream = null;
+ try {
+ file_stream = file.read();
+ // Work-around because Gtk.Picture does not apply the orientation itself
+ Gdk.Pixbuf? pixbuf = new Pixbuf.from_stream(file_stream);
+ pixbuf = pixbuf.apply_embedded_orientation();
+ image.paintable = Texture.for_pixbuf(pixbuf);
+ } finally {
+ try {
+ if (file_stream != null) file_stream.close();
+ } catch (Error e) {
+ // Ignore
+ }
+ }
stack.add_child(image);
stack.set_visible_child(image);
diff --git a/main/src/ui/conversation_content_view/file_widget.vala b/main/src/ui/conversation_content_view/file_widget.vala
index f031db21..0e3cee03 100644
--- a/main/src/ui/conversation_content_view/file_widget.vala
+++ b/main/src/ui/conversation_content_view/file_widget.vala
@@ -169,8 +169,13 @@ public class FileWidgetController : Object {
save_dialog.set_current_name(file_transfer.file_name);
save_dialog.response.connect(() => {
- try{
- GLib.File.new_for_uri(file_transfer.get_file().get_uri()).copy(save_dialog.get_file(), GLib.FileCopyFlags.OVERWRITE, null);
+ File? target_file = save_dialog.get_file();
+ if (target_file == null) {
+ warning("No file returned from save dialog.");
+ return;
+ }
+ try {
+ file_transfer.get_file().copy(save_dialog.get_file(), GLib.FileCopyFlags.OVERWRITE, null);
} catch (Error err) {
warning("Failed copy file %s - %s", file_transfer.get_file().get_uri(), err.message);
}