Matthias Clasen [Fri, 12 Aug 2022 16:01:42 +0000 (12:01 -0400)]
a11y: Fix a memory leak
We need to free the queued context list in dispose
if we didn't get to register the contexts, and we also
need to free the list properly when we do get to
register them.
This showed up in valgrind as leaked GList structs.
Matthias Clasen [Fri, 12 Aug 2022 00:09:15 +0000 (00:09 +0000)]
Merge branch 'fix-leak' into 'main'
gtk/css: data_url_path fix leak in error path
See merge request GNOME/gtk!4947
Pablo Correa Gómez [Thu, 11 Aug 2022 23:33:39 +0000 (01:33 +0200)]
gtk/css: data_url_path fix leak in error path
Fixes
7900032f3067166502978413ed2447c68dc83771
Matthias Clasen [Wed, 10 Aug 2022 18:27:54 +0000 (14:27 -0400)]
4.7.2
Matthias Clasen [Thu, 11 Aug 2022 11:58:04 +0000 (11:58 +0000)]
Merge branch 'improve-css-test' into 'main'
css: Propagate charset conversion errors
See merge request GNOME/gtk!4943
Matthias Clasen [Thu, 11 Aug 2022 11:18:39 +0000 (07:18 -0400)]
tests: Check the error first
The error contains useful information when
things fail, so check it first to get useful
output in case of failure.
Matthias Clasen [Thu, 11 Aug 2022 11:17:55 +0000 (07:17 -0400)]
css: Propagate charset conversion errors
Lets not throw away informtation that
helps to figure out why things fail.
Matthias Clasen [Wed, 10 Aug 2022 17:57:55 +0000 (17:57 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
jpeg loader: Limit memory consumption
See merge request GNOME/gtk!4942
Matthias Clasen [Wed, 10 Aug 2022 17:25:17 +0000 (13:25 -0400)]
jpeg loader: Limit memory consumption
This will prevent stupid oom situations with pathological
jpeg files, without affecting our ability to load reasonable
images.
Matthias Clasen [Wed, 10 Aug 2022 16:51:55 +0000 (16:51 +0000)]
Merge branch 'jx/hi-res-scrolling' into 'main'
High-resolution scroll wheel support
See merge request GNOME/gtk!3839
Carlos Garnacho [Wed, 10 Aug 2022 14:35:28 +0000 (16:35 +0200)]
ci: Disable -Werror on wayland submodule
CI is mostly interested in GTK not introducing compiler warnings, other
submodules like Wayland might have their own and that shouldn't hinder
CI testing of GTK.
Disable -Werror for the wayland submodule, and let it be fixed independently
at some point.
José Expósito [Mon, 20 Sep 2021 18:00:04 +0000 (20:00 +0200)]
gtkeventcontrollerscroll: Always accumulate discrete deltas
When GTK_EVENT_CONTROLLER_SCROLL_DISCRETE is set, accumulate deltas also
for mouse scroll so a high-resolution mouse wheel click behaves in the
in the same manner as a low-resolution mouse wheel click.
José Expósito [Mon, 20 Sep 2021 18:00:04 +0000 (20:00 +0200)]
gdk/x11: Handle high-resolution scroll events
José Expósito [Mon, 20 Sep 2021 17:59:58 +0000 (19:59 +0200)]
gdk/wayland: Handle high-resolution scroll events
Starting with the Wayland protocol wl_pointer >= 8, discrete axis
events have been deprecated in favour of high-resolution scroll event.
Add a listener for high-resolution scroll events and, for backwards
compatibility, handle discrete events as discrete*120.
José Expósito [Mon, 20 Sep 2021 17:59:52 +0000 (19:59 +0200)]
gdk/wayland: Calculate discrete scroll direction in its helper
Refactor, no functional changes.
José Expósito [Mon, 20 Sep 2021 17:59:45 +0000 (19:59 +0200)]
gdk/events: Set discrete scroll deltas in its constructor
Instead of calculating the discrete scroll deltas in
GtkEventControllerScroll, move that code to the event constructor and
access the precalculated values using gdk_scroll_event_get_deltas.
Refactor, no functional changes.
José Expósito [Mon, 20 Sep 2021 17:59:35 +0000 (19:59 +0200)]
gdk/events: Add constructor for high-resolution scroll events
Starting with Linux Kernel v5.0 two new axes are available for
mice that support high-resolution wheel scrolling: REL_WHEEL_HI_RES and
REL_HWHEEL_HI_RES.
Both axes send data in fractions of 120 where each multiple of 120
amounts to one logical scroll event. Fractions of 120 indicate a wheel
movement less than one detent.
The 120 magic number is a copy of the Windows API, so this new
constructor can be used both in Linux >= 5.0 and Windows >= Vista.
José Expósito [Mon, 18 Jul 2022 17:04:10 +0000 (19:04 +0200)]
build: Update Wayland to >= 1.21.0
Jordi Mas [Wed, 10 Aug 2022 12:27:44 +0000 (14:27 +0200)]
Update Catalan translation
Emmanuele Bassi [Wed, 10 Aug 2022 09:23:02 +0000 (09:23 +0000)]
Merge branch 'rounded-clip-node-new-transfer-full' into 'main'
Mark gsk_rounded_clip_node_new() return value as (transfer full)
See merge request GNOME/gtk!4941
Sebastian Dröge [Wed, 10 Aug 2022 08:07:51 +0000 (11:07 +0300)]
Mark gsk_rounded_clip_node_new() return value as (transfer full)
Like all the other constructors for nodes already do. Without this,
newly created rounded clip nodes are leaked in bindings.
Carlos Garnacho [Tue, 9 Aug 2022 18:26:48 +0000 (18:26 +0000)]
Merge branch 'gbsneto/paned-focus-infloop' into 'main'
paned: Protect against NULL variable
Closes #5094
See merge request GNOME/gtk!4938
Matthias Clasen [Tue, 9 Aug 2022 18:15:41 +0000 (18:15 +0000)]
Merge branch 'wip/carlosg/fix-crossing-on-unmap' into 'main'
gtkwindow: Use pointer-oriented function to deal with crossing events
Closes #5094
See merge request GNOME/gtk!4937
Carlos Garnacho [Tue, 9 Aug 2022 16:49:35 +0000 (18:49 +0200)]
gtkwindow: Use pointer-oriented function to deal with crossing events
Commit
adba0b97 fixed missed pointer crossings by using a helper function that
was already present and looked like did everything that was needed. However
this function was oriented to keyboard focus and it also did update the related
widget state. Doing these changes on pointer-based crossing was misuse, and
could cause weird interactions with keyboard focus management.
Fix this by using gtkmain.c gtk_synthesize_crossing_event() that is in fact
oriented to pointers.
Fixes: adba0b97 (gtkwindow: Synthesize pointer crossing events on state changes)
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5094
Georges Basile Stavracas Neto [Tue, 9 Aug 2022 17:20:25 +0000 (14:20 -0300)]
paned: Warn if child is not actually a child
This will at least allow us to debug this in the future.
Carlos Garnacho [Tue, 9 Aug 2022 16:47:14 +0000 (18:47 +0200)]
gtkmain: Pass coordinates when synthesizing pointer events
Instead of passing an event and figuring out coordinates from it, pass
directly the toplevel coordinates so that we can use this outside event
handling.
All callers have been updated to pass the coordinates, in practical effects
they were already based on the GtkNative.
Georges Basile Stavracas Neto [Tue, 9 Aug 2022 16:11:01 +0000 (13:11 -0300)]
paned: Protect against NULL variable
The inner loop in gtk_paned_set_focus_child() tries to find the
topmost GtkPaned, however, if the `w` variable ends up becoming
NULL after bubbling up the entire GtkWidget hierarchy, this loop
never breaks.
Check for NULL in this loop.
Closes https://gitlab.gnome.org/GNOME/gtk/-/issues/5094
Kukuh Syafaat [Tue, 9 Aug 2022 02:12:09 +0000 (02:12 +0000)]
Update Indonesian translation
Quentin PAGÈS [Mon, 8 Aug 2022 20:49:35 +0000 (20:49 +0000)]
Update Occitan translation
Carlos Garnacho [Mon, 8 Aug 2022 12:00:15 +0000 (12:00 +0000)]
Merge branch 'wip/exalm/multiplier' into 'main'
scrolledwindow: Lower the scroll multiplier
See merge request GNOME/gtk!4933
Daniel Mustieles [Mon, 8 Aug 2022 10:42:06 +0000 (12:42 +0200)]
Updated Spanish translation
Alexander Mikhaylenko [Sun, 7 Aug 2022 20:03:51 +0000 (00:03 +0400)]
scrolledwindow: Lower the scroll multiplier
c68247f63ba1db8849eb1679e53a64f7f2633973 introduced a scroll multiplier,
intended to be significantly lower than the GTK 4.6 behavior but higher
than 1. However, it was _higher_ than 4.6, since 4.6 also had a permanent
1/10 multiplier in GDK, so the cited multiplier values were really 6.4 and
9.7.
Matthias Clasen [Sun, 7 Aug 2022 19:09:04 +0000 (19:09 +0000)]
Merge branch 'build-fix-glib-2.66' into 'main'
build: fix for use with glib 2.66.0 (2nd try)
See merge request GNOME/gtk!4932
Matthias Clasen [Sun, 7 Aug 2022 19:01:25 +0000 (19:01 +0000)]
Merge branch 'wip/carlosg/scroll-overshoot' into 'main'
gtk/scrolledwindow: Check for overshoot setting up kinetic scroll helpers
Closes #4784
See merge request GNOME/gtk!4909
Emmanuele Bassi [Sun, 7 Aug 2022 18:54:19 +0000 (18:54 +0000)]
Apply 1 suggestion(s) to 1 file(s)
Carlos Garnacho [Fri, 29 Jul 2022 18:34:55 +0000 (20:34 +0200)]
gtk/scrolledwindow: Check for overshoot setting up kinetic scroll helpers
We may have situations where velocity is 0/0, but are overshooting. Places where
this happens are mouse wheels, and continuous scroll that ended up still before
finish. In this situation we also want to run the animation for overshoot, so
check for the corresponding axes to also set up the kinetic scroll helper.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4784
Matthias Clasen [Sun, 7 Aug 2022 18:06:28 +0000 (18:06 +0000)]
Merge branch 'wip/carlosg/fixes' into 'main'
Some fixes
Closes #2877 and #5003
See merge request GNOME/gtk!4929
Emmanuele Bassi [Sun, 7 Aug 2022 16:21:40 +0000 (16:21 +0000)]
Merge branch 'clipboard-seg2' into 'main'
x11: Don't assume valid type
See merge request GNOME/gtk!4912
Carlos Garnacho [Fri, 5 Aug 2022 15:13:28 +0000 (17:13 +0200)]
gtkscrolledwindow: Add fixed multiplier to scroll events in surface units
The expected configurability is not going to arrive yet from compositors, and
it is precipitate for GTK to gain any configurability. We do know a factor of 1
feels way too slow, and we do know a factor of page_size * pow (2 / 3) feels way
way too fast.
With the previous multiplier, gtk4-demo at its default size had a vertical textview
factor of 64.332901, and maximized on a 1920x1080 screen a factor of 97.585365.
Pick a magic multiplier that is both significantly below these values and above 1,
and stick to it.
Future work will add the configurability of smooth scroll events where it belongs.
At that point this commit may be reverted so we don't pile up on magic numbers again.
Related: https://gitlab.gnome.org/GNOME/gtk/-/issues/4793
Asier Sarasua Garmendia [Sun, 7 Aug 2022 09:49:00 +0000 (09:49 +0000)]
Update Basque translation
Hugo Carvalho [Sat, 6 Aug 2022 23:01:57 +0000 (23:01 +0000)]
Update Portuguese translation
Danial Behzadi [Sat, 6 Aug 2022 22:43:23 +0000 (22:43 +0000)]
Update Persian translation
Hannes Müller [Fri, 5 Aug 2022 11:35:06 +0000 (13:35 +0200)]
build: fix for use with glib 2.66.0
Add missing #define g_memdup2() for gdksurface-broadway.c in case of enabled
broadway-backend as used otherwise.
Copy static would_drop() replacement for g_log_writer_default_would_drop()
from gtk-builder-tool.c to gtk-reftest.c
Aleksandr Melman [Sat, 6 Aug 2022 14:44:53 +0000 (14:44 +0000)]
Update Russian translation
Carlos Garnacho [Fri, 5 Aug 2022 14:39:56 +0000 (16:39 +0200)]
gtkwindow: Synthesize pointer crossing events on state changes
When widgets go mapped/unmapped, we repick but don't generate crossing
events. Since there could be stateful controllers that use those in
the previously picked widget (e.g. GtkEventControllerMotion), skipping
those breaks their state.
Ensure to send the relevant crossing events on every situation that
changes the pointer focus, so these controllers get a fair opportunity
to undo their state.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/2877
Carlos Garnacho [Fri, 5 Aug 2022 16:33:50 +0000 (18:33 +0200)]
gdk/wayland: Drop surface checks on wl_pointer.leave handling
Even though the argument is non-nullable, GTK sometimes incurs in that
by itself by destroying the surface while the event is in flight. This
is the case of popping down a GtkDropdown. When this happens we simply
ignore the crossing event, but we should let it through instead, the
compositor did not send it in vain and we possibly still have pointer
state to undo.
Drop the surface checks, so that the event is propagated along GTK.
Carlos Garnacho [Fri, 5 Aug 2022 14:38:56 +0000 (16:38 +0200)]
gtkeventcontroller: Fix internal enum documentation
Copy and paste typo.
Carlos Garnacho [Fri, 5 Aug 2022 08:53:22 +0000 (10:53 +0200)]
gtkgesturerotate: Filter touchpad holds events
Since the pinch touchpad gestures already have begin/update/end phases,
this gesture has no actual use for these events.
Carlos Garnacho [Fri, 5 Aug 2022 08:50:45 +0000 (10:50 +0200)]
gtkgesturerotate: Filter touchpad holds events
Since the pinch touchpad gestures already have begin/update/end phases,
this gesture has no actual use for these events.
Carlos Garnacho [Fri, 5 Aug 2022 09:35:28 +0000 (11:35 +0200)]
gdkevent: Give touchpad hold events a sequence
Following what was done for pinch/swipe events, give hold gestures their
own distinct sequence as well. Without this it was NULL, which was already
distinct to other touchpad gestures.
Carlos Garnacho [Fri, 5 Aug 2022 09:24:58 +0000 (11:24 +0200)]
gtkgesture: Do not coalesce hold events with other touchpad gestures
This delaying of the cancel event was made to avoid intermediate cancellation
for >=2fg hold gestures followed by pinch/swipe gestures, and it worked as
long as everything was considered to have the same sequence.
Since each pinch/swipe pointer gesture now gets its own sequence, this no
longer applies, nor works. This results in zoom/rotate/swipe gestures being
stuck since the sequence for the touchpad events changes mid-gesture.
Sticking to this pattern of giving touchpad gestures their own sequence,
these hold events cannot be assumed to coalesce with other touchpad gestures,
it is better to let it propagate altogether so that both the hold gesture
and the incoming gesture trigger coherent begin and end/cancel phases.
In the worst case, this results in "::begin, ::cancel, ::begin , ..." before
triggering a touchpad gesture, but the extra begin/cancel ought to be a safe
no-op in widgets.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5003
Matthias Clasen [Fri, 5 Aug 2022 12:01:27 +0000 (12:01 +0000)]
Merge branch 'ebassi/textbuffer-private-api' into 'main'
Move private function out of the AT-SPI a11y backend
See merge request GNOME/gtk!4924
Emmanuele Bassi [Thu, 4 Aug 2022 22:39:54 +0000 (23:39 +0100)]
Re-enable the TextBuffer wrap-mode serialization test
The private serialization function is now available on all platforms.
Emmanuele Bassi [Thu, 4 Aug 2022 22:34:41 +0000 (23:34 +0100)]
Move private function out of the AT-SPI a11y backend
The textbuffer test is calling into a function defined by the AT-SPI
accessibility backend. As of commit
4ddf1b70 we only build and run the
test on Linux, but the function in question isn't really
accessibility-related: it's just a serialization function.
Yuri Chornoivan [Thu, 4 Aug 2022 14:33:50 +0000 (14:33 +0000)]
Update Ukrainian translation
Matthias Clasen [Thu, 4 Aug 2022 10:49:45 +0000 (10:49 +0000)]
Merge branch 'cleanup-ffmpeg' into 'main'
ffmpeg: add audio playback through avdevice
See merge request GNOME/gtk!4852
Stephan Vedder [Thu, 4 Aug 2022 10:49:44 +0000 (10:49 +0000)]
ffmpeg: add audio playback through avdevice
Matthias Clasen [Wed, 3 Aug 2022 11:56:25 +0000 (11:56 +0000)]
Merge branch 'mount_operation' into 'main'
mountoperation: Fix authentication dialog
Closes #5059 and #5058
See merge request GNOME/gtk!4899
Matthias Clasen [Tue, 2 Aug 2022 11:10:25 +0000 (11:10 +0000)]
Merge branch 'win32-nahimic-nv-notes' into 'main'
running.md: Mention about issue with Nahimic on Windows
Closes #4113
See merge request GNOME/gtk!4915
Chun-wei Fan [Mon, 1 Aug 2022 04:10:15 +0000 (12:10 +0800)]
running.md: Mention about issue with Nahimic on Windows
Let people know that they will need to use GTK with the Nahimic service
disabled or OpenGL disabled or put their GTK application into the Nahimic
backlist, or try to use GLES, since there is a known issue in the Windows
nVidia graphics drivers and Nahimic that causes GL operations to fail,
causing crashes in operations such as window resizes.
This will close issue #4113--sadly, there is nothing we can do within
GTK to fix the issue.
Matthias Clasen [Tue, 2 Aug 2022 00:18:44 +0000 (00:18 +0000)]
Merge branch 'label-tabs' into 'main'
Label tabs
See merge request GNOME/gtk!4914
Benjamin Otte [Mon, 1 Aug 2022 20:47:12 +0000 (20:47 +0000)]
Merge branch 'otte-main-patch-86462' into 'main'
Fix g_object_new(GTK_TYPE_SNAPSHOT)
See merge request GNOME/gtk!4919
Benjamin Otte [Mon, 1 Aug 2022 20:28:46 +0000 (20:28 +0000)]
snapshot: Don't critical on dispose
When there's remaining state that draws nothing, it returns no
rendernode. So do a NULL-check before unreffing it.
Benjamin Otte [Mon, 1 Aug 2022 20:08:58 +0000 (20:08 +0000)]
Fix g_object_new(GTK_TYPE_SNAPSHOT)
GJS apparent likes g_object_new() over actual constructors, so make that work.
Matthias Clasen [Sun, 31 Jul 2022 15:40:20 +0000 (11:40 -0400)]
Add GtkLabel:tabs
This adds more powerful formatting capabilities to GtkLabel
without costing us much, since Pango already supports tabs.
Christian Hergert [Mon, 1 Aug 2022 05:09:53 +0000 (05:09 +0000)]
Merge branch 'wip/chergert/builder-expose-object-fix' into 'main'
builder: gracefully handle re-exposing builder object
See merge request GNOME/gtk!4913
Christian Hergert [Mon, 1 Aug 2022 04:21:13 +0000 (21:21 -0700)]
gtkbuilder: update gtk_builder_expose_object() docs
Christian Hergert [Mon, 1 Aug 2022 04:20:55 +0000 (21:20 -0700)]
gtkbuilder: update gtk_builder_extend_with_templat() docs
Christian Hergert [Mon, 1 Aug 2022 04:15:08 +0000 (21:15 -0700)]
gtkbuilder: check for existing object before extending template
If gtk_builder_expose_object() is called twice with the same name, it will
result in a g_critical(). This improves that situation by checking for the
object before exposing additional times.
This turns out to be handy in situations where templates are expanded
multiple times, such as application-side implementations of UI merging.
Dr. David Alan Gilbert [Sat, 30 Jul 2022 15:39:18 +0000 (16:39 +0100)]
x11: Don't assume valid type
If we get an invalid TARGETS reply, we might not have a valid 'type',
which ends up as NULL and segs in the g_str_equal.
(This is probably fallout from my fix
506566b6a4c3a9, which I still
can't reproduce reliably, so the last one just moved the seg a bit
further along, and we still don't know who is sending a bad TARGETS).
This corresponds to:
https://bugzilla.redhat.com/show_bug.cgi?id=
2062143
Luca Bacci [Fri, 29 Jul 2022 12:42:57 +0000 (12:42 +0000)]
Merge branch 'fix-gdk-win32-dnd' into 'main'
Fix DnD on Windows
Closes #4498
See merge request GNOME/gtk!4900
Christian Kirbach [Thu, 28 Jul 2022 21:13:07 +0000 (21:13 +0000)]
Update German translation
Nart Tlisha [Thu, 28 Jul 2022 19:19:12 +0000 (19:19 +0000)]
Update Abkhazian translation
Matthias Clasen [Thu, 28 Jul 2022 18:08:47 +0000 (18:08 +0000)]
Merge branch 'alatiera/node-flatpak' into 'main'
flatpak: add a NodeEditor demo
See merge request GNOME/gtk!4898
Matthias Clasen [Thu, 28 Jul 2022 18:07:34 +0000 (18:07 +0000)]
Merge branch 'ebassi/file-list-fixes' into 'main'
Add constructors for GdkFileList
See merge request GNOME/gtk!4907
Emmanuele Bassi [Thu, 28 Jul 2022 09:13:17 +0000 (10:13 +0100)]
Add constructors for GdkFileList
C API users can keep dealing with the implicit equivalence of
GdkFileList and GSList, but language bindings have no idea that one type
is another, and none of them exposes GSList as a type anyway, so they
will need a way to construct a GdkFileList.
Instead of making GdkFileList mutable, and re-implement GSList, we only
provide a constructors pair that lets you create a GdkFileList from a
linked list or from an array.
Emmanuele Bassi [Wed, 27 Jul 2022 11:39:55 +0000 (11:39 +0000)]
Merge branch 'barthalion/gnome-runtime-images-quay' into 'main'
Update (or drop) the Docker image used by Flatpak job
See merge request GNOME/gtk!4906
Bartłomiej Piotrowski [Wed, 27 Jul 2022 10:47:50 +0000 (12:47 +0200)]
Update (or drop) the Docker image used by Flatpak job
The gnome-runtime-images have been recently migrated to Quay. This is already reflected in the template.
Please note this MR has been created semi-automatically. If it doesn't make sense, feel free to close it.
Daniel Mustieles [Wed, 27 Jul 2022 09:36:48 +0000 (11:36 +0200)]
Updated Spanish translation
Christian Hergert [Tue, 26 Jul 2022 23:44:37 +0000 (23:44 +0000)]
Merge branch 'wip/chergert/disable-sysprof-agent' into 'main'
build: configure subproject sysprof with -Dagent=false
See merge request GNOME/gtk!4896
Christian Hergert [Fri, 22 Jul 2022 18:30:21 +0000 (11:30 -0700)]
build: configure subproject sysprof with -Dagent=false
Sysprof has a new -Dagent=true build option which allows installing a
/usr/bin/sysprof-agent program (simimlar to sysprof-cli). It provides a
P2P D-Bus API to the process which can control subprocesses. It's used by
IDE tooling to have more control across container boundaries.
However, we do not need it for GTK CI.
Emmanuele Bassi [Tue, 26 Jul 2022 15:09:28 +0000 (15:09 +0000)]
Merge branch 'markand-main-patch-04776' into 'main'
gtk: Missing end of code block
See merge request GNOME/gtk!4902
David Demelier [Tue, 26 Jul 2022 14:52:30 +0000 (14:52 +0000)]
gtk: Missing end of code block
Nart Tlisha [Tue, 26 Jul 2022 11:17:20 +0000 (11:17 +0000)]
Add Abkhazian translation
Benjamin Otte [Tue, 26 Jul 2022 01:08:08 +0000 (01:08 +0000)]
Merge branch 'gridview' into 'main'
Gridview fix rubberbanding issues
Closes #3462 and #3445
See merge request GNOME/gtk!4688
Corey Berla [Tue, 26 Jul 2022 00:01:28 +0000 (17:01 -0700)]
listview: Fix selection for last item in get_items_in_rect
Make the last item dependent on y + height
Corey Berla [Tue, 26 Jul 2022 00:00:46 +0000 (17:00 -0700)]
listview: Allow starting rubberband in empty space below last row
Rubberband does not work when initiated past the last row
(warning is printed "Could not start rubberbanding: No item).
Clamp y at the max height of the widgets in the listview
Corey Berla [Mon, 25 Jul 2022 23:59:35 +0000 (16:59 -0700)]
listview: Return an empty bitset when selecting only empty space
Return an empty bitset if the user selects exclusively below the last
row.
Corey Berla [Thu, 5 May 2022 04:48:11 +0000 (21:48 -0700)]
gridview: Fix typo in docstring for gtk_grid_view_get_cell_at_y()
Corey Berla [Thu, 5 May 2022 04:41:30 +0000 (21:41 -0700)]
listbase: Clear selection if rubberband selected an empty set
If rubberband returns an empty bitset the selection should be cleared
unless the shift or ctrl key is held
Corey Berla [Mon, 25 Jul 2022 22:55:13 +0000 (15:55 -0700)]
gridview: Return an empty bitset when selecting only empty space
Return an empty bitset if the user selects exclusively below the last
row. No need to calculate selection.
Corey Berla [Tue, 26 Jul 2022 00:16:56 +0000 (17:16 -0700)]
gridview: Fix get_items_in_rect() selection
last_row should be dependent on y + height, not y
Corey Berla [Mon, 25 Jul 2022 22:35:20 +0000 (15:35 -0700)]
gridview: Allow starting rubberband in empty space below last row
Rubberband does not work when initiated past the last row
(warning is printed "Could not start rubberbanding: No item).
Clamp y at the max height of the widgets in the gridview
Fixes: #3462
Corey Berla [Thu, 5 May 2022 04:33:26 +0000 (21:33 -0700)]
gridview: Limit rectangle to gridview columns
The function gtk_grid_view_get_items_in_rect() erroneously calculates
columns less than 0 and greater than n_columns when the user attempts
to rubberband all the way to the left or right respectively. This
causes the rubberband to persistent and creates unexpected behavior.
Limit the rows to a minimum of 0 and maximum of n_columns - 1.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3445
Corey Berla [Tue, 26 Jul 2022 00:19:30 +0000 (17:19 -0700)]
gridview: Move gtk_grid_view_computer_total_height() up for reuse
Emmanuele Bassi [Mon, 25 Jul 2022 21:31:18 +0000 (21:31 +0000)]
Merge branch 'widget-docs-fix' into 'main'
gtkwidget: Fix a small typo in a docs comment
See merge request GNOME/gtk!4901
Philip Withnall [Mon, 25 Jul 2022 21:15:58 +0000 (23:15 +0200)]
gtkwidget: Fix a small typo in a docs comment
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
Zurab Kargareteli [Mon, 25 Jul 2022 16:03:57 +0000 (16:03 +0000)]
Update Georgian translation
darkcutler [Mon, 25 Jul 2022 15:16:23 +0000 (15:16 +0000)]
Fix DnD on Windows
DnD under Windows needed 3 fixes to work with Gtk.DropTarget.
1. The droptarget_w32format_contentformat_map list never gets
filled so the gdk_win32_drop_read_async throws
"No compatible transfer format found".
This is an easy fix and done the same way in the win32 clipboard code.
2. After a drop no gdk_drop_emit_leave_event gets emitted.
This causes a second drop to trigger a bunch of assertion
'self->drop == drop' failed because the first drop is still active.
This is also an easy fix and done the same way by the macos backend.
3. Handling gdk_drop_status/gdk_drop_get_actions interaction.
In gtk_drop_target_do_drop the code
```gdk_drop_finish (self->drop, gdk_drop_get_actions (self->drop));```
calls the finish operation with the actions of the drop which triggers
```g_return_if_fail (gdk_drag_action_is_unique (action));```
in gdk_drop_finish. The code assumes that GdkDrop::actions gets
narrowed down by calling gdk_drop_status. This is hard to assure
because at the same time gdk_drop_get_actions is used by
gtk_drop_target_accept to figure out if a drag is accepted.
GdkDrop::actions serves a double purpose here as the supported source
actions and the currently agreed on action. Both the x11 and the
wayland backend get this wrong somewhat too. Under wayland/x11 when
a drag coming from a source that supports both MOVE and COPY is
first hovering a drop target that only supports COPY it is afterwards
no longer accepted by other drop targets only accepting MOVE.
Under x11 this is permanent for this drag but with wayland the drag
recovers when hovering other widgets. The win32 backend now sets the
supported source actions before any enter/move/drop and narrows them
down in gdk_win32_drop_status.
The patch only touches the win32 backend and fixes all three issues,
for me restoring DnD under windows.
Closes #4498
Corey Berla [Mon, 25 Jul 2022 03:55:22 +0000 (20:55 -0700)]
mountoperation: Free user_widgets list upon dialog destruction
There's a list user_widgets that contains all of the entries and
selections during authentication. This is only freed upon
finalizing the GtkMountOperation. It's possible (and true for the
GVFS SMB implementation) that a MountOperation can have the
gtk_mount_operation_ask_password_do_gtk () function called multiple
times (i.e. bad password). The user_widgets list grows with now
invalid pointers to old widgets (causing unexpected behavior and
seg faults).
Free the user_widgets list upon dialog destruction, we don't need it
anymore.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5059
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5058