diff options
Diffstat (limited to 'main/src/ui/conversation_content_view')
3 files changed, 18 insertions, 8 deletions
diff --git a/main/src/ui/conversation_content_view/conversation_view.vala b/main/src/ui/conversation_content_view/conversation_view.vala index 27472585..f157a748 100644 --- a/main/src/ui/conversation_content_view/conversation_view.vala +++ b/main/src/ui/conversation_content_view/conversation_view.vala @@ -18,7 +18,7 @@ public class ConversationView : Widget, Plugins.ConversationItemCollection, Plug [GtkChild] private unowned Box message_menu_box; [GtkChild] private unowned Box notifications; [GtkChild] private unowned Box main; - [GtkChild] private unowned Box main_wrap_box; + [GtkChild] private unowned Widget main_wrap_box; private HashMap<string, Widget> action_buttons = new HashMap<string, Widget>(); private Gee.List<Dino.Plugins.MessageAction>? message_actions = null; @@ -46,6 +46,7 @@ public class ConversationView : Widget, Plugins.ConversationItemCollection, Plug construct { this.layout_manager = new BinLayout(); + main_wrap_box.layout_manager = new BinLayout(); // Setup all message menu buttons var correction_button = new Button() { name="correction" }; 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 1c8d4c02..a7a7bcc0 100644 --- a/main/src/ui/conversation_content_view/file_image_widget.vala +++ b/main/src/ui/conversation_content_view/file_image_widget.vala @@ -7,7 +7,7 @@ using Dino.Entities; namespace Dino.Ui { -public class FileImageWidget : Box { +public class FileImageWidget : Widget { enum State { EMPTY, PREVIEW, @@ -26,6 +26,10 @@ public class FileImageWidget : Box { private FileTransmissionProgress transmission_progress = new FileTransmissionProgress() { halign=Align.CENTER, valign=Align.CENTER, visible=false }; + construct { + layout_manager = new BinLayout(); + } + public FileImageWidget(int MAX_WIDTH=600, int MAX_HEIGHT=300) { this.halign = Align.START; @@ -54,7 +58,7 @@ public class FileImageWidget : Box { overlay.add_overlay(image_overlay_toolbar); overlay.set_clip_overlay(image_overlay_toolbar, true); - this.append(overlay); + overlay.insert_after(this, null); GestureClick gesture_click_controller = new GestureClick(); gesture_click_controller.button = 1; // listen for left clicks @@ -260,6 +264,11 @@ public class FileImageWidget : Box { } return false; } + + public override void dispose() { + if (overlay != null && overlay.parent != null) overlay.unparent(); + base.dispose(); + } } } diff --git a/main/src/ui/conversation_content_view/file_widget.vala b/main/src/ui/conversation_content_view/file_widget.vala index 1cf84eb4..2b62f769 100644 --- a/main/src/ui/conversation_content_view/file_widget.vala +++ b/main/src/ui/conversation_content_view/file_widget.vala @@ -39,7 +39,7 @@ public class FileMetaItem : ConversationSummary.ContentMetaItem { } } -public class FileWidget : SizeRequestBox { +public class FileWidget : SizeRequestBin { enum State { IMAGE, @@ -102,22 +102,22 @@ public class FileWidget : SizeRequestBox { // If the widget changed in the meanwhile, stop if (content != content_bak) return; - if (content != null) this.remove(content); + if (content != null) content.unparent(); content = file_image_widget; state = State.IMAGE; - this.append(content); + content.insert_after(this, null); return; } catch (Error e) { } } if (!show_image && state != State.DEFAULT) { - if (content != null) this.remove(content); + if (content != null) content.unparent(); FileDefaultWidget default_file_widget = new FileDefaultWidget(); default_widget_controller = new FileDefaultWidgetController(default_file_widget); default_widget_controller.set_file_transfer(file_transfer); content = default_file_widget; this.state = State.DEFAULT; - this.append(content); + content.insert_after(this, null); } } |