aboutsummaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2025-02-16 20:51:28 +0100
committerMarvin W <git@larma.de>2025-02-22 11:27:48 +0100
commitefe39b8ea008cea3106fcc268d29d6f2bdf3c76e (patch)
tree2eb7a9f63dc751a2f31215598d07f6f564143740 /main
parent21869c92a214b9be73b998375e166e01b2d21ff7 (diff)
downloaddino-efe39b8ea008cea3106fcc268d29d6f2bdf3c76e.tar.gz
dino-efe39b8ea008cea3106fcc268d29d6f2bdf3c76e.zip
Fix compatibility with GTK 4.17+
Diffstat (limited to 'main')
-rw-r--r--main/data/conversation_content_view/view.ui12
-rw-r--r--main/src/ui/conversation_content_view/conversation_view.vala3
-rw-r--r--main/src/ui/conversation_content_view/file_image_widget.vala13
-rw-r--r--main/src/ui/conversation_content_view/file_widget.vala10
-rw-r--r--main/src/ui/widgets/fixed_ratio_picture.vala6
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));
}
}