Matthias Clasen [Fri, 17 Jan 2020 16:01:55 +0000 (11:01 -0500)]
Bring back the reserved bit
Matthias Clasen [Fri, 17 Jan 2020 15:54:37 +0000 (10:54 -0500)]
Revert "Remove no longer used code"
This reverts commit
105acfe90866543904467b13fecdbed108cf43b2.
Matthias Clasen [Fri, 17 Jan 2020 01:04:00 +0000 (20:04 -0500)]
Add testcases for css change flags
Add various tests for the change flag computation that
we do in the css selector tree.
test1: Just test the basic machinery of this test
test2: Trigger every change flag at least once
test3: Test that multiple states combine as expected
test4: Test negations (known to produce wrong results)
test5: Test a complex selector (not producing the expected
output atm)
widget-factory.ui:
The real thing: widget-factory+Adwaita. Note that
this expedts to be run with GSETTINGS_BACKEND=memory
Note that test4 checks the wrong results that we currently
produce for selectors involving :not. It will have to be
updated when we fix the handling of :not. The widget-factory.ui
testcase will certainly also be affected.
Matthias Clasen [Fri, 17 Jan 2020 01:02:55 +0000 (20:02 -0500)]
Add a test for css change flags
Matthias Clasen [Tue, 14 Jan 2020 00:18:31 +0000 (19:18 -0500)]
Add a way to dump css node change values
Add a GTK_STYLE_CONTEXT_PRINT_SHOW_CHANGE flag that
tells gtk_style_context_to_string to include the
change values of nodes in the output. This will
help debugging css change tracking.
Matthias Clasen [Sat, 18 Jan 2020 01:58:05 +0000 (20:58 -0500)]
style tests: Update expected output
The printing of css nodes has changed, and the window
is visible now.
Matthias Clasen [Wed, 15 Jan 2020 07:00:09 +0000 (02:00 -0500)]
style tests: Show the window
Not doing so somewhat defeats the point that we want
to verify the regular styles, not some weird initial
conditions.
Matthias Clasen [Sat, 18 Jan 2020 01:57:51 +0000 (20:57 -0500)]
style tests: Clean up --generate support
Reshuffle things so we don't call gtk_test_init() when --generate
is passed, to avoid polluting the output with test spew.
Matthias Clasen [Fri, 17 Jan 2020 22:07:46 +0000 (17:07 -0500)]
node tests: Update expected output
The printing of css nodes has changed and the
window is visible now.
Matthias Clasen [Sat, 18 Jan 2020 01:35:00 +0000 (20:35 -0500)]
node tests: Show the window
This avoids using default styles.
Matthias Clasen [Fri, 17 Jan 2020 22:02:43 +0000 (17:02 -0500)]
node tests: Clean up --generate support
Reshuffle things so we don't call gtk_test_init() when --generate
is passed, to avoid polluting the output with test spew.
Matthias Clasen [Fri, 17 Jan 2020 22:42:06 +0000 (17:42 -0500)]
Add an Empty theme for tests
Matthias Clasen [Sat, 18 Jan 2020 03:00:21 +0000 (22:00 -0500)]
cssnode: Fix a corner case in style computation
When we recomputed the change flags, and the style
did not change, we still need to replace the style
object, since it holds the new change flags.
Matthias Clasen [Fri, 17 Jan 2020 21:54:38 +0000 (16:54 -0500)]
cssnodedeclaration: Make print output deterministic
This was depending on the memory order of quarks, which
is not a good fit for tests that depend on this output.
Matthias Clasen [Fri, 17 Jan 2020 00:43:05 +0000 (19:43 -0500)]
Quiet compiler warnings in release builds
Matthias Clasen [Sat, 18 Jan 2020 03:31:51 +0000 (22:31 -0500)]
Tweak the file transfer portal _again_
This is a neverending story. I was seeing problems in tests where
the nested mainloop was picking up unrelated timeouts.
Break down and make this async. This changes the ordering in which
the (de)serializers are registered. If this is causing issues, we
can introduce priorities or something else.
Matthias Clasen [Fri, 17 Jan 2020 02:13:09 +0000 (21:13 -0500)]
Fix a few bugs in the css change flag definition
These were found by the new change flag tests.
Timm Bäder [Fri, 17 Jan 2020 09:24:48 +0000 (09:24 +0000)]
Merge branch 'fix-imwayland-cursor' into 'master'
imwayland: Fix get_preedit_string cursor position (GTK4)
Closes #2383
See merge request GNOME/gtk!1328
xdavidwu [Fri, 17 Jan 2020 08:01:01 +0000 (16:01 +0800)]
imwayland: Fix get_preedit_string cursor position
GtkIMContext get_preedit_string should return cursor position counted
in characters, but cursor_begin here is counted in bytes. This add the
missing conversion.
Matthias Clasen [Fri, 17 Jan 2020 00:38:04 +0000 (00:38 +0000)]
Merge branch 'matthiasc/css-change-tracking-3' into 'master'
Preliminary css matcher work
See merge request GNOME/gtk!1326
Matthias Clasen [Fri, 17 Jan 2020 00:23:45 +0000 (19:23 -0500)]
cssmatcher: Change get_state to has_state
This matches all the other vfuncs, and it gets us
out of keeping several big state flag enumerations
in sync.
Update all callers.
Matthias Clasen [Wed, 15 Jan 2020 07:03:08 +0000 (02:03 -0500)]
Allow printing css matchers
This can help in debugging css matching.
Matthias Clasen [Wed, 15 Jan 2020 03:29:56 +0000 (22:29 -0500)]
css: Add a matcher type enum
For now, this just replaces the is_any boolean
by a type field in the class. It will be used in
future commits.
Matthias Clasen [Thu, 16 Jan 2020 22:50:32 +0000 (17:50 -0500)]
css: Simplify the superset matcher
We use the superset matcher in exactly one place,
so there is no need for the generality of allowing
to ignore different aspects. Just hardcode the one
case we need: ignoring everything except for name,
id and class.
Matthias Clasen [Thu, 16 Jan 2020 22:47:41 +0000 (17:47 -0500)]
Cosmetic change
Update comments for name changes that happened long ago.
Matthias Clasen [Wed, 15 Jan 2020 22:34:03 +0000 (17:34 -0500)]
css: Fix the ANY matcher state list
The ANY and matcher was not, in fact, matching any state,
since the list of states was not up-to-date.
The same fix applies to the superset matcher as well.
Matthias Clasen [Thu, 16 Jan 2020 23:00:17 +0000 (23:00 +0000)]
Merge branch 'matthiasc/css-change-tracking-2' into 'master'
Better css change tracking
See merge request GNOME/gtk!1325
Matthias Clasen [Thu, 16 Jan 2020 22:39:03 +0000 (17:39 -0500)]
Remove an unused define
We no longer use the GTK_CSS_CHANGE_RESERVED_BIT define.
Matthias Clasen [Wed, 15 Jan 2020 22:12:51 +0000 (17:12 -0500)]
Remove no longer used code
We no longer consult the selector tree to find changes,
so this code is no longer needed.
Matthias Clasen [Wed, 15 Jan 2020 13:03:09 +0000 (08:03 -0500)]
css: Don't got to the selector tree for change
The tree is optimized for mimizing the decisions, and is built ahead-of-time.
That prevents us from taking advantage of the information in the matcher when
collecting changes.
So, instead do what we used to do for verification: Use the selector tree
for finding the superset matches, then just walk the rulesets to collect
the changes.
Since we are now recomputing the change masks much less frequently, this
slightly less optimized way of computing them is not a problem, and will
let us compute better results in the future, by improving the superset
matcher to be more precise.
Matthias Clasen [Thu, 16 Jan 2020 18:20:47 +0000 (13:20 -0500)]
cssprovider: Keep selectors around
Don't remove selectors from the rulsets after
creating the selector tree. We want to use them
in future commits.
Benjamin Otte [Thu, 16 Jan 2020 22:13:57 +0000 (22:13 +0000)]
Merge branch 'matthiasc/css-change-tracking' into 'master'
Better css change handling
See merge request GNOME/gtk!1324
Matthias Clasen [Wed, 15 Jan 2020 07:35:21 +0000 (02:35 -0500)]
css: Avoid computing change too often
Most of the time when styles need to be recreated, the name and classes
of the css node haven't changed. In this case, the change value will not
change either, since we are computing change under the assumption that
name and classes are unchanged.
So don't recompute the change. This avoids the second match we do to
find the superset, cutting down the number of times we consult the
selector tree.
Matthias Clasen [Thu, 16 Jan 2020 21:59:21 +0000 (16:59 -0500)]
Revisit gtk_css_style_get_static_style one more time
Move the implementation to where it belongs.
Matthias Clasen [Thu, 16 Jan 2020 18:56:07 +0000 (13:56 -0500)]
Change the signature of gtk_css_style_get_static_style
It is clearer if this function returns a GtkCssStaticStyle.
Matthias Clasen [Thu, 16 Jan 2020 17:17:49 +0000 (12:17 -0500)]
Quiet a compiler warning
This was causing warnings in a release build.
Matthias Clasen [Thu, 16 Jan 2020 17:10:31 +0000 (17:10 +0000)]
Merge branch 'static-style-getter' into 'master'
css: Add gtk_css_style_get_static_style
See merge request GNOME/gtk!1323
Matthias Clasen [Mon, 13 Jan 2020 03:44:58 +0000 (22:44 -0500)]
css: Add gtk_css_style_get_static_style
This lets us avoid poking directly at the GtkCssAnimatedStyle
struct in gtkcssnode.c.
Matthias Clasen [Thu, 16 Jan 2020 16:58:23 +0000 (16:58 +0000)]
Merge branch 'matthiasc/css-split-states' into 'master'
Split off some states in css change tracking
See merge request GNOME/gtk!1322
Matthias Clasen [Thu, 16 Jan 2020 01:27:12 +0000 (20:27 -0500)]
css: Track selected state separately
Like the previous change, this reduces the number of
css nodes reacting to parent-state changes. The remaining
parent-state cases here are due to :link.
Before (numbers from widget-factory with Adwaita):
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2245
hover 562
disabled 859
backdrop 1080
sibling-name 63
sibling-disabled 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 236
parent-hover 5
parent-disabled 91
parent-backdrop 4
After:
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2245
hover 562
disabled 859
backdrop 1080
selected 579
sibling-name 63
sibling-disabled 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 115
parent-hover 5
parent-disabled 91
parent-backdrop 4
parent-selected 144
Matthias Clasen [Thu, 16 Jan 2020 01:05:44 +0000 (20:05 -0500)]
css: Track backdrop state separately
Like the previous change, this reduces the number of
css nodes reacting to parent-state changes.
Before (numbers from widget-factory with Adwaita):
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2247
hover 562
disabled 859
sibling-name 63
sibling-disabled 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 236
parent-hover 5
parent-disabled 91
After:
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2245
hover 562
disabled 859
backdrop 1080
sibling-name 63
sibling-disabled 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 236
parent-hover 5
parent-disabled 91
parent-backdrop 4
Matthias Clasen [Thu, 16 Jan 2020 00:19:38 +0000 (19:19 -0500)]
css: Track disabled state separately
Significantly reduces the number of nodes that react to
parent-state changes.
Before (numbers from widget-factory with Adwaita):
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2247
hover 2247
sibling-name 63
sibling-state 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 2226
parent-hover 5
After:
2247 nodes
class 612
name 2246
id 2
first-child 148
last-child 156
state 2247
hover 562
disabled 859
sibling-name 63
sibling-disabled 51
parent-class 586
parent-name 788
parent-id 2
parent-first-child 78
parent-last-child 78
parent-state 236
parent-hover 5
parent-disabled 91
Matthias Clasen [Wed, 15 Jan 2020 20:10:06 +0000 (15:10 -0500)]
css: Track hover state changes separately
The idea is that this reduce the amount of frequently
changing state that css nodes are sensitive to.
This is going to reduce the amount of style recomputation.
Matthias Clasen [Thu, 16 Jan 2020 14:29:48 +0000 (14:29 +0000)]
Merge branch 'wip/carlosg/x11-dnd' into 'master'
X11 dnd fixes.
See merge request GNOME/gtk!1321
Carlos Garnacho [Thu, 16 Jan 2020 14:03:24 +0000 (15:03 +0100)]
gdkdrag/x11: Issue XdndLeave on cancellation
According to XDND "The XdndLeave message cancels the session.",
issue one when cancelling a drag, so the dest side has an opportunity
to forget about the GdkDrop.
Carlos Garnacho [Thu, 16 Jan 2020 14:02:16 +0000 (15:02 +0100)]
gdkdrag/x11: Drop timestamp argument from gdk_drag_do_leave()
This is not necessary for the XdndLeave message, nor used.
Carlos Garnacho [Mon, 13 Jan 2020 23:03:29 +0000 (00:03 +0100)]
gdk/x11: Ensure to hide DnD surface after failed operation
The drag source might be cached and held alive, only disposed after
future drag begin operations. Ensure the drag surface gets hidden
properly or might might stay transparent but mapped till then.
Carlos Garnacho [Mon, 13 Jan 2020 23:02:12 +0000 (00:02 +0100)]
gdk/x11: Ensure to sync type list after sending XdndEnter
Otherwise we are not ensured the GdkDrop is up-to-date, might even
be a stale one from an older DnD operation.
Carlos Garnacho [Mon, 13 Jan 2020 19:07:27 +0000 (20:07 +0100)]
gdk/x11: Serialize gtype content formats before sending Xdnd enter
This ensures GType handlers get serialized to mimetypes at the time
the drag dest inspects the XdndTypeList property.
Matthias Clasen [Mon, 13 Jan 2020 00:36:53 +0000 (19:36 -0500)]
Speed up gtk_widget_pick
Add early exits, and avoid as much work as
possible.
Matthias Clasen [Wed, 15 Jan 2020 15:58:54 +0000 (10:58 -0500)]
Fix the filetransfer portal initialization
Reusing the cancellable only works if you don't throw
it away after first use.
Matthias Clasen [Tue, 14 Jan 2020 22:38:20 +0000 (17:38 -0500)]
Try harder to make ci not timeout
Make getting the file transfer portal proxy more
async, and avoid leaking a bus connection. This
causes GTestDBus to hang at the end of the test
run.
Matthias Clasen [Tue, 14 Jan 2020 21:44:31 +0000 (16:44 -0500)]
css: Drop unsused bitmasks
GtkCssProvider was maintaining bitmasks for the
set properties in each ruleset. The masks are never
used, so drop them.
Matthias Clasen [Tue, 14 Jan 2020 21:42:31 +0000 (16:42 -0500)]
css: Remove an unused function
_gtk_css_style_property_get_mask_affecting was superseded
by GtkCssStyleChange back in 2015.
Matthias Clasen [Tue, 14 Jan 2020 00:32:40 +0000 (19:32 -0500)]
testsuite: Improve --generate support
We don't want annoying spew from GTest when
using --generate, since it interferes with just
piping the output to a text file.
Matthias Clasen [Mon, 13 Jan 2020 17:42:29 +0000 (12:42 -0500)]
quiet a compiler warning in release builds
Alex Samorukov [Tue, 14 Jan 2020 22:15:05 +0000 (22:15 +0000)]
Use bundle id instead of package name for the macOS preview as filename is now changed
Matthias Clasen [Tue, 14 Jan 2020 20:42:01 +0000 (15:42 -0500)]
fontchooser: Fix up the previous commit
Matthias Clasen [Tue, 14 Jan 2020 20:25:27 +0000 (15:25 -0500)]
fontchooser: Fix objects-finalize test
The treeview is evil and keeps reference cycles in the
form of various tree row references. That gets cleaned up
if you explicitly gtk_widget_destroy the treeview. But since
07f2024bfca22331121, the scrolled window no longer destroys
its child, exposing this issue as a reference leak in
the objects-finalize test.
The font chooser widget is affected here because it calls
gtk_tree_view_scroll_to_path from init(), which creates one
of those reference cycles. Work around this in the font
chooser by unsetting the tree view model in dispose, which
clears up this cycle.
Matthias Clasen [Tue, 14 Jan 2020 19:12:33 +0000 (14:12 -0500)]
Fix encoding symbolic pixbufs
This was broken in
1a931da0465966b62b56e145b82e691ece67af91.
Sucipto [Tue, 14 Jan 2020 15:11:27 +0000 (15:11 +0000)]
Update Indonesian translation
Matthias Clasen [Tue, 14 Jan 2020 14:20:18 +0000 (09:20 -0500)]
testsuite: Skip GtkDragIcon
GtkDragIcon needs a special surface, so skip it
in the notify tests.
Daniel Mustieles [Tue, 14 Jan 2020 11:39:44 +0000 (12:39 +0100)]
Updated Spanish translation
Kukuh Syafaat [Tue, 14 Jan 2020 06:27:18 +0000 (06:27 +0000)]
Update Indonesian translation
Matthias Clasen [Tue, 14 Jan 2020 06:08:24 +0000 (06:08 +0000)]
Merge branch 'adwaita-cross-fade-fix-gtk4' into 'master'
Adwaita: Fix syntax error in cross-fade() (GTK4)
Closes #2371
See merge request GNOME/gtk!1308
Matthias Clasen [Tue, 14 Jan 2020 06:06:35 +0000 (06:06 +0000)]
Merge branch 'wip/chergert/fix-dragicon-installation' into 'master'
build: fix gtkdragicon header installation
See merge request GNOME/gtk!1306
Matthias Clasen [Tue, 14 Jan 2020 06:03:48 +0000 (01:03 -0500)]
Handle lack of file transfer portal
Don't block for 25 seconds trying to get a bus
connection. Give up after 1 second.
Matthias Clasen [Fri, 10 Jan 2020 00:01:59 +0000 (19:01 -0500)]
gtk-demo: Use a default action in the infobars demo
This makes the question infobar activatable by clicking
anywhere in it.
Matthias Clasen [Thu, 9 Jan 2020 21:13:33 +0000 (16:13 -0500)]
Adwaita: Add hover for clickable infobars
Matthias Clasen [Thu, 9 Jan 2020 21:11:36 +0000 (16:11 -0500)]
infobar: Activate default action on clicks
When we have a default action set on the infobar, activate it
for clicks anywhere in the infobar. Also add an .action style
class in this case, so we can add a hover highlight to the infobar
just for this case.
Matthias Clasen [Tue, 14 Jan 2020 01:59:22 +0000 (01:59 +0000)]
Merge branch 'wip/chergert/textview-propagate-undo-state' into 'master'
textview: propagate GtkTextBuffer can-undo/redo action state
See merge request GNOME/gtk!1311
Christian Hergert [Tue, 14 Jan 2020 01:26:18 +0000 (17:26 -0800)]
textview: propagate GtkTextBuffer can-undo/redo action state
This ensures the action state for undo and redo are propagated from the
buffer. Doing so means menu items now properly show sensitivity.
Matthias Clasen [Mon, 13 Jan 2020 23:51:40 +0000 (23:51 +0000)]
Merge branch 'wip/chergert/textview-undo-menu-item' into 'master'
textview: add undo/redo menu actions
See merge request GNOME/gtk!1310
Christian Hergert [Mon, 13 Jan 2020 23:25:05 +0000 (15:25 -0800)]
textview: add undo/redo menu actions
nana-4 [Mon, 13 Jan 2020 21:19:12 +0000 (06:19 +0900)]
Adwaita: Fix syntax error in cross-fade()
cross-fade() requires two images.
Fixes https://gitlab.gnome.org/GNOME/gtk/issues/2371
Christian Hergert [Mon, 13 Jan 2020 17:07:24 +0000 (09:07 -0800)]
build: fix gtkdragicon header installation
Daniel Mustieles [Mon, 13 Jan 2020 15:51:22 +0000 (16:51 +0100)]
Updated Spanish translation
Daniel Mustieles [Mon, 13 Jan 2020 15:50:21 +0000 (16:50 +0100)]
Updated Spanish translation
Timm Bäder [Mon, 13 Jan 2020 14:12:51 +0000 (14:12 +0000)]
Merge branch 'wip/jimmac/updated-checkmark' into 'master'
Adwaita: update checkbox & radio
Closes #2291
See merge request GNOME/gtk!1289
Jakub Steiner [Mon, 6 Jan 2020 13:41:00 +0000 (14:41 +0100)]
Adwaita: update checkbox & radio
Fixes https://gitlab.gnome.org/GNOME/gtk/issues/2291
Matthias Clasen [Mon, 13 Jan 2020 05:00:12 +0000 (05:00 +0000)]
Merge branch 'closure-annotations' into 'master'
Fix incorrect use of GIR closure annotations.
See merge request GNOME/gtk!1305
Robert Ancell [Mon, 13 Jan 2020 01:26:50 +0000 (14:26 +1300)]
Add missing (closure) GIR annotations
Robert Ancell [Mon, 13 Jan 2020 01:11:15 +0000 (14:11 +1300)]
Fix incorrect use of GIR closure annotations.
They were being applied to the callback function, not the data that is passed
to that function.
Matthias Clasen [Mon, 13 Jan 2020 00:51:24 +0000 (00:51 +0000)]
Merge branch 'textbuffer-missing-api-docs' into 'master'
Add missing public API documentation.
See merge request GNOME/gtk!1301
Matthias Clasen [Mon, 13 Jan 2020 00:50:58 +0000 (00:50 +0000)]
Merge branch 'menutoolbutton-missing-api-docs' into 'master'
menutoolbutton: Add missing public API documentation.
See merge request GNOME/gtk!1303
Matthias Clasen [Mon, 13 Jan 2020 00:50:16 +0000 (00:50 +0000)]
Merge branch 'docstring-typos' into 'master'
Fix docstring errors with drag and drop code
See merge request GNOME/gtk!1304
Matthias Clasen [Mon, 13 Jan 2020 00:49:25 +0000 (00:49 +0000)]
Merge branch 'missing-transfer-notation' into 'master'
Add missing transfer notation for function return types.
See merge request GNOME/gtk!1302
Robert Ancell [Sun, 12 Jan 2020 23:30:17 +0000 (12:30 +1300)]
Fix docstring errors with drag and drop code
Robert Ancell [Sun, 12 Jan 2020 23:07:15 +0000 (12:07 +1300)]
textbuffer: Add missing public API documentation.
This API was added in
a52757874ee.
Robert Ancell [Sun, 12 Jan 2020 23:17:55 +0000 (12:17 +1300)]
menutoolbutton: Add missing public API documentation.
This API was added in
03e30431a8a
Robert Ancell [Sun, 12 Jan 2020 23:14:08 +0000 (12:14 +1300)]
Add missing transfer notation for function return types.
Matthias Clasen [Sun, 12 Jan 2020 01:13:05 +0000 (20:13 -0500)]
Adwaita: Fix needs-attention
Stack switchers are now stackswitcher, no longer .stack-switcher.
Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2370
Piotr Drąg [Sat, 11 Jan 2020 15:07:48 +0000 (16:07 +0100)]
Update POTFILES.in
Matthias Clasen [Sat, 11 Jan 2020 06:09:58 +0000 (06:09 +0000)]
Merge branch 'dnd-gestures-2' into 'master'
Add new dnd api
See merge request GNOME/gtk!1278
Matthias Clasen [Sat, 11 Jan 2020 05:31:40 +0000 (00:31 -0500)]
dragdest: More documentation
Matthias Clasen [Sat, 11 Jan 2020 02:56:26 +0000 (21:56 -0500)]
Update all callers
Matthias Clasen [Sat, 11 Jan 2020 02:50:21 +0000 (21:50 -0500)]
Reshuffle droptarget api a little bit
Add a ::drag-motion signal back, remove x,y from
the ::accept signal, and only emit ::accept once.
Matthias Clasen [Sat, 11 Jan 2020 04:41:46 +0000 (04:41 +0000)]
Merge branch 'wip/chergert/gtk4-gtk-main-sync' into 'master'
Rubustness fixes for gtk_main_sync()
See merge request GNOME/gtk!1299
Christian Hergert [Fri, 10 Jan 2020 23:04:44 +0000 (15:04 -0800)]
gtkmain: be deterministic in source removal
Fixes gtk_main_sync() to only remove a source if it has not
already executed (and been removed). The previous code was
using gtk_main_quit() directly which would be non-determinstic
based on the previous value in the return register.
Christian Hergert [Fri, 10 Jan 2020 23:00:10 +0000 (15:00 -0800)]
gtkmain: short-circuit gtk_main_sync() where no display
If there is no display, we will hit the slow path here which
can introduce long latencies in unit tests. This checks for
a NULL list of displays and simply short-circuits.