Compare commits

..

53 commits

Author SHA1 Message Date
Mamoru TASAKA
730c3436c1 3.6.2 2025-12-23 17:49:09 +09:00
Mamoru TASAKA
83ecd1a327 3.6.1 2025-11-04 16:48:28 +09:00
Mamoru TASAKA
f2ab261368 Upstream patch for warning for disabling zoom effect 2025-10-17 14:10:17 +09:00
Mamoru TASAKA
a6a67c59e7 fix plug-ins requirement 2025-10-01 17:45:12 +09:00
Mamoru TASAKA
51c75f1280 3.6.0 2025-10-01 17:38:14 +09:00
Mamoru TASAKA
8e75dec9ec update to the latest git 2025-09-25 10:46:26 +09:00
Mamoru TASAKA
761745f4b8 Update to the latest git (20250907git2cd4d36) 2025-09-08 22:10:15 +09:00
Mamoru TASAKA
77599823c8 update to the latest git 2025-09-01 17:19:57 +09:00
Mamoru TASAKA
5085fdfc00 Update to the latest git (20250822gitf3de00e) 2025-08-24 22:47:03 +09:00
Mamoru TASAKA
e8aaed4da1 Update to the latest git (20250812gitba992c4) 2025-08-12 16:06:21 +09:00
Mamoru TASAKA
018ee0c7b0 Update to the latest git (20250729gitc86686d) 2025-07-29 16:26:58 +09:00
Mamoru TASAKA
afef562619 Update to the latest git (20250716git033945c) 2025-07-25 14:59:18 +09:00
Fedora Release Engineering
6d224c4c7c Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 18:02:31 +00:00
Mamoru TASAKA
a8798f4fa0 Update to the latest git (20250714gite852048) 2025-07-14 16:56:01 +09:00
Mamoru TASAKA
0bd2de7f09 Update to the latest git (20250623git6b5d476) 2025-06-30 17:24:49 +09:00
Mamoru TASAKA
7bdaf16739 don't try systemd-notify on buildroot 2025-06-19 15:03:23 +09:00
Mamoru TASAKA
a25f2da55e Update to the latest git (20250618git89864a0) 2025-06-19 14:38:01 +09:00
Mamoru TASAKA
aa1412ae55 Update to the latest git (20250309gita77d61b) 2025-03-13 14:11:15 +09:00
Mamoru TASAKA
d5ddf31894 update to the latest git 2025-03-02 23:11:35 +09:00
Mamoru TASAKA
9c1ff8bbe0 update to the latest git 2025-02-18 22:20:34 +09:00
Mamoru TASAKA
2b3aebac06 update to the latest git 2025-02-14 14:26:39 +09:00
Mamoru TASAKA
9807b166b9 update to the latest git 2025-02-13 14:38:30 +09:00
Mamoru TASAKA
84bcc20f2a 20250120gitd2fd789 2025-01-30 16:11:24 +09:00
Mamoru TASAKA
c636402b94 Update to the latest git (20250118gitb0f5d5c) 2025-01-19 16:48:02 +09:00
Fedora Release Engineering
39eb463a87 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 13:11:52 +00:00
Mamoru TASAKA
cd179e286c Update to the latest git (20241218gitf852640) 2024-12-29 15:20:03 +09:00
Mamoru TASAKA
0402e8bfb9 Update to the latest git (20241216git4f36d13) 2024-12-17 21:43:53 +09:00
Mamoru TASAKA
dc58fc07e2 Update to the latest git (20241207gitea4bd97) 2024-12-08 16:34:06 +09:00
Mamoru TASAKA
0792ce0a3e Update to the latest git (20241118git575a251) 2024-11-19 15:54:04 +09:00
Mamoru TASAKA
00c1a9d72a Update to the latest git (20241024git9f9421e) 2024-10-24 09:33:46 +09:00
Mamoru TASAKA
666521e37e limit depth to 1 2024-10-24 09:15:56 +09:00
Mamoru TASAKA
c987c51512 Update to the latest git (20241016gitea5d37e) 2024-10-20 21:34:21 +09:00
Mamoru TASAKA
27f1da0ed7 Update to the latest git (20241013git0324720) 2024-10-14 14:59:28 +09:00
Mamoru TASAKA
fd4cd8b547 again update 2024-10-07 08:29:03 +09:00
Mamoru TASAKA
3fd8daae51 again update 2024-10-07 08:26:49 +09:00
Mamoru TASAKA
3b13ad5992 Update to the latest git (20241007git70394cf)
Update to the latest git (20241007git70394cf)
Update to the latest git (20241007git70394cf)
Update to the latest git (20241007git70394cf)
2024-10-07 07:06:23 +09:00
Mamoru TASAKA
357f41586d Update to the latest git (20240926git7b3ac7f) 2024-09-26 11:58:36 +09:00
Mamoru TASAKA
25f3c231af keep line number for modifying source for fedora 2024-09-23 16:42:21 +09:00
Mamoru TASAKA
d900528feb Update to the latest git (20240923gitd7e4090) 2024-09-23 16:32:31 +09:00
Mamoru TASAKA
2590446573 kill sanitizer 2024-09-18 15:51:42 +09:00
Mamoru TASAKA
a178948725 Update to the latest git (20240915git1458bc8) 2024-09-18 15:50:09 +09:00
Mamoru TASAKA
0bd51dbc02 Update to the latest git (20240822gitb196136)
Update to the latest git (20240822gitb196136)
Update to the latest git (20240822gitb196136)
Update to the latest git (20240822gitb196136)
2024-08-22 22:38:37 +09:00
Mamoru TASAKA
5792eb6b3b Update to the latest git (20240805git23c0be5) 2024-08-07 16:46:57 +09:00
Fedora Release Engineering
ad129ac3a6 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-17 18:51:53 +00:00
Mamoru TASAKA
cca444fd40 Update to the latest git (20240505git13fb151)
Enable Wayfire IPC support
2024-05-05 14:08:37 +09:00
Mamoru TASAKA
d3c61565f5 Update to latest git (20240501git1f31686) 2024-05-04 22:49:19 +09:00
Mamoru TASAKA
2549f2fe5f SPDX confirmation 2024-03-01 16:41:40 +09:00
Mamoru TASAKA
d20a934463 Update to 3.5.0 2024-02-26 20:58:23 +09:00
Fedora Release Engineering
051ad8afe8 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-23 01:07:21 +00:00
Fedora Release Engineering
ce1d5d0184 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-19 14:57:49 +00:00
Fedora Release Engineering
f9888090a2 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 15:09:31 +00:00
Mamoru TASAKA
d5053e5d73 Pass -r option to xargs because new rpm creates empty directory 2023-05-29 08:50:16 +09:00
Mamoru TASAKA
597aa45a9c use baserelease 2023-03-24 16:28:24 +09:00
6 changed files with 262 additions and 358 deletions

6
.gitignore vendored
View file

@ -1,5 +1 @@
cairo-dock-sources-svn1527_trunk.tar.bz2
/cairo-dock-fedora-3.4.0.tar.gz
/cairo-dock-fedora-3.4.1.tar.gz
/cairo-dock-fedora-3.4.1-20201103git0836f5d.tar.gz
/cairo-dock-fedora-3.4.1-20210327git6c569e6.tar.gz
/cairo-dock-fedora-*.tar.gz

View file

@ -1,327 +0,0 @@
From 275fa02a15ebdb75b07c100de9395392f9543300 Mon Sep 17 00:00:00 2001
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
Date: Mon, 20 Sep 2021 16:22:40 +0900
Subject: [PATCH] [LP1943052] wayland-manager: allocate new wl_output
information by checking id
With KDE Plasma Wayland session, after calling wl_output_add_listener()
and waiting for wl_output information with wl_display_roundtrip(),
wl_output::mode info is returned before wl_output::geometry info.
Current cairo-dock-wayland-manager logic expects the opposite order, and
on KDE session this causes cairo-dock segfault.
To avoid this, when collecting wl_output information, we should also check
"id" member of global registry object associated with that wl_output info,
check if the "id" is already the duplicates of the old infos.
Then if the "id" is new one, then allocate the new buffer to register new
wl_output information beforehand, then call wl_display_roundtrip() to gain
wl_output::geometry or wl_output::output information.
---
src/gldit/cairo-dock-desktop-manager.h | 13 +-
src/implementations/cairo-dock-X-utilities.c | 20 +--
.../cairo-dock-wayland-manager.c | 134 +++++++++++++++---
3 files changed, 139 insertions(+), 28 deletions(-)
diff --git a/src/gldit/cairo-dock-desktop-manager.h b/src/gldit/cairo-dock-desktop-manager.h
index b8ecb0d0..2774913b 100644
--- a/src/gldit/cairo-dock-desktop-manager.h
+++ b/src/gldit/cairo-dock-desktop-manager.h
@@ -59,10 +59,21 @@ typedef enum {
NB_NOTIFICATIONS_DESKTOP
} CairoDesktopNotifications;
+typedef struct GldiWlOutput {
+ struct wl_output *output;
+ uint32_t id, ver;
+} GldiWlOutput;
+
+typedef struct GldiScreenInfo {
+ int x, y;
+ int width, height;
+ GldiWlOutput wloutput; // wl_registry object identifier (in wayland session)
+} GldiScreenInfo;
+
// data
struct _GldiDesktopGeometry {
int iNbScreens;
- GtkAllocation *pScreens; // liste of all screen devices.
+ GldiScreenInfo *pScreens; // liste of all screen devices.
GtkAllocation Xscreen; // logical screen, possibly made of several screen devices.
int iNbDesktops;
int iNbViewportX, iNbViewportY;
diff --git a/src/implementations/cairo-dock-X-utilities.c b/src/implementations/cairo-dock-X-utilities.c
index 26217dab..9d39e017 100644
--- a/src/implementations/cairo-dock-X-utilities.c
+++ b/src/implementations/cairo-dock-X-utilities.c
@@ -89,7 +89,7 @@ static Atom s_aUtf8String;
static Atom s_aString;
static unsigned char error_code = Success;
-static GtkAllocation *_get_screens_geometry (int *pNbScreens);
+static GldiScreenInfo *_get_screens_geometry (int *pNbScreens);
static gboolean cairo_dock_support_X_extension (void);
@@ -185,14 +185,14 @@ unsigned char cairo_dock_get_X_error_code (void)
return error_code;
}
-static GtkAllocation *_get_screens_geometry (int *pNbScreens)
+static GldiScreenInfo *_get_screens_geometry (int *pNbScreens)
{
- GtkAllocation *pScreens = NULL;
- GtkAllocation *pScreen;
+ GldiScreenInfo *pScreens = NULL;
+ GldiScreenInfo *pScreen;
int iNbScreens = 0;
/*Unit Tests
iNbScreens = 2;
- pScreens = g_new0 (GtkAllocation, iNbScreens);
+ pScreens = g_new0 (GldiScreenInfo, iNbScreens);
pScreens[0].x = 0;
pScreens[0].y = 0;
pScreens[0].width = 1000;
@@ -213,7 +213,7 @@ static GtkAllocation *_get_screens_geometry (int *pNbScreens)
{
int n = res->ncrtc;
cd_debug (" number of screen(s): %d", n);
- pScreens = g_new0 (GtkAllocation, n);
+ pScreens = g_new0 (GldiScreenInfo, n);
int i;
for (i = 0; i < n; i++)
{
@@ -256,7 +256,7 @@ static GtkAllocation *_get_screens_geometry (int *pNbScreens)
if (scr != NULL)
{
cd_debug (" number of screen(s): %d", n);
- pScreens = g_new0 (GtkAllocation, n);
+ pScreens = g_new0 (GldiScreenInfo, n);
int i;
for (i = 0; i < n; i++)
{
@@ -286,7 +286,7 @@ static GtkAllocation *_get_screens_geometry (int *pNbScreens)
#endif
iNbScreens = 1;
- pScreens = g_new0 (GtkAllocation, iNbScreens);
+ pScreens = g_new0 (GldiScreenInfo, iNbScreens);
pScreen = &pScreens[0];
pScreen->x = 0;
pScreen->y = 0;
@@ -335,7 +335,7 @@ gboolean cairo_dock_update_screen_geometry (void)
}
// get the size and position of each screen (they could have changed even though the X screen has not changed, for instance if you swap 2 screens).
- GtkAllocation *pScreens = g_desktopGeometry.pScreens;
+ GldiScreenInfo *pScreens = g_desktopGeometry.pScreens;
int iNbScreens = g_desktopGeometry.iNbScreens;
g_desktopGeometry.pScreens = _get_screens_geometry (&g_desktopGeometry.iNbScreens);
@@ -347,7 +347,7 @@ gboolean cairo_dock_update_screen_geometry (void)
int i;
for (i = 0; i < MIN (iNbScreens, g_desktopGeometry.iNbScreens); i ++)
{
- if (memcmp (&pScreens[i], &g_desktopGeometry.pScreens[i], sizeof (GtkAllocation)) != 0)
+ if (memcmp (&pScreens[i], &g_desktopGeometry.pScreens[i], sizeof (GldiScreenInfo)) != 0)
{
bNewSize = TRUE;
break;
diff --git a/src/implementations/cairo-dock-wayland-manager.c b/src/implementations/cairo-dock-wayland-manager.c
index 9ce8d505..f9732133 100644
--- a/src/implementations/cairo-dock-wayland-manager.c
+++ b/src/implementations/cairo-dock-wayland-manager.c
@@ -73,31 +73,97 @@ struct desktop
};
static gboolean s_bInitializing = TRUE; // each time a callback is called on startup, it will set this to TRUE, and we'll make a roundtrip to the server until no callback is called.
-static void _output_geometry_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_output *wl_output,
+static int get_position_gldi_screeninfo_by_id (GldiScreenInfo *array_screens, int iNbScreens, uint32_t obj_id)
+{
+ int i_screen;
+ GldiScreenInfo *p_screen = array_screens;
+ for (i_screen = 0; i_screen < iNbScreens; i_screen++)
+ {
+ if (p_screen->wloutput.id == obj_id)
+ {
+ return i_screen;
+ }
+ p_screen++;
+ }
+
+ return -1;
+}
+
+static GldiScreenInfo *append_gldi_screeninfo(GldiScreenInfo **ref_array_screens, int *ref_iNbScreens)
+{
+ int iNbScreens_old = *ref_iNbScreens;
+ int iNbScreens_new = iNbScreens_old + 1;
+ GldiScreenInfo *p_new_screeninfo;
+
+ if (!*ref_array_screens)
+ *ref_array_screens = g_new(GldiScreenInfo, 1);
+ else
+ *ref_array_screens = g_realloc(*ref_array_screens, iNbScreens_new * sizeof (**ref_array_screens));
+ if (!*ref_array_screens) abort();
+
+ p_new_screeninfo = *ref_array_screens + (iNbScreens_new - 1);
+ *ref_iNbScreens = iNbScreens_new;
+
+ return p_new_screeninfo;
+}
+
+static void remove_gldi_screeninfo_by_id(GldiScreenInfo **ref_array_screens, int *ref_iNbScreens, uint32_t obj_id)
+{
+ int iNbScreens_old = *ref_iNbScreens;
+ int pos_screen;
+ GldiScreenInfo *p_screen;
+
+ if (iNbScreens_old <= 1) return; // Keep at least one information for now
+
+ pos_screen = get_position_gldi_screeninfo_by_id(*ref_array_screens, *ref_iNbScreens, obj_id);
+ if (pos_screen < 0) return;
+
+ p_screen = *ref_array_screens + pos_screen;
+#ifdef WL_OUTPUT_RELEASE_SINCE_VERSION
+ if (p_screen->wloutput.id >= WL_OUTPUT_RELEASE_SINCE_VERSION)
+ {
+ wl_output_release(p_screen->wloutput.output);
+ } else
+#endif
+ {
+ wl_output_destroy(p_screen->wloutput.output);
+ }
+
+ if (iNbScreens_old > pos_screen + 1)
+ {
+ memmove(
+ p_screen, p_screen + 1,
+ (iNbScreens_old - pos_screen - 1) * sizeof (**ref_array_screens)
+ );
+ }
+
+ (*ref_iNbScreens)--;
+}
+
+static void _output_geometry_cb (void *data, G_GNUC_UNUSED struct wl_output *wl_output,
int32_t x, int32_t y,
G_GNUC_UNUSED int32_t physical_width, G_GNUC_UNUSED int32_t physical_height,
G_GNUC_UNUSED int32_t subpixel, G_GNUC_UNUSED const char *make, G_GNUC_UNUSED const char *model, G_GNUC_UNUSED int32_t output_transform)
{
+ GldiScreenInfo *p_screeninfo = (GldiScreenInfo *)data;
cd_debug ("Geometry: %d;%d", x, y);
- g_desktopGeometry.iNbScreens ++;
- if (!g_desktopGeometry.pScreens)
- g_desktopGeometry.pScreens = g_new0 (GtkAllocation, 1);
- else
- g_desktopGeometry.pScreens = g_realloc (g_desktopGeometry.pScreens, g_desktopGeometry.iNbScreens * sizeof(GtkAllocation));
+ cd_debug ("id: %u", (unsigned int)p_screeninfo->wloutput.id);
- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].x = x;
- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].y = y;
+ p_screeninfo->x = x;
+ p_screeninfo->y = y;
s_bInitializing = TRUE;
}
-static void _output_mode_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_output *wl_output,
+static void _output_mode_cb (void *data, G_GNUC_UNUSED struct wl_output *wl_output,
uint32_t flags, int32_t width, int32_t height, G_GNUC_UNUSED int32_t refresh)
{
+ GldiScreenInfo *p_screeninfo = (GldiScreenInfo *)data;
cd_debug ("Output mode: %dx%d, %d", width, height, flags);
+ cd_debug ("id: %u", (unsigned int)p_screeninfo->wloutput.id);
if (flags & WL_OUTPUT_MODE_CURRENT) // not the current one -> don't bother
{
- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].width = width;
- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].height = height;
+ p_screeninfo->width = width;
+ p_screeninfo->height = height;
g_desktopGeometry.Xscreen.width = width;
g_desktopGeometry.Xscreen.height = height;
}
@@ -124,14 +190,29 @@ static void _output_scale_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_
static const struct wl_output_listener output_listener = {
_output_geometry_cb,
- _output_mode_cb,
+ _output_mode_cb
+#ifdef WL_OUTPUT_SCALE_SINCE_VERSION
+ ,
_output_done_cb,
_output_scale_cb
+#endif
};
-static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *registry, uint32_t id, const char *interface, G_GNUC_UNUSED uint32_t version)
+static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *registry, uint32_t id, const char *interface, uint32_t version)
{
- cd_debug ("got a new global object, instance of %s, id=%d", interface, id);
+ cd_debug ("got a new global object, instance of %s, id=%d, version=%u", interface, id, version);
+ uint32_t wl_output_version =
+#if defined(WL_OUTPUT_RELEASE_SINCE_VERSION)
+ WL_OUTPUT_RELEASE_SINCE_VERSION;
+#elif defined(WL_OUTPUT_SCALE_SINCE_VERSION)
+ WL_OUTPUT_SCALE_SINCE_VERSION;
+#else
+ 1;
+#endif
+ // server side may not support newer version, in such case suppress the version to use
+ if (wl_output_version > version)
+ wl_output_version = version;
+
if (!strcmp (interface, "wl_shell"))
{
// this is the global that should give us info and signals about the desktop, but currently it's pretty useless ...
@@ -142,10 +223,26 @@ static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *r
struct wl_output *output = wl_registry_bind (registry,
id,
&wl_output_interface,
- 1);
+ wl_output_version);
+
+ GldiScreenInfo *p_screeninfo = NULL;
+ int screen_num = get_position_gldi_screeninfo_by_id(g_desktopGeometry.pScreens, g_desktopGeometry.iNbScreens, id);
+ if (screen_num >= 0)
+ p_screeninfo = g_desktopGeometry.pScreens + screen_num;
+ else
+ p_screeninfo = append_gldi_screeninfo(&g_desktopGeometry.pScreens, &g_desktopGeometry.iNbScreens);
+
+ {
+ // register new wl_output
+ GldiWlOutput *p_wloutput = &p_screeninfo->wloutput;
+ p_wloutput->output = output;
+ p_wloutput->id = id;
+ p_wloutput->ver = wl_output_version;
+ }
+
wl_output_add_listener (output,
&output_listener,
- NULL);
+ p_screeninfo);
}
s_bInitializing = TRUE;
}
@@ -153,7 +250,7 @@ static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *r
static void _registry_global_remove_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_registry *registry, uint32_t id)
{
cd_debug ("got a global object has disappeared: id=%d", id);
- /// TODO: find it and destroy it...
+ remove_gldi_screeninfo_by_id(&g_desktopGeometry.pScreens, &g_desktopGeometry.iNbScreens, id);
/// TODO: and if it was a wl_output for instance, update the desktop geometry...
@@ -171,6 +268,9 @@ static void init (void)
s_pDisplay = wl_display_connect (NULL);
g_desktopGeometry.iNbDesktops = g_desktopGeometry.iNbViewportX = g_desktopGeometry.iNbViewportY = 1;
+ // Explicitly initialize below for readability
+ g_desktopGeometry.pScreens = NULL;
+ g_desktopGeometry.iNbScreens = 0;
struct wl_registry *registry = wl_display_get_registry (s_pDisplay);
--
2.31.1

View file

@ -5,7 +5,7 @@ set -x
umask 0022
VERSION=${VERSION:-3.4.0}
VERSION=${VERSION:-3.5.0}
VERSION_PARENT=${VERSION%.[0-9]}
@ -29,9 +29,9 @@ if [ "x${USE_GIT}" != "x" ] ; then
git clone --depth 1 ${GIT_URL}
cd ${REPONAME}
GITDATE=$(git log | sed -n -e 's|^Date:[ \t]*||p' | sed -e 's| \([+-][0-9][0-9]*\)$| UTC\1|')
GITDATE=$(git log -1 | sed -n -e 's|^Date:[ \t]*||p' | sed -e 's| \([+-][0-9][0-9]*\)$| UTC\1|')
GITDAME_B="$(date -d "${GITDATE}" '+%Y%m%d')"
GITHASH="$(git log | sed -n -e 's|^commit[ \t]||p')"
GITHASH="$(git log -1 | sed -n -e 's|^commit[ \t]||p')"
SHORTHASH=$(echo ${GITHASH:0:7})
cd ..
cd ..
@ -59,7 +59,7 @@ set +x
echo -n -e "Modifying source \t"
count=0
sed -i -e '\@AVOID_PATENT_CRAP@d' src/gldit/gldi-config.h.in
sed -i -e '\@AVOID_PATENT_CRAP@s@^.*$@@' src/gldit/gldi-config.h.in
grep -rIl AVOID_PATENT_CRAP src/ | while read f
do
count=$((count + 1))
@ -69,17 +69,19 @@ do
do
if ( echo "$line" | grep -q "#ifndef.*AVOID_PATENT_CRAP" ) ; then
flag=10
continue
line=""
fi
if [[ ( $flag == 10 ) && ( $(echo "$line" | grep -q "#else" ; echo $? ) == 0 ) ]] ; then
flag=5
continue
line=""
fi
if [[ ( $flag == 5 ) && ( $(echo "$line" | grep -q "#endif" ; echo $? ) == 0 ) ]] ; then
flag=1
continue
line=""
fi
if [ $flag == 10 ] ; then
line=""
fi
[ $flag == 10 ] && continue
echo "$line" >> $f
done
rm -f $f.orig

View file

@ -0,0 +1,78 @@
From 4d2034db650a64315e9663f5ee89cad84692c693 Mon Sep 17 00:00:00 2001
From: Daniel Kondor <kondor.dani@gmail.com>
Date: Wed, 15 Oct 2025 18:13:22 +0200
Subject: [PATCH] gui-factory: add a warning about disabled zoom feature
If Cairo-Dock is compiled with `-DAVOID_PATENT_CRAP`, the Zoom feature will be disabled. Adjust the settings GUI to disable the relevant settings and display a warning.
---
src/gldit/cairo-dock-gui-factory.c | 33 ++++++++++++++++++++++++++++--
1 file changed, 31 insertions(+), 2 deletions(-)
diff --git a/src/gldit/cairo-dock-gui-factory.c b/src/gldit/cairo-dock-gui-factory.c
index fcd639bc..7e846e2e 100644
--- a/src/gldit/cairo-dock-gui-factory.c
+++ b/src/gldit/cairo-dock-gui-factory.c
@@ -51,6 +51,7 @@
#include "cairo-dock-desktop-manager.h"
#include "cairo-dock-separator-manager.h" // GLDI_OBJECT_IS_SEPARATOR_ICON
#include "cairo-dock-menu.h" // gldi_menu_item_new_full2
+#include "cairo-dock-file-manager.h" // cairo_dock_fm_launch_uri
#include "cairo-dock-gui-factory.h"
#define CAIRO_DOCK_ICON_MARGIN 6
@@ -1838,6 +1839,11 @@ const gchar *cairo_dock_parse_key_comment (gchar *cKeyComment, char *iElementTyp
return cUsefulComment;
}
+static gboolean _open_btn_url (GtkLinkButton *pURL, G_GNUC_UNUSED gpointer data)
+{
+ return cairo_dock_fm_launch_uri (gtk_link_button_get_uri (pURL));
+}
+
GtkWidget *cairo_dock_build_group_widget (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cGettextDomain, GtkWidget *pMainWindow, GSList **pWidgetList, GPtrArray *pDataGarbage, const gchar *cOriginalConfFilePath)
{
g_return_val_if_fail (pKeyFile != NULL && cGroupName != NULL, NULL);
@@ -3087,9 +3093,15 @@ GtkWidget *cairo_dock_build_group_widget (GKeyFile *pKeyFile, const gchar *cGrou
}
GtkWidget *pExternFrame;
+ gboolean bDisabled = FALSE;
if (iElementType == CAIRO_DOCK_WIDGET_FRAME)
{
pExternFrame = gtk_frame_new (NULL);
+#ifndef AVOID_PATENT_CRAP
+ // do nothing, bDisabled already set to FALSE
+#else
+ bDisabled = !g_strcmp0 (cValue, "Zoom effect");
+#endif
gtk_container_set_border_width (GTK_CONTAINER (pExternFrame), CAIRO_DOCK_GUI_MARGIN);
gtk_frame_set_shadow_type (GTK_FRAME (pExternFrame), GTK_SHADOW_OUT);
gtk_frame_set_label_widget (GTK_FRAME (pExternFrame), (pLabelContainer != NULL ? pLabelContainer : pLabel));
@@ -3116,8 +3128,25 @@ GtkWidget *cairo_dock_build_group_widget (GKeyFile *pKeyFile, const gchar *cGrou
0);
pFrameVBox = gtk_box_new (GTK_ORIENTATION_VERTICAL, CAIRO_DOCK_GUI_MARGIN);
- gtk_container_add (GTK_CONTAINER (pFrame),
- pFrameVBox);
+ if (bDisabled) {
+ gtk_widget_set_sensitive (pFrameVBox, FALSE);
+
+ GtkWidget *pBoxV = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ GtkWidget *pBoxH = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ GtkWidget *pImg = gtk_image_new_from_icon_name ("dialog-warning", GTK_ICON_SIZE_MENU);
+ GtkWidget *pLbl = gtk_label_new (_("Cairo-Dock has been built with the icon zoom effect disabled. See here for more info: "));
+ GtkWidget *pURL = gtk_link_button_new ("https://github.com/Cairo-Dock/cairo-dock-core/issues/156");
+ // note: we use our own handler to open URLs so that we can use systemd to launch the browser if needed
+ g_signal_connect (G_OBJECT (pURL), "activate-link", G_CALLBACK (_open_btn_url), NULL);
+
+ gtk_box_pack_start (GTK_BOX (pBoxH), pImg, FALSE, FALSE, 20);
+ gtk_box_pack_start (GTK_BOX (pBoxH), pLbl, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (pBoxH), pURL, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (pBoxV), pBoxH, FALSE, FALSE, 5);
+ gtk_box_pack_start (GTK_BOX (pBoxV), pFrameVBox, FALSE, FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (pFrame), pBoxV);
+ }
+ else gtk_container_add (GTK_CONTAINER (pFrame), pFrameVBox);
if (pAuthorizedValuesList[0] == NULL || *pAuthorizedValuesList[0] == '\0')
g_free (cValue);

View file

@ -1,16 +1,17 @@
%global urlver 3.4
%global mainver 3.4.1
%global urlver 3.6
%global mainver 3.6.2
%global plugin_least_ver 3.4.1
%global plugin_least_ver 3.6.0
%global use_git 1
%global gitdate 20210327
%global githash 6c569e67a2a366e7634224a0133ede51755629cb
%dnl %global use_git 1
%global gitdate 20250922
%global githash bbdf30b67241dbf61dea651b636a07da5cc39049
%global shorthash %(c=%{githash} ; echo ${c:0:7})
%global tarballver %{mainver}%{?use_git:-%{gitdate}git%{shorthash}}
%global mainrel 18
%global baserelease 1
%dnl %global alphatag .rcb
%undefine _ld_strict_symbol_defs
%undefine __brp_mangle_shebangs
@ -25,11 +26,15 @@
##########################################
Name: cairo-dock
Version: 3.4.1
Release: %{mainrel}%{?use_git:.D%{gitdate}git%{shorthash}}%{?dist}%{flagrel}.3
Version: %{mainver}%{?use_git:^%{gitdate}git%{shorthash}}
Release: %{baserelease}%{?alphatag}%{?dist}%{flagrel}
Summary: Light eye-candy fully themable animated dock
License: GPLv3+
# Overall: GPL-3.0-or-later
# data/scripts/cairo-dock-package-theme.sh GPL-2.0-or-later
# src/gldit/gtk3imagemenuitem.c LGPL-3.0-or-later
# SPDX confirmed
License: GPL-3.0-or-later AND GPL-2.0-or-later AND LGPL-3.0-or-later
URL: http://glx-dock.org/
# Source0: http://launchpad.net/cairo-dock-core/%%{urlver}/%%{mainver}/+download/cairo-dock-%%{mainver}.tar.gz
# Modified due to some may-be-patent-infringement issue
@ -38,14 +43,14 @@ Source0: cairo-dock-fedora-%{tarballver}.tar.gz
Source1: cairo-dock-create-fedora-tarball.sh
# And some legal explanation
Source2: LEGAL.fedora.cairo-dock
# wayland-manager: allocate new wl_output information by checking id
# https://bugzilla.redhat.com/show_bug.cgi?id=2000812
# https://github.com/Cairo-Dock/cairo-dock-core/pull/12
Patch1: 0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch
# https://github.com/Cairo-Dock/cairo-dock-core/pull/157
Patch0: cairo-dock-pr157-disabled-zoom-feature.patch
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: extra-cmake-modules
BuildRequires: systemd-rpm-macros
%if 0%{?use_gcc_strict_sanitize}
BuildRequires: libasan
BuildRequires: libubsan
@ -63,10 +68,14 @@ BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(glu)
BuildRequires: pkgconfig(gthread-2.0)
BuildRequires: pkgconfig(gtk-layer-shell-0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(json-c)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(wayland-egl)
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xcomposite)
@ -119,13 +128,13 @@ The %{name}-devel package contains libraries, build data, and header
files for developing applications that use %{name}.
%prep
%autosetup -n %{name}-%{version}%{?use_git:-%{gitdate}git%{shorthash}} -p1
%autosetup -n %{name}-%{mainver}%{?use_git:-%{gitdate}git%{shorthash}} -p1
## permission
# %%_fixperms cannot fix permissions completely here
for dir in */
do
find $dir -type f | xargs chmod 0644
find $dir -type f | xargs -r chmod 0644
done
chmod 0644 [A-Z]*
chmod 0755 */
@ -139,7 +148,15 @@ sed -i.stat \
po/CMakeLists.txt
# Modify version forcely
sed -i CMakeLists.txt -e '\@set (VERSION @s|VERSION.*|VERSION "%{version}")|'
%if 0%{?use_git}
sed -i CMakeLists.txt -e '\@set (VERSION @s|VERSION.*|VERSION "%{mainver}")|'
%endif
# Don't set rpath
sed -i CMakeLists.txt -e '\@APPEND.*CMAKE_INSTALL_RPATH@d'
# Don't check / try systemd-notify on buildroot
sed -i CMakeLists.txt -e '\@SYSTEMD_COMMAND@s|systemd-notify|true|'
%build
%set_build_flags
@ -156,6 +173,9 @@ export CXXFLAGS="$(echo $CXXFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t]
export LDFLAGS="$(echo $LDFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t][^ \t]*||g')"
%endif
# PATCH157 needs this: remove this when patch is included in tarball
export CFLAGS="$CFLAGS -DAVOID_PATENT_CRAP=1"
rm -f CMakeCache.txt
%cmake \
-DCMAKE_SKIP_RPATH:BOOL=ON \
@ -240,6 +260,8 @@ popd
%{_libdir}/%{name}/libcd-Help.so
%{_datadir}/%{name}/plug-ins/Help/
%{_userunitdir}/%{name}.service
%{_mandir}/man1/%{name}.1*
%files devel
@ -248,6 +270,139 @@ popd
%{_libdir}/pkgconfig/gldi.pc
%changelog
* Tue Dec 23 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.6.2-1
- 3.6.2
* Tue Nov 04 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.6.1-1
- 3.6.1
* Fri Oct 17 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.6.0-2
- Upstream patch for warning for disabling zoom effect
* Wed Oct 01 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.6.0-1
- 3.6.0
* Wed Sep 24 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250922gitbbdf30b-1.rcb
- Update to the latest git (20250922gitbbdf30b)
* Mon Sep 08 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250907git2cd4d36-1.rcb
- Update to the latest git (20250907git2cd4d36)
* Mon Sep 01 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250901git8460fe2-1.rc9
- Update to the latest git (20250901git8460fe2)
* Sun Aug 24 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250822gitf3de00e-1.rc9
- Update to the latest git (20250822gitf3de00e)
* Tue Aug 12 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250812gitba992c4-1.rc8
- Update to the latest git (20250812gitba992c4)
* Tue Jul 29 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250729gitc86686d-1.rc7
- Update to the latest git (20250729gitc86686d)
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.99^20250714gite852048-2.rc6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Wed Jul 23 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250716git033945c-1.rc6
- Update to the latest git (20250716git033945c)
* Mon Jul 14 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250714gite852048-1.rc6
- Update to the latest git (20250714gite852048)
* Mon Jun 30 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250623git6b5d476-1.rc3
- Update to the latest git (20250623git6b5d476)
* Thu Jun 19 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250618git89864a0-1.rc2
- Update to the latest git (20250618git89864a0)
* Thu Mar 13 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250309gita77d61b-1.rc2
- Update to the latest git (20250309gita77d61b)
* Sun Mar 02 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250223gite2c28d1-1.rc2
- Update to the latest git (20250223gite2c28d1)
* Tue Feb 18 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250218git77bc388-1.rc2
- Update to the latest git (20250218git77bc388)
* Fri Feb 14 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250214gitddcff9e-1.rc2
- Update to the latest git (20250214gitddcff9e)
* Thu Feb 13 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250211git443d8da-1.rc1
- Update to the latest git (20250211git443d8da)
* Thu Jan 30 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250120gitd2fd789-1.rc1
- Update to the latest git (20250120gitd2fd789)
* Sun Jan 19 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20250118gitb0f5d5c-1.beta6
- Update to the latest git (20250118gitb0f5d5c)
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.99^20241218gitf852640-2.beta6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sun Dec 29 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241218gitf852640-1.beta6
- Update to the latest git (20241218gitf852640)
* Mon Dec 16 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241216git4f36d13-1.beta6
- Update to the latest git (20241216git4f36d13)
* Sun Dec 08 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241207gitea4bd97-1.beta5
- Update to the latest git (20241207gitea4bd97)
* Tue Nov 19 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241118git575a251-1
- Update to the latest git (20241118git575a251)
* Thu Oct 24 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241024git9f9421e-1
- Update to the latest git (20241024git9f9421e)
* Sun Oct 20 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241016gitea5d37e-1
- Update to the latest git (20241016gitea5d37e)
* Mon Oct 14 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241013git0324720-1
- Update to the latest git (20241013git0324720)
* Sun Oct 06 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20241007.1git2149e52-1
- Update to the latest git (20241007git2149e52)
* Thu Sep 26 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20240926git7b3ac7f-1
- Update to the latest git (20240926git7b3ac7f)
* Wed Sep 18 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20240915git1458bc8-1
- Update to the latest git (20240915git1458bc8)
* Thu Aug 22 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20240822gitb196136-1
- Update to the latest git (20240822gitb196136)
* Wed Aug 07 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20240805git23c0be5-1
- Update to the latest git (20240805git23c0be5)
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.99^20240505git13fb151-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sun May 05 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20240505git13fb151-1
- Update to the latest git (20240505git13fb151)
- Enable Wayfire IPC support
* Sat May 04 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.99^20240501git1f31686-1
- Update to latest git (20240501git1f31686)
* Fri Mar 01 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.0-2
- SPDX confirmation
* Mon Feb 26 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.5.0-1
- Update to 3.5.0
* Tue Jan 23 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.4.1-22.D20210327git6c569e6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.4.1-21.D20210327git6c569e6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.4.1-20.D20210327git6c569e6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon May 29 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.4.1-19.D20210327git6c569e6
- Pass -r option to xargs because new rpm creates empty directory
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.4.1-18.D20210327git6c569e6.3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild

View file

@ -1 +1 @@
SHA512 (cairo-dock-fedora-3.4.1-20210327git6c569e6.tar.gz) = 605c0c8bcf0ef0725c6ab1458856e70d6148f1aad351aae6d74bcc9d4beba7ae2da1d53cc743d4d2e587c68d14896981e4cbe7281c9fcc75ed2b3777e698df47
SHA512 (cairo-dock-fedora-3.6.2.tar.gz) = dd941127605cd771813c1349fcaf8c1ba16673a9e95a6124e3b3e6a30fab97816c14291ac2a76e191b411f025a6f4b03f9b3d9ef356ee580b208a3fa8b6e4f34