summaryrefslogtreecommitdiff
path: root/www/librewolf/files/patch-bug1876366
diff options
context:
space:
mode:
Diffstat (limited to 'www/librewolf/files/patch-bug1876366')
-rw-r--r--www/librewolf/files/patch-bug1876366201
1 files changed, 18 insertions, 183 deletions
diff --git a/www/librewolf/files/patch-bug1876366 b/www/librewolf/files/patch-bug1876366
index a6f39ffabab8..78483c3fbab7 100644
--- a/www/librewolf/files/patch-bug1876366
+++ b/www/librewolf/files/patch-bug1876366
@@ -1,188 +1,23 @@
-commit 54d21b7398dc1a8ff22a987c660d400347b144a9
+commit 46a89fb0319d673b3139a068e3d89aed9f44fc16
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
-Date: Sun Feb 11 19:11:15 2024 +0100
- Bug 1876366: many X11 cursors stopped working
+ use gdk legacy cursor interface by default
- revert switch to newer gdk interface, as it broke cursor shape
- switching and living with the default cursor only is no fun.
-
- Revert "Bug 1872961 [Linux] Use pointer cursor for hyperlinks r=emilio"
-
- This reverts commit 0574d0cdc438e4b0ce588f1652af802a0357f255.
-
- Revert "Bug 1871863 - Port from GdkCursorType to gdk_cursor_new_from_name. r=rmader,stransky"
-
- This reverts commit 5dfa42970a9577f0ac4e0992d9ec58c691e9bef6.
+ Upstream https://bugzilla.mozilla.org/show_bug.cgi?id=1876366#c16
+ hints that we could re-test this once we have GTK 3.24.42 (with the
+ now-current gtk3-3.24.41 the original problem is still reproducable,
+ but toggling this flag does fix it for me)
-diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp
-index a011dcc51fdb..28100db36d89 100644
---- widget/gtk/nsWindow.cpp
-+++ widget/gtk/nsWindow.cpp
-@@ -7797,53 +7797,61 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) {
-
- GdkDisplay* defaultDisplay = gdk_display_get_default();
-
-+ // The strategy here is to use standard GDK cursors, and, if not available,
-+ // load by standard name with gdk_cursor_new_from_name.
-+ // Spec is here: http://www.freedesktop.org/wiki/Specifications/cursor-spec/
- switch (aCursor) {
- case eCursor_standard:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "default");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_LEFT_PTR);
- break;
- case eCursor_wait:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "wait");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_WATCH);
- break;
- case eCursor_select:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "text");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_XTERM);
- break;
- case eCursor_hyperlink:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "pointer");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_HAND2);
- break;
- case eCursor_n_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "n-resize");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_TOP_SIDE);
- break;
- case eCursor_s_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "s-resize");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_BOTTOM_SIDE);
- break;
- case eCursor_w_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "w-resize");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_LEFT_SIDE);
- break;
- case eCursor_e_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "e-resize");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_RIGHT_SIDE);
- break;
- case eCursor_nw_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "nw-resize");
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_TOP_LEFT_CORNER);
- break;
- case eCursor_se_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "se-resize");
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_BOTTOM_RIGHT_CORNER);
- break;
- case eCursor_ne_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "ne-resize");
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_TOP_RIGHT_CORNER);
- break;
- case eCursor_sw_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "sw-resize");
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_BOTTOM_LEFT_CORNER);
- break;
- case eCursor_crosshair:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "crosshair");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_CROSSHAIR);
- break;
- case eCursor_move:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "move");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_FLEUR);
- break;
- case eCursor_help:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "help");
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_QUESTION_ARROW);
- break;
-- case eCursor_copy:
-+ case eCursor_copy: // CSS3
- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "copy");
- if (!gdkcursor) newType = MOZ_CURSOR_COPY;
- break;
-@@ -7856,14 +7864,18 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) {
- if (!gdkcursor) newType = MOZ_CURSOR_CONTEXT_MENU;
- break;
- case eCursor_cell:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "cell");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_PLUS);
- break;
-+ // Those two aren’t standardized. Trying both KDE’s and GNOME’s names
- case eCursor_grab:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "grab");
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "openhand");
- if (!gdkcursor) newType = MOZ_CURSOR_HAND_GRAB;
- break;
- case eCursor_grabbing:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "grabbing");
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "closedhand");
-+ if (!gdkcursor) {
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "grabbing");
-+ }
- if (!gdkcursor) newType = MOZ_CURSOR_HAND_GRABBING;
- break;
- case eCursor_spinning:
-@@ -7880,6 +7892,9 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) {
- break;
- case eCursor_not_allowed:
- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "not-allowed");
-+ if (!gdkcursor) { // nonstandard, yet common
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "crossed_circle");
-+ }
- if (!gdkcursor) newType = MOZ_CURSOR_NOT_ALLOWED;
- break;
- case eCursor_no_drop:
-@@ -7900,35 +7915,46 @@ static GdkCursor* get_gtk_cursor(nsCursor aCursor) {
- }
- break;
- case eCursor_all_scroll:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "move");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_FLEUR);
- break;
- case eCursor_nesw_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "nesw-resize");
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "size_bdiag");
- if (!gdkcursor) newType = MOZ_CURSOR_NESW_RESIZE;
- break;
- case eCursor_nwse_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "nwse-resize");
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "size_fdiag");
- if (!gdkcursor) newType = MOZ_CURSOR_NWSE_RESIZE;
- break;
- case eCursor_ns_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "ns-resize");
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_V_DOUBLE_ARROW);
- break;
- case eCursor_ew_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "ew-resize");
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_H_DOUBLE_ARROW);
- break;
-+ // Here, two better fitting cursors exist in some cursor themes. Try those
-+ // first
- case eCursor_row_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "row-resize");
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "split_v");
-+ if (!gdkcursor) {
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_V_DOUBLE_ARROW);
-+ }
- break;
- case eCursor_col_resize:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "col-resize");
-+ gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "split_h");
-+ if (!gdkcursor) {
-+ gdkcursor =
-+ gdk_cursor_new_for_display(defaultDisplay, GDK_SB_H_DOUBLE_ARROW);
-+ }
- break;
- case eCursor_none:
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "none");
-- if (!gdkcursor) newType = MOZ_CURSOR_NONE;
-+ newType = MOZ_CURSOR_NONE;
- break;
- default:
- NS_ASSERTION(aCursor, "Invalid cursor type");
-- gdkcursor = gdk_cursor_new_from_name(defaultDisplay, "default");
-+ gdkcursor = gdk_cursor_new_for_display(defaultDisplay, GDK_LEFT_PTR);
- break;
- }
+diff --git modules/libpref/init/StaticPrefList.yaml modules/libpref/init/StaticPrefList.yaml
+index 835450712a12..f2249006c36d 100644
+--- modules/libpref/init/StaticPrefList.yaml
++++ modules/libpref/init/StaticPrefList.yaml
+@@ -16070,7 +16070,7 @@
+ # Whether to use gtk legacy cursor API.
+ - name: widget.gtk.legacy-cursors.enabled
+ type: bool
+- value: false
++ value: true
+ mirror: always
+ # Whether to use gtk high contrast themes to disable content styling like on