diff options
author | Marvin W <git@larma.de> | 2025-02-16 20:51:28 +0100 |
---|---|---|
committer | Marvin W <git@larma.de> | 2025-02-22 11:27:48 +0100 |
commit | efe39b8ea008cea3106fcc268d29d6f2bdf3c76e (patch) | |
tree | 2eb7a9f63dc751a2f31215598d07f6f564143740 /main | |
parent | 21869c92a214b9be73b998375e166e01b2d21ff7 (diff) | |
download | dino-efe39b8ea008cea3106fcc268d29d6f2bdf3c76e.tar.gz dino-efe39b8ea008cea3106fcc268d29d6f2bdf3c76e.zip |
Fix compatibility with GTK 4.17+
Diffstat (limited to 'main')
5 files changed, 25 insertions, 19 deletions
diff --git a/main/data/conversation_content_view/view.ui b/main/data/conversation_content_view/view.ui index 3415e6c9..a3a97569 100644 --- a/main/data/conversation_content_view/view.ui +++ b/main/data/conversation_content_view/view.ui @@ -15,14 +15,10 @@ <child> <object class="GtkOverlay"> <child> - <object class="GtkBox" id="main_event_box"> - <child> - <object class="DinoUiSizeRequestBox" id="main"> - <property name="margin-bottom">15</property> - <property name="orientation">vertical</property> - <property name="size-request-mode">height-for-width</property> - </object> - </child> + <object class="DinoUiSizeRequestBox" id="main"> + <property name="margin-bottom">15</property> + <property name="orientation">vertical</property> + <property name="size-request-mode">height-for-width</property> </object> </child> <child type="overlay"> 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); } } diff --git a/main/src/ui/widgets/fixed_ratio_picture.vala b/main/src/ui/widgets/fixed_ratio_picture.vala index 3e83ec0c..ac68ff3e 100644 --- a/main/src/ui/widgets/fixed_ratio_picture.vala +++ b/main/src/ui/widgets/fixed_ratio_picture.vala @@ -62,12 +62,12 @@ class Dino.Ui.FixedRatioPicture : Gtk.Widget { measure_target_size(out width, out height); if (orientation == Orientation.HORIZONTAL) { minimum = min_width; - natural = width; + natural = int.max(min_width, int.min(width, max_width)); } else if (for_size == -1) { minimum = min_height; - natural = height; + natural = int.max(min_height, int.min(height, max_height)); } else { - minimum = natural = height * for_size / width; + minimum = natural = int.max(min_height, int.min(height * for_size / width, max_height)); } } |