aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2023-08-24 20:18:26 +0200
committerfiaxh <git@lightrise.org>2023-09-24 19:51:33 +0200
commit9eafe4139d6b2c0cabe3c77a903d6ae931a26975 (patch)
tree7a1fa0a2a5fc25b9b8dfe2688a9f622fbd742d70
parent2fba24ccae13e832bd38ff9c7fea71c1a802603d (diff)
downloaddino-9eafe4139d6b2c0cabe3c77a903d6ae931a26975.tar.gz
dino-9eafe4139d6b2c0cabe3c77a903d6ae931a26975.zip
Fix build on some Vala compiler versions
See https://gitlab.gnome.org/GNOME/vala/-/issues/1474 and https://gitlab.gnome.org/GNOME/vala/-/issues/1478
-rw-r--r--libdino/CMakeLists.txt7
-rw-r--r--libdino/src/service/stream_interactor.vala5
-rw-r--r--main/CMakeLists.txt15
-rw-r--r--main/src/ui/util/helper.vala6
-rw-r--r--main/src/ui/widgets/avatar_picture.vala4
-rw-r--r--main/src/ui/widgets/fixed_ratio_picture.vala4
-rw-r--r--xmpp-vala/CMakeLists.txt7
-rw-r--r--xmpp-vala/src/core/module_flag.vala10
8 files changed, 54 insertions, 4 deletions
diff --git a/libdino/CMakeLists.txt b/libdino/CMakeLists.txt
index 3c184cfd..fc283417 100644
--- a/libdino/CMakeLists.txt
+++ b/libdino/CMakeLists.txt
@@ -6,6 +6,11 @@ find_packages(LIBDINO_PACKAGES REQUIRED
GObject
)
+set(LIBDINO_DEFINITIONS)
+if(LIBDINO_VERSION VERSION_EQUAL "0.56.11")
+ set(LIBDINO_DEFINITIONS ${LIBDINO_DEFINITIONS} VALA_0_56_11)
+endif()
+
vala_precompile(LIBDINO_VALA_C
SOURCES
src/application.vala
@@ -76,6 +81,8 @@ GENERATE_VAPI
dino
GENERATE_HEADER
dino
+DEFINITIONS
+ ${LIBDINO_DEFINITIONS}
)
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/exports/dino_i18n.h"
diff --git a/libdino/src/service/stream_interactor.vala b/libdino/src/service/stream_interactor.vala
index 192460d4..5d248327 100644
--- a/libdino/src/service/stream_interactor.vala
+++ b/libdino/src/service/stream_interactor.vala
@@ -89,7 +89,12 @@ public class ModuleIdentity<T> : Object {
}
public T? cast(StreamInteractionModule module) {
+#if VALA_0_56_11
+ // We can't typecheck due to compiler bug
+ return (T) module;
+#else
return module.get_type().is_a(typeof(T)) ? (T?) module : null;
+#endif
}
public bool matches(StreamInteractionModule module) {
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 7f85f7ae..4e408294 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -111,9 +111,24 @@ endif()
if(GTK4_VERSION VERSION_GREATER_EQUAL "4.8")
set(MAIN_DEFINITIONS ${MAIN_DEFINITIONS} GTK_4_8)
endif()
+if(GTK4_VERSION VERSION_GREATER_EQUAL "4.12")
+ set(MAIN_DEFINITIONS ${MAIN_DEFINITIONS} GTK_4_12)
+endif()
if(Adwaita_VERSION VERSION_GREATER_EQUAL "1.2")
set(MAIN_DEFINITIONS ${MAIN_DEFINITIONS} Adw_1_2)
endif()
+if(VALA_VERSION VERSION_GREATER_EQUAL "0.56.5" AND VALA_VERSION VERSION_LESS "0.58")
+ set(MAIN_DEFINITIONS ${MAIN_DEFINITIONS} VALA_0_56_GREATER_5)
+endif()
+if(VALA_VERSION VERSION_GREATER_EQUAL "0.56.11" AND VALA_VERSION VERSION_LESS "0.58")
+ set(MAIN_DEFINITIONS ${MAIN_DEFINITIONS} VALA_0_56_GREATER_11)
+endif()
+if(VALA_VERSION VERSION_EQUAL "0.56.11")
+ set(MAIN_DEFINITIONS ${MAIN_DEFINITIONS} VALA_0_56_11)
+endif()
+if(VALA_VERSION VERSION_EQUAL "0.56.12")
+ set(MAIN_DEFINITIONS ${MAIN_DEFINITIONS} VALA_0_56_12)
+endif()
vala_precompile(MAIN_VALA_C
SOURCES
diff --git a/main/src/ui/util/helper.vala b/main/src/ui/util/helper.vala
index d6da72dd..63288fc2 100644
--- a/main/src/ui/util/helper.vala
+++ b/main/src/ui/util/helper.vala
@@ -103,7 +103,13 @@ private const string force_color_css = "%s { color: %s; }";
public static Gtk.CssProvider force_css(Gtk.Widget widget, string css) {
var p = new Gtk.CssProvider();
try {
+#if GTK_4_12 && (VALA_0_56_GREATER_11 || VALA_0_58)
+ p.load_from_string(css);
+#elif (VALA_0_56_11 || VALA_0_56_12)
+ p.load_from_data(css, css.length);
+#else
p.load_from_data(css.data);
+#endif
widget.get_style_context().add_provider(p, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
} catch (GLib.Error err) {
// handle err
diff --git a/main/src/ui/widgets/avatar_picture.vala b/main/src/ui/widgets/avatar_picture.vala
index e632413c..fb254915 100644
--- a/main/src/ui/widgets/avatar_picture.vala
+++ b/main/src/ui/widgets/avatar_picture.vala
@@ -454,7 +454,7 @@ public class Dino.Ui.AvatarPicture : Gtk.Widget {
label.insert_after(this, null);
label.attributes = new Pango.AttrList();
label.attributes.insert(Pango.attr_foreground_new(uint16.MAX, uint16.MAX, uint16.MAX));
-#if GTK_4_8 && VALA_0_58
+#if GTK_4_8 && (VALA_0_56_GREATER_5 || VALA_0_58)
picture.content_fit = Gtk.ContentFit.COVER;
#elif GTK_4_8
picture.@set("content-fit", 2);
@@ -516,4 +516,4 @@ public class Dino.Ui.AvatarPicture : Gtk.Widget {
base.snapshot(snapshot);
}
}
-} \ No newline at end of file
+}
diff --git a/main/src/ui/widgets/fixed_ratio_picture.vala b/main/src/ui/widgets/fixed_ratio_picture.vala
index 79c60141..3e83ec0c 100644
--- a/main/src/ui/widgets/fixed_ratio_picture.vala
+++ b/main/src/ui/widgets/fixed_ratio_picture.vala
@@ -8,7 +8,7 @@ class Dino.Ui.FixedRatioPicture : Gtk.Widget {
public int max_height { get; set; default = int.MAX; }
public File file { get { return inner.file; } set { inner.file = value; } }
public Gdk.Paintable paintable { get { return inner.paintable; } set { inner.paintable = value; } }
-#if GTK_4_8 && VALA_0_58
+#if GTK_4_8 && (VALA_0_56_GREATER_5 || VALA_0_58)
public Gtk.ContentFit content_fit { get { return inner.content_fit; } set { inner.content_fit = value; } }
#endif
private Gtk.Picture inner = new Gtk.Picture();
@@ -85,4 +85,4 @@ class Dino.Ui.FixedRatioPicture : Gtk.Widget {
inner.unparent();
base.dispose();
}
-} \ No newline at end of file
+}
diff --git a/xmpp-vala/CMakeLists.txt b/xmpp-vala/CMakeLists.txt
index 39c090fe..cfbc0aaf 100644
--- a/xmpp-vala/CMakeLists.txt
+++ b/xmpp-vala/CMakeLists.txt
@@ -9,6 +9,11 @@ find_packages(ENGINE_PACKAGES REQUIRED
set(ENGINE_EXTRA_OPTIONS ${MAIN_EXTRA_OPTIONS} --vapidir=${CMAKE_CURRENT_SOURCE_DIR}/vapi)
+set(ENGINE_DEFINITIONS)
+if(VALA_VERSION VERSION_EQUAL "0.56.11")
+ set(ENGINE_DEFINITIONS ${ENGINE_DEFINITIONS} VALA_0_56_11)
+endif()
+
vala_precompile(ENGINE_VALA_C
SOURCES
"src/core/direct_tls_xmpp_stream.vala"
@@ -152,6 +157,8 @@ CUSTOM_VAPIS
"${CMAKE_CURRENT_SOURCE_DIR}/src/glib_fixes.vapi"
OPTIONS
${ENGINE_EXTRA_OPTIONS}
+DEFINITIONS
+ ${ENGINE_DEFINITIONS}
)
add_custom_target(xmpp-vala-vapi
diff --git a/xmpp-vala/src/core/module_flag.vala b/xmpp-vala/src/core/module_flag.vala
index 95547852..76ae4dc1 100644
--- a/xmpp-vala/src/core/module_flag.vala
+++ b/xmpp-vala/src/core/module_flag.vala
@@ -10,7 +10,12 @@ namespace Xmpp {
}
public T? cast(XmppStreamFlag flag) {
+#if VALA_0_56_11
+ // We can't typecheck due to compiler bug
+ return (T) module;
+#else
return flag.get_type().is_a(typeof(T)) ? (T?) flag : null;
+#endif
}
public bool matches(XmppStreamFlag module) {
@@ -34,7 +39,12 @@ namespace Xmpp {
}
public T? cast(XmppStreamModule module) {
+#if VALA_0_56_11
+ // We can't typecheck due to compiler bug
+ return (T) module;
+#else
return module.get_type().is_a(typeof(T)) ? (T?) module : null;
+#endif
}
public bool matches(XmppStreamModule module) {