Compare commits

...

227 Commits

Author SHA1 Message Date
Matthias Clasen
e74e7766d1 Implement dashed and dotted underlines
This is implementing new support in Pango for
rendering dashed and dotted lines. This is currently
using a linear gradient for dashes and a repeat node
for dots.
2021-03-31 18:57:03 -04:00
Matthias Clasen
3973a14c07 cellrenderertext: Quiet compiler warnings
Handle new values of the PangoUnderline enumeration.
2021-03-31 18:57:03 -04:00
Matthias Clasen
68ab1576ce atspipango: Quiet compiler warnings
Handle new values of the PangoUnderline enum.
2021-03-31 18:57:03 -04:00
Matthias Clasen
8713aa911b Add missing overline color support
This was overlooked when overlines were added.

Without this, overlines will come out in the the
wrong color.
2021-03-31 17:51:16 -04:00
Matthias Clasen
b5df1299ec gsk: Add another test
Compare clipped repeat nodes. Must skip cairo here
since it blurred the child by scaling after rendering.

Also skip the gl renderer, since it hasn't been fixed
for this yet. ngl passes this test.
2021-03-31 16:49:31 -04:00
Matthias Clasen
6f62107656 testsuite: Rename next to ngl
Use specific names for renderers in the gsk tests.
Otherwise the tests may use the wrong renderer, or
the same renderer twice.
2021-03-31 14:59:43 -04:00
Matthias Clasen
f9457af128 ngl: Fix offscreen rendering with transforms
There was confusion here about the handling of the
modelview transform. The modelview transform we are
getting is already set up for rendering the node
we are given, so keep it - except for possible adding
an extra scale on top when the texture would otherwise
be too big.
2021-03-31 14:36:24 -04:00
Matthias Clasen
94f0a4ef2c ngl: Be explicit about offscreen clipping
Explicitly set all the input arguments.
This makes it clearer what is going on.
2021-03-31 14:34:16 -04:00
Matthias Clasen
53e75936cb ngl: Add sonme comments
The GskNglRenderOffscreen struct is a mix of in and
out arguments. Better annotate that a little bit.
2021-03-31 14:32:47 -04:00
Anders Jonsson
6c95fc7e87 Update Swedish translation 2021-03-30 17:13:11 +00:00
Matthias Clasen
f4cc9a47ad Merge branch 'docs' into 'master'
docs: Cover corner-case of @line_number = total lines in buffer

See merge request GNOME/gtk!3373
2021-03-30 16:09:34 +00:00
Matthias Clasen
ccbbc2f2ba 4.2.0 2021-03-30 11:00:55 -04:00
Matthias Clasen
8bc2ee63eb Actually build docs for releases 2021-03-30 11:00:54 -04:00
Matthias Clasen
68d634b31c Disable the border-image-url reftest
It seems to make assumptions about text positioning that
are not holding with subpixel positioning. I'm not 100%
sure how that leads to exactly the artifacts that are seen
here, but I am just disabling the test until that is fully
understood.
2021-03-30 11:00:54 -04:00
Matthias Clasen
d1c66f75e3 Disable flaky focus tests 2021-03-30 11:00:54 -04:00
Matthias Clasen
eba9cd8775 Disable the label-background reftest
It makes assumptions about text positioning that are
not holding with subpixel positioning. There is no
guarantee that the next word in a multi-word text
starts on an even pixel boundary, as it does when
you break the text into multiple, separately rendered
blocks.
2021-03-30 11:00:54 -04:00
Matthias Clasen
9606945ed8 Fix tests for new version 2021-03-30 11:00:54 -04:00
Matthias Clasen
d50d382032 Merge branch 'ebassi/dist-docs' into 'master'
build: Dist the API references

See merge request GNOME/gtk!3375
2021-03-30 14:58:53 +00:00
Emmanuele Bassi
5da3308572 build: Dist the API references
Copy them into the dist root from the build root, so that they will be
available in the release archive.
2021-03-30 15:42:40 +01:00
Jonas Ådahl
fb48699ba4 Merge branch 'issue3791-gtk4' into 'master'
gdk/wayland: Defer processing of globals closures

Closes #3791

See merge request GNOME/gtk!3374
2021-03-30 14:06:33 +00:00
Robert Mader
56d37ceed0 gdk/wayland: Defer processing of globals closures
... until all globals have been received.

The dependency tracking introduced in 4e9be39518 only allows to
specify required globals and processes the closures as soon as
the requirements have been met. There are, however, also optional
dependencies - most notably the primary_selection protocol.
Currently we rely on the fact that compositors like Mutter announce
it before `wl_seat`, even though the order is not specified in
the spec.

Process globals closures only after all globals have been announced,
so optional dependencies can be accommodated.

Closes https://gitlab.gnome.org/GNOME/gtk/-/issues/3791
2021-03-30 15:20:00 +02:00
Avinash Sonawane
622bb9186e docs: Cover corner-case of @line_number = total lines in buffer 2021-03-30 17:00:33 +05:30
Matthias Clasen
b77e05ce37 Merge branch 'ngl-text-tweaks' into 'master'
Ngl text tweaks

See merge request GNOME/gtk!3367
2021-03-30 11:15:13 +00:00
Matthias Clasen
ba4e66d189 ngl: Avoid a goto
Reshuffle the code slightly, so we can use a continue
instead.
2021-03-30 00:34:52 -04:00
Matthias Clasen
2c33550048 gsk: Avoid empty glyphs early
Strip out PANGO_GLYPH_EMPTY when text nodes are
constructed. Then we don't have to check this special
case in the inner loop in visit_text_node.
2021-03-30 00:34:52 -04:00
Matthias Clasen
3add99a9a8 ngl: Speed up glyph loop
Move some work out of the loop in visit_text_node.
This takes advantage of the fact that the yoffset
of most glyphs is zero, so yphase generally does
not change in a line of text.
2021-03-30 00:19:28 -04:00
Matthias Clasen
d4ea2e848d ngl: We only need two bits for phases
We use 4 phases, so 2 bits are enough.
2021-03-30 00:19:28 -04:00
Matthias Clasen
4c06889243 Updates 2021-03-30 00:18:48 -04:00
Matthias Clasen
ef544a8c3b Merge branch 'ngl-trivia' into 'master'
Ngl trivia

See merge request GNOME/gtk!3372
2021-03-30 04:16:00 +00:00
Matthias Clasen
6db9215dd1 Merge branch 'video-player-images' into 'master'
gtk-demo: Allow opening images in video player

See merge request GNOME/gtk!3371
2021-03-30 03:54:13 +00:00
Matthias Clasen
8b64f0147c gtk-demo: Allow opening images in video player
It works, so why not.
2021-03-29 23:40:17 -04:00
Matthias Clasen
5847f75c57 ngl: Cosmetics
Remove a local variable in gsk_render_job_visit_text_node.
2021-03-29 15:17:20 -04:00
Matthias Clasen
ce2c3efc91 ngl: Improve packing
Pack texture cache entries slightly better.

There was a 4 byte hole here.
2021-03-29 15:17:10 -04:00
Matthias Clasen
2599c5aed3 gsk: Typo fix 2021-03-29 15:16:44 -04:00
Matthias Clasen
bca39e2605 ngl: Typo fix 2021-03-29 15:16:25 -04:00
Matthias Clasen
ca0e1be03e Merge branch 'frame-rate-benchmark' into 'master'
Add a frame benchmark

See merge request GNOME/gtk!3364
2021-03-29 15:52:51 +00:00
Benjamin Otte
6569a877d8 Merge branch 'wip/otte/for-master' into 'master'
Wip/otte/for master

Closes #3810

See merge request GNOME/gtk!3366
2021-03-29 15:41:55 +00:00
Benjamin Otte
38fff37dae mediastream: Insist streams are prepared when they start playing
Applications expect that behavior, so don't let implementations get away
without preparing the stream.
2021-03-29 17:08:34 +02:00
Benjamin Otte
06be1f8b52 gstmedia: Ensure we prepare files without duration
In particular this fixes playback of images.

Fixes #3810
2021-03-29 17:08:34 +02:00
Matthias Clasen
43a1641dd7 Add a frame benchmark
This can be used to gauge what fps we can hope for
in the best case, on a given system.
2021-03-29 08:27:43 -04:00
Yosef Or Boczko
b21fba117f Update Hebrew translation
(cherry picked from commit 1beb550830)
2021-03-28 22:34:55 +00:00
Yosef Or Boczko
37d5f93610 Update Hebrew translation
(cherry picked from commit 4a7e08bb8e)
2021-03-28 21:31:44 +00:00
Matthias Clasen
52aea624a6 Merge branch 'text-node-tweak' into 'master'
textview: Tweak render nodes

See merge request GNOME/gtk!3362
2021-03-28 17:25:36 +00:00
Matthias Clasen
711acb6aa7 Merge branch 'smarter-diff' into 'master'
Smarter diff

See merge request GNOME/gtk!3361
2021-03-28 17:24:23 +00:00
Hugo Carvalho
3e94c5afa4 Update Portuguese translation
(cherry picked from commit ef7cbad45d)
2021-03-28 16:35:59 +00:00
Matthias Clasen
a75c038e09 textview: Tweak render nodes
Arrange for the contents to be in a single transform
node that is updated as we scroll. This makes the job
of the render node differ a lot easier, since it does
not have to compare to big containers one-by-one.
2021-03-28 10:59:55 -04:00
Matthias Clasen
146069058f Add some tests for node diffing
Nothing deep yet, but more can be added.
2021-03-28 10:45:40 -04:00
Matthias Clasen
2d5dd7b3d7 gsk: Make rendernode diffing smarter
Allow comparing container nodes to any other
node, by pretending the other node is a single
child container (if it isn't one already).

This fixes a glitch where we redraw the full
entry text when the blinking cursor goes to
opacity 0, since GskSnapshot then optimizes
away first the opacity node, and then the
single-child container.
2021-03-28 10:26:06 -04:00
Matthias Clasen
0904dd29c2 gsk: Use floorf for floats 2021-03-28 10:26:06 -04:00
Matthias Clasen
279b9347fd gsk: Cosmetics 2021-03-28 10:26:02 -04:00
Matthias Clasen
2a2ae16894 ngl: Cosmetics
Remove a commented out line that snuck in with
a recent commit.
2021-03-28 10:26:02 -04:00
Matthias Clasen
3e1a8aa286 Merge branch 'fix-memleaks' into 'master'
Fix memleaks

See merge request GNOME/gtk!3360
2021-03-28 14:23:35 +00:00
Matthias Clasen
db126a19b6 Plug a test memleak 2021-03-27 21:52:49 -04:00
Matthias Clasen
ffa50f4c24 Plug a memory leak in an error path 2021-03-27 21:44:19 -04:00
Matthias Clasen
e1866d8fbe Ignore pthread allocations in valgrind 2021-03-27 21:43:59 -04:00
Matthias Clasen
d24a0e9606 tests: Plug a memory leak 2021-03-27 21:13:25 -04:00
Matthias Clasen
b8693cc4f4 tests: Make the pixbuf test use TAP
Otherwise, meson just considers this test skipped.
2021-03-27 21:03:43 -04:00
Matthias Clasen
5d5adf6ee7 asan: Ignore leaks from librsvg
Turns out that there are some leaks from librsvg.
2021-03-27 21:03:43 -04:00
Matthias Clasen
dda69bd16d tests: Plug memory leaks
This one was pointed out by asan.
2021-03-27 21:03:43 -04:00
Matthias Clasen
926b855d14 Merge branch 'fix-memleaks' into 'master'
Fix memleaks

See merge request GNOME/gtk!3359
2021-03-27 23:47:05 +00:00
Matthias Clasen
afc3de6e04 notebook: Don't leak the pages property
We were misuing a transfer-full getter here.
2021-03-27 19:11:56 -04:00
Matthias Clasen
45f4090eec stack: Don't leak the pages property
We were misusing a transfer-full getter here.
2021-03-27 19:11:56 -04:00
Matthias Clasen
4cf69fbc5e builder: Plug a small memory leak
We were forgetting to free expression info
objects in one place.
2021-03-27 19:11:56 -04:00
Matthias Clasen
0c6da97147 builder: Add an assertion
This case is clearly not meant to happen.
Assert that it doesn't.
2021-03-27 19:11:56 -04:00
Matthias Clasen
8994635d39 settings: Plug a memory leak
It is rare that settings are finalized, but we
still shouldn't leak in that case.
2021-03-27 19:11:56 -04:00
Matthias Clasen
7644605dfc Plug a small memory leak 2021-03-27 19:11:56 -04:00
Matthias Clasen
97a9e23b85 bookmarklist: Avoid an invalid read
This shows up when running the objects-finalize
test under valgrind.
2021-03-27 19:11:56 -04:00
Matthias Clasen
478ecf8db4 Merge branch 'ngl-uninitialized-matrix' into 'master'
Ngl uninitialized matrix

See merge request GNOME/gtk!3358
2021-03-27 20:59:54 +00:00
Anders Jonsson
0e857862ab Update Swedish translation
(cherry picked from commit 86f3c11d1e)
2021-03-27 20:43:39 +00:00
Matthias Clasen
2bb4859031 ngl: Fix an uninitialized read
We were using the wrong matrix here.
valgrind pointed this point.
2021-03-27 16:32:58 -04:00
Matthias Clasen
7aef77a21a reftests: Plug a few memory leaks
Noticed in passing.
2021-03-27 16:25:28 -04:00
Matthias Clasen
e7f9d56da5 ngl: Fix an uninitialized read
We were using the wrong matrix here.
valgrind pointed this point.
2021-03-27 16:23:40 -04:00
Matthias Clasen
34883b7142 reftests: Plug a few memory leaks
Noticed in passing.
2021-03-27 16:23:17 -04:00
Matthias Clasen
23706a4a6d release: Actually include docs 2021-03-27 14:22:19 -04:00
Matthias Clasen
c52c944e33 Updates 2021-03-27 14:21:04 -04:00
Matthias Clasen
8540bea65e Merge branch 'file-chooser-fixes' into 'master'
File chooser fixes

See merge request GNOME/gtk!3356
2021-03-27 14:23:15 +00:00
Matthias Clasen
8ea4721d1e filechooser: Make / work as shortcut again
Typing / is meant to open the location entry, so
prevent search from capturing that key.
2021-03-27 09:57:00 -04:00
Matthias Clasen
e8a6b504f3 filechooser: Fix fallout from GtkText
Ever since the GtkText split, the focus is no longer
on an entry, but inside it. The filechooser was never
updated for that.
2021-03-27 09:54:20 -04:00
Matthias Clasen
06ab8f2167 filechooser: Make Ctrl-L work again
Prevent search from preempting the Ctrl-L shortcut
that is meant to show the location entry.
2021-03-27 09:53:43 -04:00
Matthias Clasen
b5558f3e97 layout: Be quiet about trivialities
Commit 8b82993dde added a noisy warning
to gtk_distribute_natural_allocation to quiet a
compiler warning. It turn out that the file chooser
managed to trigger this warning, so make it a quiet
return.
2021-03-27 08:59:21 -04:00
Matthias Clasen
bdd281c9ea release: Update included subprojects 2021-03-27 08:55:51 -04:00
Matthias Clasen
c9ab7c5750 Merge branch 'double-dead-keys' into 'master'
Double dead keys

See merge request GNOME/gtk!3355
2021-03-27 01:22:41 +00:00
Matthias Clasen
01f4e5c8cd Add some more compose tests
These tests changes to the algorithmic dead key
matching.
2021-03-26 20:38:45 -04:00
Matthias Clasen
8a567d7932 imcontext: Tweak dead key handling
Reshuffle things to allow for a limited amount of
dead key 'chaining'. We keep up to 2 dead keys in
the preedit, so you can type
<dead_acute> <dead_cedilla> <c>
to produce ḉ, while still getting ```c with
<dead_grave> <dead_grave> <dead_grave> <c>.
2021-03-26 20:38:45 -04:00
Matthias Clasen
dbcd24adf4 composetable: Limit algorithmic checking
Only check for combinations of up to 2 dead keys with
a base character. We don't want to spend ages generating
all permutations of long sequences.
2021-03-26 20:27:55 -04:00
Matthias Clasen
f6f07ba238 Merge branch 'icon-fallback' into 'master'
Icon fallback

See merge request GNOME/gtk!3353
2021-03-26 19:33:13 +00:00
Matthias Clasen
3ab07203ce widget-factory: Add missing icons
This removes all the cases where we were showing a missing-image
when running with the hicolor icontheme.
2021-03-26 14:34:40 -04:00
Matthias Clasen
6ba414216c widget-factory: Drop two icons from the iconview
This avoids the scrollbar by default, which is nice.
2021-03-26 13:30:46 -04:00
Matthias Clasen
775b45ef57 icons: Add text-x-generic
The file chooser needs at least one icon that we can
fall back to for non-directories. text-x-generic is
that icon.
2021-03-26 13:17:51 -04:00
Matthias Clasen
23cb72875d filechooser: Check that icons exist
Otherwise we end up showing missing-image in the
file chooser, and thats sad.
2021-03-26 13:17:51 -04:00
Matthias Clasen
5940de98dd icontheme: Add gtk_icon_theme_has_gicon
Add a utility function to check whether the icontheme
will produce something better than missing-image for
a GIcon. Obviously, we can only answer this question
if the GIcon is a themed icon the begin with.
2021-03-26 13:17:51 -04:00
Matthias Clasen
4028bd5bce widget-factory: Add emblem-shared-symbolic icon
We use it, so include it.
2021-03-26 11:59:37 -04:00
Matthias Clasen
b5608e93d2 icons: Sync color-select-symbolic with Adwaita
This icon changed a bit since we incorporated it.
2021-03-26 11:59:01 -04:00
Matthias Clasen
1ea2ea520f icons: Add system-run-symbolic
This is used by Adwaita for devel headers, so include it.
2021-03-26 11:42:09 -04:00
Matthias Clasen
922b2683b3 Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master

See merge request GNOME/gtk!3351
2021-03-26 15:30:51 +00:00
Matthias Clasen
6dcef28e12 icon: Add a printer icon
This showed up as missing icon in the print dialog when
used with the hicolor icontheme.
2021-03-26 11:30:14 -04:00
Matthias Clasen
08f68cce40 gdk: Add an arg check to gdk_device_get_timestamp
Pointed out by Emmanuele Bassi.
2021-03-26 11:09:50 -04:00
Matthias Clasen
7849590a82 gdk: Add gdk_device_get_timestamp
Give each device a timestamp that reflects the last
user activity with that device, as reflected in the
events that are produced for this device.
2021-03-26 11:09:05 -04:00
Matthias Clasen
c9b312c860 icons: Add icons that are used in the inspector
These were showing up as missing icons when opening
the Inspector with the hicolor icontheme:

system-search-symbolic
go-previous-symbolic
go-next-symbolic
display-brightness-symbolic
2021-03-26 11:00:01 -04:00
Matthias Clasen
6110980012 Merge branch 'device-timestamp' into 'master'
Device timestamp

Closes #3792

See merge request GNOME/gtk!3350
2021-03-26 14:51:37 +00:00
Matthias Clasen
019855a27f textview: Use device timestamps for obscured cursors
Stash away the device timestamp when obscuring
the pointer, and compare it when we decice whether
to unobscure it. This fixes a problem where synthetic
motion events would make the cursor reappear
prematurely.

Fixes: #3792
2021-03-26 10:30:33 -04:00
Matthias Clasen
cdfdf031b5 text: Use device timestamps for obscured cursors
Stash away the device timestamp when obscuring
the pointer, and compare it when we decice whether
to unobscure it. This fixes a problem where synthetic
motion events would make the cursor reappear
prematurely.
2021-03-26 10:30:33 -04:00
Matthias Clasen
f131d68fef gdk: Add gdk_device_get_timestamp
Give each device a timestamp that reflects the last
user activity with that device, as reflected in the
events that are produced for this device.
2021-03-26 10:30:33 -04:00
Matthias Clasen
3014649455 Merge branch 'pixbuf-loader-check' into 'master'
Make testsuite fail if we lack pixbuf loaders

See merge request GNOME/gtk!3348
2021-03-26 11:29:47 +00:00
Matthias Clasen
2496ab0902 Be explicit when building gdk-pixbuf subproject
We require png and jpeg loaders.
2021-03-25 22:52:30 -04:00
Matthias Clasen
50d42093b5 Make testsuite fail if we lack pixbuf loaders
Add a test that requires that we have png and jpeg
loaders.
2021-03-25 21:23:11 -04:00
Matthias Clasen
44481d355e Make testsuite fail if we lack pixbuf loaders
Add a test that requires that we have png and jpeg
loaders.
2021-03-25 21:22:23 -04:00
Matthias Clasen
6f82408056 Add logging for icon fallback
Add GTK_DEBUG=iconfallback which prints out what icon names
we fall back to image-missing for.
2021-03-25 17:26:15 -04:00
Matthias Clasen
cc64dbafbc Merge branch 'carlosgc/clipboard-crash' into 'master'
clipboard: Fix a crash when GdkContentProviderUnion doesn't support the given data format

See merge request GNOME/gtk!3346
2021-03-25 20:48:28 +00:00
Carlos Garcia Campos
50b70298c0 clipboard: Fix a crash when GdkContentProviderUnion doesn't support the given data format
After iterating all the providers, all of them returning unsupported
error, gdk_content_provider_union_get_value() returns FALSE without
filing the given GError. Then gdk_clipboard_read_value_internal()
assumes there's a GError when FALSE is returned and
g_task_return_error() fails. We can just chain up to parent
implementation to ensure the GError is filled with unsupported error.
2021-03-25 15:10:00 +01:00
Matthias Clasen
bd7df4b816 Merge branch 'shader' into 'master'
ngl: Fix crash with intel driver on Windows when compiling shaders

Closes #3783

See merge request GNOME/gtk!3344
2021-03-25 12:37:12 +00:00
Xavier Claessens
086e1ed39f ngl: Fix crash with intel driver on Windows when compiling shaders
Fixes #3783.
2021-03-25 08:20:30 -04:00
Matthias Clasen
fa57f20b87 Merge branch 'wip/fix-stack-get-item' into 'master'
stack: Fix some list model issues

See merge request GNOME/gtk!3345
2021-03-24 20:34:47 +00:00
Mohammed Sadiq
e211740da6 stack: Fix check if page is selected
When there is no visible child, gtk_selection_model_is_selected()
was returning TRUE for any invalid position.

So check if the page is non-NULL and match
2021-03-24 20:23:09 +05:30
Mohammed Sadiq
0351bc766c stack: Increase reference only if page is non-NULL
g_list_nth_data() may return NULL if position is off the end
2021-03-24 20:21:13 +05:30
Matthias Clasen
5531906973 Merge branch 'gles-fallback' into 'master'
gdkglcontext-wayland: Fallback to GLES 2.0 after legacy failed

See merge request GNOME/gtk!3327
2021-03-24 11:21:21 +00:00
Matthias Clasen
9d6190bc3c Merge branch 'gdkmacosglcontext-fix' into 'master'
gdkmacosglcontext: fix compilation error

See merge request GNOME/gtk!3342
2021-03-24 11:09:51 +00:00
Tom Schoonjans
d5de73fb9d gdkmacosglcontext: fix compilation error
See https://developer.apple.com/documentation/appkit/nsopenglpixelformat/1436219-initwithattributes?language=occ
2021-03-24 10:08:11 +00:00
Matthias Clasen
b539c92312 Merge branch 'builder-tool-placeholder-crash' into 'master'
gtk-builder-tool: Avoid a crash with <placeholder/>

Closes #3781

See merge request GNOME/gtk!3339
2021-03-23 21:02:39 +00:00
Matthias Clasen
272d8a6800 Merge branch 'wip/chergert/ngl-fix-windows-intel-driver' into 'master'
ngl: move uniform key mapping into uniform state

Closes #3780

See merge request GNOME/gtk!3340
2021-03-23 21:02:11 +00:00
Christian Hergert
f8a6a09896 ngl: move uniform key mapping into uniform state
Previously, we translated the uniform key (an enum) into a location within
the shader program in GskNglProgram. A number of performance improvements
were focused around having low nubers for the uniform locations. Generally
this is the case, but some drivers such as old Intel drivers on Windows
may use rather large numbers for those.

To combat this, we can push the translation of uniform keys into locations
at the GskNglUniformState level so that we work with unranslated keys
through the process until applying them.

Fixes #3780
2021-03-23 13:44:26 -07:00
Matthias Clasen
6a66ccd3e6 gtk-builder-tool: Avoid a crash with <placeholder/>
Not sure we can do much with a ui file that has
<placeholder/> elements littered throughout. But
at least we can avoid crashing while trying to
convert it.

Fixes: #3781
2021-03-23 15:25:53 -04:00
Emmanuele Bassi
1f6b556972 Merge branch 'ebassi/for-master' into 'master'
Ebassi/for master

See merge request GNOME/gtk!3338
2021-03-23 15:39:47 +00:00
Emmanuele Bassi
3668541eaa docs: Add a side bar to the docs.gtk.org landing page
Make it look like the API references hosted on docs.gtk.org.
2021-03-23 14:58:03 +00:00
Emmanuele Bassi
a6727326e3 docs: Update the Cairo reference link 2021-03-23 14:49:20 +00:00
Emmanuele Bassi
1507099dc7 Merge branch 'ebassi/for-master' into 'master'
Publish docs for Pango and GdkPixbuf

See merge request GNOME/gtk!3337
2021-03-23 13:39:18 +00:00
Emmanuele Bassi
2bc7abceae docs: Drop the external class for links to docs.gtk.org 2021-03-23 13:13:53 +00:00
Emmanuele Bassi
a9a5622214 docs: Link Pango and GdkPixbuf on docs.gtk.org 2021-03-23 13:13:53 +00:00
Emmanuele Bassi
0560397aa8 ci: Build Pango and GdkPixbuf's docs
We want to publish them alongside GTK's own API reference.
2021-03-23 13:13:53 +00:00
Matthias Clasen
4e06787a1b Merge branch 'bilelmoussaoui/expressions-annotations' into 'master'
Add missing nullable annotations to BoolFilter/StringFilter

See merge request GNOME/gtk!3334
2021-03-23 00:49:54 +00:00
Matthias Clasen
610ba0e764 Merge branch 'issue3715-gtk4' into 'master'
[gtk4] x11/dnd: Ignore XErrors from the COW

Closes #3715

See merge request GNOME/gtk!3336
2021-03-22 15:09:42 +00:00
Olivier Fourdan
80ba38a0b3 x11/dnd: Ignore XErrors from the COW
The DnD code for X11 adds the composite overlay window (aka COW) to the
cache.

Yet the X11 requests to get and release the COW may trigger XErrors that
we ought to ignore otherwise the client will abort.

Fixes: #3715
2021-03-22 15:38:58 +01:00
Chun-wei Fan
5d3af346dd Merge branch 'really-fix-3581' into 'master'
GDK-Win32: Remove extraneous call to _gdk_win32_append_event() (really fix issue #3581)

Closes #3581

See merge request GNOME/gtk!3306
2021-03-22 14:18:44 +00:00
Matthias Clasen
d882def373 Merge branch 'meson-install-script' into 'master'
Meson: Use gnome.install_script()

See merge request GNOME/gtk!3135
2021-03-22 12:45:45 +00:00
Bilal Elmoussaoui
3761dbba8b gtk: add missing nullable annotations to StringFilter 2021-03-22 12:42:19 +01:00
Bilal Elmoussaoui
ae7b19c760 gtk: add missing nullable annotations to BoolFilter 2021-03-22 12:42:13 +01:00
Matthias Clasen
157218c507 Merge branch 'wip/baedert/for-master' into 'master'
ngl: Remove unused function

See merge request GNOME/gtk!3332
2021-03-22 11:17:58 +00:00
Matthias Clasen
60325df7db Merge branch 'better-dead-keys' into 'master'
Better dead keys

See merge request GNOME/gtk!3329
2021-03-22 02:37:14 +00:00
Matthias Clasen
64a62ebcfb Regenerate compose sequence file
Update our compose sequences based on the current
update xorg Compose.pre file. Beyond that, remove
some deadkey sequences that we are now handling
(better) in code.
2021-03-21 21:48:03 -04:00
Matthias Clasen
a42a133a18 Move compose related tooling to a subdir
This reduces the clutter in gtk/.
2021-03-21 21:48:03 -04:00
Matthias Clasen
a41cd9b1fa compose-parse: Add a negative lookaside
Make this script parse gtk-compose-remove.txt for
sequences to remove from the xorg Compose file.
This will be used for removing some deadkey combinations
that we can handle better in code.

Also, make this script explicitly python2. I tried
porting it to python3, but gave up in the end.
2021-03-21 21:48:03 -04:00
Matthias Clasen
8bfc6afe33 imcontext: Improve dead key handling more
For sequences like ``, we want to commit the first
deadkey and then continue preedit with the second.

The alternative is to do chained deadkeys, where
entering ~~a yields ̃̀̃̃a. But we don't do that, and
I think that would be more controversial.
2021-03-21 21:48:03 -04:00
Matthias Clasen
5b67e6817c imcontext: Improve dead key handling
For sequences like `x, where we don't have a compose
sequence, we still want to commit "`x", and not silently
eat the keys.
2021-03-21 21:48:01 -04:00
Matthias Clasen
48f87c1eea Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master

See merge request GNOME/gtk!3328
2021-03-21 20:48:04 +00:00
Emmanuel Gil Peyrot
aced6030ee gdkglcontext-wayland: Fallback to GLES 2.0 after legacy failed
This lets the NGL backend be selected instead of the Cairo backend on
devices which expose both GL and GLES, but have better support of GLES.

Tested on a PinePhone.
2021-03-21 20:37:04 +00:00
Matthias Clasen
c5aa35f8ef inspector: Allow inspecting Unicode
Add a way to show text as a Unicode sequence.
This can be helpful in understanding what is
happening with text.
2021-03-21 16:05:10 -04:00
Matthias Clasen
7a56aa910e ngl: Fix a rounding error in subpixel positioning
1024 / 4 is 256, not 250.
2021-03-21 16:05:10 -04:00
Matthias Clasen
bd0df03248 gl: Fix a rounding error in subpixel positioning
1024 / 4 is 256, not 250.
2021-03-21 16:05:10 -04:00
Matthias Clasen
df4b564d69 build: Disable g_assert in release builds
The ngl renderer is heavily using g_assert, and it
is written with the assumption that these assertions
will be compiled out in release builds.
2021-03-21 16:05:10 -04:00
Matthias Clasen
9640bfb3fe calendar: Typo fix 2021-03-21 16:05:10 -04:00
Matthias Clasen
2e69273922 ngl: Remove an unused field
We are ignoring the debug nodes, so the
debug_groups string chunk is unused.
2021-03-21 16:05:10 -04:00
Matthias Clasen
1e014f4291 ngl: Always populate the glyph front cache
There is no reason not to do this also in the
case when we upload the glyph.
2021-03-21 16:05:10 -04:00
Matthias Clasen
fbe47106e7 ngl: Use floorf consistently 2021-03-21 16:05:10 -04:00
Timm Bäder
ea93c40644 ngl: Remove unused function 2021-03-21 18:00:10 +01:00
Piotr Drąg
1a3f2acb95 Update Polish translation 2021-03-20 15:41:34 +01:00
Emmanuele Bassi
fb8592952d Merge branch 'ebassi/for-master' into 'master'
Ebassi/for master

See merge request GNOME/gtk!3324
2021-03-20 12:31:10 +00:00
Emmanuele Bassi
216a262651 docs: Put core deps below UI links
We assume people will be more interested in GTK if they get to
docs.gtk.org.
2021-03-20 12:18:42 +00:00
Emmanuele Bassi
0178cdbdf2 docs: Fix typo in the docs landing page 2021-03-20 12:18:26 +00:00
Yuri Chornoivan
b84d959d31 Update Ukrainian translation 2021-03-20 08:54:01 +00:00
Yuri Chornoivan
3eca28e4b5 Update Ukrainian translation 2021-03-20 08:51:46 +00:00
Emmanuele Bassi
98a91a3290 Merge branch 'a11y-strdup' into 'master'
a11y: Don't copy attribute names in attribute sets

See merge request GNOME/gtk!3323
2021-03-19 22:31:37 +00:00
Matthias Clasen
3cfe69d711 a11y: Don't copy attribute names in attribute sets
We only need these names when serializing a11y information
for tests. And copying these strings is entirely unnecessary.
So, just pass a callback instead.
2021-03-19 17:01:28 -04:00
Matthias Clasen
b9da74590b Merge branch 'ngl-glyph-cache' into 'master'
Ngl glyph cache

See merge request GNOME/gtk!3322
2021-03-19 18:59:33 +00:00
Matthias Clasen
b253aca883 ngl: Improve the glyph front cache
The effectiveness of the front cache is limited by
subpixel positioning making it very likely that we
will meet the same glyph in  different x phases inside
a single line of text.

Factoring the xphase into the front cache key makes things
better. For the string eeeeeeeeeeeeeeeeeee

before: 0% front cache hits
after: >90% front cache hits
2021-03-19 14:32:03 -04:00
Matthias Clasen
5ac7f7c2f6 ngl: Drop an unused struct member
GskNglGlyphLibrary.hash_table wasn't used.
2021-03-19 14:05:15 -04:00
Matthias Clasen
9981f19409 texttag: A few typo fixes 2021-03-19 14:04:27 -04:00
Emmanuele Bassi
dae59112d7 Merge branch 'ebassi/for-master' into 'master'
Ebassi/for master

See merge request GNOME/gtk!3321
2021-03-19 17:57:42 +00:00
Emmanuele Bassi
f25beff7a6 docs: Restructure the list of UI libraries
Put GTK at the top.
2021-03-19 17:23:46 +00:00
Emmanuele Bassi
130ed3d5e5 docs: Fix typo in the docs landing page 2021-03-19 17:23:29 +00:00
Matthias Clasen
830efa6ce2 Revert "ngl: Remove duplicate check"
This reverts commit 1fd534ef1e.

This change revealed that we are not treating damage regions
correctly, and we regularly end up with
2021-03-19 13:17:02 -04:00
Emmanuele Bassi
a33e32ef60 Merge branch 'ebassi/for-master' into 'master'
Fix the landing page structure

See merge request GNOME/gtk!3320
2021-03-19 14:55:12 +00:00
Emmanuele Bassi
aaffd902fd Fix the landing page structure 2021-03-19 14:36:34 +00:00
Emmanuele Bassi
972a06c038 Merge branch 'pages-index' into 'master'
Add a landing page for the GitLab pages root

See merge request GNOME/gtk!3319
2021-03-19 14:14:46 +00:00
Emmanuele Bassi
1763ede9ce Add a landing page for the GitLab pages root
Right now, we land inside a 404 if we go to:

  https://gnome.pages.gitlab.gnome.org/gtk/

as we have all our API references in a sub-level. We should have a
landing page for the root, similar to developer.gnome.org/references/.
2021-03-19 13:54:32 +00:00
Matthias Clasen
f5fb8a95f4 Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master

See merge request GNOME/gtk!3317
2021-03-19 05:44:39 +00:00
Matthias Clasen
948e032072 text tag: Typo fix 2021-03-18 22:53:37 -04:00
Matthias Clasen
21aa8ae29f Cosmetics
Remove a stale comment.
2021-03-18 22:53:37 -04:00
Matthias Clasen
4fce3ceffc Cosmetics
Pack the GtkTextAttributes struct better.
2021-03-18 22:53:37 -04:00
Matthias Clasen
95a5e7b438 release script: Include gi-docgen
This lets us say 'you don't need to package this'
about gi-docgen.
2021-03-18 22:53:27 -04:00
Matthias Clasen
8fdedbd73b Merge branch 'ngl-by-default' into 'master'
gsk: Make ngl the default OpenGL renderer

See merge request GNOME/gtk!3313
2021-03-19 02:01:34 +00:00
Matthias Clasen
b962a0f166 Merge branch 'wip/chergert/fix-ngl-cache-eviction' into 'master'
fix ngl cache eviction

Closes #3771

See merge request GNOME/gtk!3316
2021-03-19 01:59:29 +00:00
Christian Hergert
0f0ee97e1e ngl: clear Glyph front cache at the beginning of a frame
We don't want to be responsible for duplicating the effort of the hash
table, we just want to speed up subsequent lookups. Otherwise, we risk
not marking glyph usage when tracking usage for compaction.
2021-03-18 18:00:04 -07:00
Christian Hergert
af80f3a976 ngl: implement atlas compaction
This required finishing up the begin_frame/end_frame semantics for
GskNglTextureLibraryw which was apparently overlooked.

The driver was changed to provide more information to the library when
beginning frames. We do not need to use end_frame so that was removed.

The frame age is the same as GL (60) but I do wonder if that is based
on seconds if we should be using something longer for situations where
we have higher frame rates.

Fixes #3771
2021-03-18 17:59:56 -07:00
Matthias Clasen
1536f6a59c Merge branch 'matthiasc/for-master' into 'master'
inspector: Respect GDK_DEBUG=vulkan-disable

Closes #3748

See merge request GNOME/gtk!3312
2021-03-18 21:43:14 +00:00
Matthias Clasen
574b0bf48a Merge branch 'bilelmoussaoui/4.2-annotations' into 'master'
IMContext: add since annotations to the new APIs

See merge request GNOME/gtk!3315
2021-03-18 21:42:35 +00:00
Bilal Elmoussaoui
0b100229e3 IMContext: add since annotations to the new APIs 2021-03-18 22:25:38 +01:00
Matthias Clasen
19d9c78514 gsk: Make ngl the default OpenGL renderer
We will keep the original GL renderer around for
a while, to have an alternative. But we want to
get wider testing of the new renderer.
2021-03-18 15:00:39 -04:00
Matthias Clasen
140b7f0a61 Merge branch 'wip/chergert/fix-3770' into 'master'
ngl: ensure vertices buffer allocates enough vertices

Closes #3770

See merge request GNOME/gtk!3314
2021-03-18 17:55:26 +00:00
Christian Hergert
56daad9c35 ngl: ensure vertices buffer allocates enough vertices
It's not guaranteed that a single power of two growth will be enough.

Fixes #3770
2021-03-18 10:43:24 -07:00
Matthias Clasen
eaf09a4625 Cosmetics
Pango lets us pass NULL for the font desc and language
in pango_context_get_font_metrics() to use the context
values.
2021-03-18 07:52:03 -04:00
Matthias Clasen
a576bd190b inspector: Respect GDK_DEBUG=vulkan-disable
Respect the debug settings for disabling Vulkan or GL,
and do not try to initialize those contexts. This can
be necessary to work around crashes.

Fixes: #3748
2021-03-17 23:19:08 -04:00
Matthias Clasen
2ce92085e1 Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master

Closes #3765

See merge request GNOME/gtk!3311
2021-03-18 00:31:10 +00:00
Matthias Clasen
e6b1443fbb label: Fix tooltips on links
Fix pointed out by Timm Baeder.

Fixes: #3765
2021-03-17 19:46:02 -04:00
Matthias Clasen
60ccae000b media: Always use GL with gstreamer
As long as we can create a GL context, pass one to
gstreamer. This at least gets us GL textures with
the ngl renderer, the previous code was arbitrarily
refusing that.
2021-03-17 16:28:12 -04:00
Timm Bäder
7ecd004d50 Merge branch 'gsk-border-node-diff-fix-typo' into 'master'
Fix a typo in gsk_border_node_diff

See merge request GNOME/gtk!3310
2021-03-17 16:04:57 +00:00
Andrey Kozlovskiy
6b48fb767d Fix a typo in gsk_border_node_diff
Typo was introduced in !3278 and results in an incorrect handling of different uniformity.
2021-03-17 15:38:01 +00:00
Emmanuele Bassi
6d4f93bb7f Merge branch 'select-list-model-null' into 'master'
gtk: Allow selection models to take null list model during construction

See merge request GNOME/gtk!3309
2021-03-17 14:09:37 +00:00
Matthias Clasen
cfe8c0e187 Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master

Closes #3763

See merge request GNOME/gtk!3308
2021-03-17 12:32:45 +00:00
Matthias Clasen
6d5657eee7 lpr: Fix various compiler warnings
gcc 11 is warning about some const mixups here.
Fix them.
2021-03-17 07:56:07 -04:00
Matthias Clasen
600cbdb7ba treestore: Initialize some local variables
gcc 11 is warning that these might be used uninitialized
otherwise.
2021-03-17 07:51:27 -04:00
Matthias Clasen
8b82993dde sizerequest: Avoid a corner case
gcc 11 warns that the code isn't safe when
n_requested_sizes is 0. Add a precondition check
to make it clear that that never happens.
2021-03-17 07:50:24 -04:00
Matthias Clasen
ea185cbdda cssshadowvalue: Handle error condition propertly
We were parsing off the end of our array before noticing
that we've gone too far. gcc 11 warns about this.
2021-03-17 07:49:06 -04:00
Matthias Clasen
ee837dfc12 checkbutton: Add a warning about cyclic groups
Setting up check or toggle button group relationships
in a cycle will lead to lockups. Add a warning about
this, and catch the simplest case with a precondition
check.

Fixes: #3763
2021-03-17 07:38:57 -04:00
Matthias Clasen
1d888bff43 Drop the gtk-doc subproject
No longer used.
2021-03-17 07:28:31 -04:00
Chun-wei Fan
38ad068d9b GDK-Win32: Remove extraneous call to _gdk_win32_append_event()
Apparently, by comparing with the other backends, we should not call
_gdk_win32_append_event() after calling gdk_scroll_event_new() but we should
call it after calling gdk_scroll_event_new_discrete(), which was why we didn't
restore the cursor after we scroll using the mouse wheel and didn't manage to
remove the shade that appears after we scrolled to the very top or very bottom.

Also, as suggested by the reporter, use IDC_SIZEALL for the system cursor that
we fall back to if no cursor theme is installed, as with other Windows
programs.

This should really fix issue #3581.
2021-03-17 11:22:23 +08:00
Balázs Úr
45c8c6c77f Update Hungarian translation 2021-03-16 23:49:27 +00:00
Matthias Clasen
ceed7d1ba4 Merge branch 'matthiasc/for-master' into 'master'
dnd: Add some warnings to the docs

See merge request GNOME/gtk!3305
2021-03-16 19:12:05 +00:00
Matthias Clasen
74e2bb4cf1 dnd: Add some warnings to the docs
Add some warnings about pitfalls of the async dnd api.
2021-03-16 14:48:44 -04:00
Matthias Clasen
cc6bb13242 Merge branch 'kjellahl/cairo-subproject' into 'master'
Fix build when cairo is a subproject

See merge request GNOME/gtk!3304
2021-03-16 11:43:06 +00:00
Kjell Ahlstedt
50beae7541 meson: Find libcairo-script-interpreter when cairo is a subproject
If cairo is a subproject, it's not necessarily installed when gtk
is built. In the build tree, libcairo-script-interpreter is not stored
in the same directory as other cairo libraries.
2021-03-16 11:47:28 +01:00
Kjell Ahlstedt
0f6b91109e gdkglcontext-x11: Don't assume that cairo-xlib.h is in cairo directory
If cairo is a subproject, it's not necessarily installed when gtk
is built. In the source tree, cairo's headers are not stored in
a directory called 'cairo'.
2021-03-16 11:47:16 +01:00
Matthias Clasen
f279c7b1c2 Merge branch 'fix-3581' into 'master'
gdkcursor-win32.c: Add cursor map for all-scroll (issue #3581)

Closes #3581

See merge request GNOME/gtk!3298
2021-03-15 22:32:23 +00:00
Matthias Clasen
08b27848e1 Merge branch 'fix-wayland-layout-changes' into 'master'
Fix wayland layout changes

See merge request GNOME/gtk!3303
2021-03-15 22:31:08 +00:00
Matthias Clasen
e3dcc3d369 wayland: Fix cross-layout accelerators
GTK traditionally lets you activate keyboard shortcuts
even if they are for a non-active layout. But it is meant
to only activate with a keysym from a non-active layout
when that symbol is not present in the current layout.
That last condition was lost when key event handling
was redone for GTK4. Bring it back.
2021-03-15 17:14:49 -04:00
Matthias Clasen
568fe2e97b wayland: Add debug spew for active keyboard layouts
Print out what we think the active keyboard layout is,
when it changes, with GDK_DEBUG=input.
2021-03-15 17:14:49 -04:00
Jason Francis
cd77485193 gtk: Allow selection models to take null list model during construction
This brings it in line with the documentation, and with the respective
set_model() functions.
2021-03-15 15:55:47 -04:00
Matthias Clasen
ec0e76dabd Merge branch 'issue-3757' into 'master'
docs: Update annotations for WidgetClass.query_action()

Closes #3757

See merge request GNOME/gtk!3301
2021-03-15 19:28:17 +00:00
Matthias Clasen
1eebf0ebd1 wayland: Emit keys-changed on layout changes
We were forgetting to do this in when layout changes are
communicated via handle_modifiers.
2021-03-15 12:34:23 -04:00
Emmanuele Bassi
0a7af75639 docs: Update annotations for WidgetClass.query_action()
The parameter_type and property_name out arguments can be set to NULL.

Fixes: #3757
2021-03-15 13:48:35 +00:00
Milo Casagrande
72012113fd Update Italian translation
(cherry picked from commit affeff5472)
2021-03-15 09:25:36 +00:00
Chun-wei Fan
54b3048584 gdkcursor-win32.c: Add cursor map for all-scroll
This makes sure that we don't have cursors disappearing on Windows upon
scrolling because we can't find a cursor that exists on the system during
a scroll, and unlike GTK-3.x, we do not default to the arrow pointer on GTK4.

Just mimic what we have on X11 and Wayland: the trusty standard arrow pointer.

Fixes issue #3581.
2021-03-15 17:16:33 +08:00
Matthias Clasen
3daad8fe87 release-script: Actually compress the docs tarball
Somehow an x got lot and the tarball got very big. Oops...
2021-03-14 23:33:10 -04:00
Benjamin Otte
a1c1ad317b Merge branch 'wip/otte/for-master' into 'master'
Wip/otte/for master

See merge request GNOME/gtk!3297
2021-03-15 02:31:45 +00:00
Benjamin Otte
dbd19bf27a x11: Don't call _gdk_surface_update_size() all the time
We were calling _gdk_surface_update_size() every frame, even if the
window size didn't change. This would cause us to discard all cached
buffers and redraw the whole screen.

This was BAD.
2021-03-15 03:16:50 +01:00
Benjamin Otte
97fad45237 surface: Remove unused gdk_surface_get_unscaled_size()
Also remove unscaled_width/height members in the win32 backend.

Both of those are unused.
2021-03-15 02:56:28 +01:00
Benjamin Otte
1fd534ef1e ngl: Remove duplicate check
We check the extents, so there's no need to check overlap before.
2021-03-15 01:30:34 +01:00
Xavier Claessens
629e70f89d Meson: Use gnome.post_install()
See https://github.com/mesonbuild/meson/pull/8272 and
https://github.com/mesonbuild/meson/issues/8268.
2021-03-08 21:19:09 -05:00
238 changed files with 29644 additions and 23207 deletions

View File

@@ -287,9 +287,9 @@ reference:
stage: docs
needs: []
variables:
EXTRA_MESON_FLAGS: "--buildtype=release"
EXTRA_MESON_FLAGS: "--buildtype=release --force-fallback-for=gdk-pixbuf,pango"
script:
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true _build
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build
- meson compile -C _build
- mkdir -p _reference/
- mv _build/docs/reference/gdk/gdk4/ _reference/gdk4/
@@ -297,6 +297,14 @@ reference:
- mv _build/docs/reference/gdk/gdk4-wayland/ _reference/gdk4-wayland/
- mv _build/docs/reference/gsk/gsk4/ _reference/gsk4/
- mv _build/docs/reference/gtk/gtk4/ _reference/gtk4/
- mv _build/subprojects/pango/docs/Pango/ _reference/Pango/
- mv _build/subprojects/pango/docs/PangoCairo/ _reference/PangoCairo/
- mv _build/subprojects/pango/docs/PangoFc/ _reference/PangoFc/
- mv _build/subprojects/pango/docs/PangoFT2/ _reference/PangoFT2/
- mv _build/subprojects/pango/docs/PangoOT/ _reference/PangoOT/
- mv _build/subprojects/pango/docs/PangoXft/ _reference/PangoXft/
- mv _build/subprojects/gdk-pixbuf/docs/gdk-pixbuf/ _reference/gdk-pixbuf/
- mv _build/subprojects/gdk-pixbuf/docs/gdk-pixdata/ _reference/gdk-pixdata/
artifacts:
paths:
- _reference
@@ -306,6 +314,7 @@ pages:
needs: ['reference']
script:
- mv _reference/ public/
- cp .gitlab-ci/pages/* public/
artifacts:
paths:
- public

154
.gitlab-ci/pages/fonts.css Normal file
View File

@@ -0,0 +1,154 @@
/*
* SPDX-FileCopyrightText: 2021 GNOME Foundation
*
* SPDX-License-Identifier: LGPL-2.1-or-later
*/
/**
* RedHat Fonts taken from https://github.com/RedHatOfficial/RedHatFont
* License: SIL Open Font License 1.1 http://scripts.sil.org/OFL
*/
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif:ital,wght@0,400;0,700;1,400;1,700&family=Red+Hat+Display:ital,wght@0,400;0,500;0,700;0,900;1,400;1,500;1,700;1,900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600&display=swap');
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-Regular.woff2") format("woff2"),
url("RedHatDisplay-Regular.woff") format("woff");
font-style: normal;
font-weight: 400;
font-display: fallback;
}
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-RegularItalic.woff2") format("woff2"),
url("RedHatDisplay-RegularItalic.woff") format("woff");
font-style: italic;
font-weight: 400;
font-display: fallback;
}
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-Medium.woff2") format("woff2"),
url("RedHatDisplay-Medium.woff") format("woff");
font-style: normal;
font-weight: 500;
font-display: fallback;
}
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-MediumItalic.woff2") format("woff2"),
url("RedHatDisplay-MediumItalic.woff") format("woff");
font-style: italic;
font-weight: 500;
font-display: fallback;
}
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-Bold.woff2") format("woff2"),
url("RedHatDisplay-Bold.woff") format("woff");
font-style: normal;
font-weight: 700;
font-display: fallback;
}
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-BoldItalic.woff2") format("woff2"),
url("RedHatDisplay-BoldItalic.woff") format("woff");
font-style: italic;
font-weight: 700;
font-display: fallback;
}
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-Black.woff2") format("woff2"),
url("RedHatDisplay-Black.woff") format("woff");
font-style: normal;
font-weight: 900;
font-display: fallback;
}
@font-face {
font-family: "RedHatDisplayWeb";
src: local('RedHatDisplayWeb'),
url("RedHatDisplay-BlackItalic.woff2") format("woff2"),
url("RedHatDisplay-BlackItalic.woff") format("woff");
font-style: italic;
font-weight: 900;
font-display: fallback;
}
@font-face {
font-family: "RedHatTextWeb";
src: local('RedHatTextWeb'),
url("RedHatText-Regular.woff2") format("woff2"),
url("RedHatText-Regular.woff") format("woff");
font-style: normal;
font-weight: 400;
font-display: fallback;
}
@font-face {
font-family: "RedHatTextWeb";
src: local('RedHatTextWeb'),
url("RedHatText-RegularItalic.woff2") format("woff2"),
url("RedHatText-RegularItalic.woff") format("woff");
font-style: italic;
font-weight: 400;
font-display: fallback;
}
@font-face {
font-family: "RedHatTextWeb";
src: local('RedHatTextWeb'),
url("RedHatText-Medium.woff2") format("woff2"),
url("RedHatText-Medium.woff") format("woff");
font-style: normal;
font-weight: 700;
font-display: fallback;
}
@font-face {
font-family: "RedHatTextWeb";
src: local('RedHatTextWeb'),
url("RedHatText-MediumItalic.woff2") format("woff2"),
url("RedHatText-MediumItalic.woff") format("woff");
font-style: italic;
font-weight: 700;
font-display: fallback;
}
@font-face {
font-family: "RedHatTextWeb";
src: local('RedHatTextWeb'),
url("RedHatText-Bold.woff2") format("woff2"),
url("RedHatText-Bold.woff") format("woff");
font-style: normal;
font-weight: 900;
font-display: fallback;
}
@font-face {
font-family: "RedHatTextWeb";
src: local('RedHatTextWeb'),
url("RedHatText-BoldItalic.woff2") format("woff2"),
url("RedHatText-BoldItalic.woff") format("woff");
font-style: italic;
font-weight: 900;
font-display: fallback;
}

View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="128"
height="128"
id="svg6843"
sodipodi:version="0.32"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
version="1.0"
sodipodi:docname="gtk-logo.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/ebassi/Pictures/gtk-logo-256.png"
inkscape:export-xdpi="192"
inkscape:export-ydpi="192">
<defs
id="defs6845">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-50 : 600 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="700 : 600 : 1"
inkscape:persp3d-origin="300 : 400 : 1"
id="perspective13" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="2.8284271"
inkscape:cx="69.874353"
inkscape:cy="64.313526"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
width="128px"
height="128px"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid7947" />
</sodipodi:namedview>
<metadata
id="metadata6848">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:date />
<dc:creator>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:publisher>
<dc:identifier />
<dc:source />
<dc:relation />
<dc:language />
<dc:subject>
<rdf:Bag />
</dc:subject>
<dc:coverage />
<dc:description />
<dc:contributor>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:contributor>
<cc:license
rdf:resource="" />
</cc:Work>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
sodipodi:nodetypes="ccccc"
id="path6976"
d="M 20.88413,30.82696 L 53.816977,55.527708 L 107.33282,39.060543 L 70.587303,17.177763 L 20.88413,30.82696 z"
style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
<path
id="path6978"
d="M 22.94243,82.287118 L 20.88413,30.82696 L 53.816977,55.527708 L 53.816977,111.10486 L 22.94243,82.287118 z"
style="fill:#e40000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
<path
id="path6980"
d="M 53.816977,111.10486 L 103.21619,90.5207 L 107.33282,39.060543 L 53.816977,55.527708 L 53.816977,111.10486 z"
style="fill:#7fe719;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
<path
sodipodi:nodetypes="ccc"
id="path6982"
d="M 23.216626,81.319479 L 70.48573,67.361442 L 103.38422,90.444516"
style="opacity:1;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path6984"
d="M 70.434539,17.875593 L 70.434539,66.984877"
style="opacity:1;fill:#babdb6;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

149
.gitlab-ci/pages/index.html Normal file
View File

@@ -0,0 +1,149 @@
<!--
SPDX-FileCopyrightText: 2021 GNOME Foundation
SPDX-License-Identifier: LGPL-2.1-or-later
-->
<!DOCTYPE html>
<html lang="en">
<head>
<title>GTK Documentation</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8" />
<meta property="og:site_name" content="https://docs.gtk.org"/>
<meta property="og:title" content="GTK Documentation"/>
<meta property="og:url" content="https://docs.gtk.org"/>
<meta property="og:type" content="website"/>
<meta property="og:description" content="API reference for GTK"/>
<meta name="twitter:title" content="GTK Documentation"/>
<meta name="twitter:url" content="https://docs.gtk.org"/>
<meta name="twitter:card" content="summary"/>
<link rel="canonical" href="https://docs.gtk.org"/>
<link rel="stylesheet" href="style.css" type="text/css" />
<script src="main.js"></script>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
</head>
<body>
<div id="body-wrapper" tabindex="-1">
<nav class="sidebar">
<div class="section">
<img src="gtk-logo.svg" class="logo"/>
</div>
<div class="section">
<h5>Sections</h5>
<div class="links">
<a href="#user-interface">User interface</a>
<a href="#core-libraries">Core libraries</a>
</div>
</div>
</nav>
<button id="btn-to-top" class="hidden"><span class="up-arrow"></span></button>
<section id="main" class="content">
<header>
<h1>GTK Documentation</h1>
</header>
<div class="toggle-wrapper">
<h4 id="user-interface">
User interface
<a href="#user-interface" class="anchor"></a>
</h4>
<div class="docblock">
<h5 id="gdk">GTK</h5>
<p>GTK is the primary library used to construct user interfaces. It
provides user interface controls and signal callbacks to respond to
user actions.</p>
<p><a href="https://docs.gtk.org/gtk4/">GTK API reference</a></p>
</div>
<div class="docblock">
<h5 id="gdk">GSK</h5>
<p>An intermediate layer which provides a rendering API implemented using Cairo, OpenGL or Vulkan.</p>
<p><a href="https://docs.gtk.org/gsk4/">GSK API reference</a></p>
</div>
<div class="docblock">
<h5 id="gdk">GDK</h5>
<p>An intermediate layer which isolates GTK from the details of the windowing system.</p>
<p><a href="https://docs.gtk.org/gdk4/">GDK API reference</a></p>
</div>
<div class="docblock">
<h5 id="pango">Pango</h5>
<p>Pango is the core text and font handling library used in GTK
applications. It has extensive support for the different writing
systems used throughout the world.</p>
<p><a href="https://docs.gtk.org/Pango/">Pango API reference</a></p>
</div>
<div class="docblock">
<h5 id="gdk-pixbuf">GdkPixbuf</h5>
<p>GdkPixbuf is a library for image loading and manipulation.</p>
<p><a href="https://docs.gtk.org/gdk-pixbuf/">GdkPixbuf API reference</a></p>
</div>
<div class="docblock">
<h5 id="cairo">Cairo</h5>
<p>Cairo is a 2D graphics library with support for multiple output
devices. It is designed to produce consistent, high quality output
on all media.</p>
<p><a href="https://www.cairographics.org/manual/" class="external">Cairo API reference</a></p>
</div>
</div>
<div class="toggle-wrapper">
<h4 id="core-libraries" style="display:flex;">
Core libraries
<a href="#core-libraries" class="anchor"></a>
</h4>
<div class="docblock">
<h5 id="glib">GLib</h5>
<p>GLib provides the core application building blocks for libraries
and applications written in C. It provides common data types
used in GTK, the main loop implementation, and a large set of
utility functions for strings and general portability across
different platforms.</p>
<p><a href="https://developer.gnome.org/glib/" class="external">GLib API reference</a></p>
</div>
<div class="docblock">
<h5 id="gobject">GObject</h5>
<p>GObject provides the object system used by GTK.</p>
<p><a href="https://developer.gnome.org/gobject/" class="external">GObject API reference</a></p>
</div>
<div class="docblock">
<h5 id="gio">GIO</h5>
<p>GIO provides a portable, modern and easy-to-use file system
abstraction API for accessing local and remote files; a set of
low and high level abstractions over the <a href="https://www.freedesktop.org/wiki/Software/dbus/" class="external">DBus</a>
IPC specification; an application settings API; portable networking
abstractions; and additional utilities for writing asynchronous
operations without blocking the user interface of your application.</p>
<p><a href="https://developer.gnome.org/gio/" class="external">GIO API reference</a></p>
</div>
</div>
</section>
<footer>
</footer>
</div>
</body>
</html>

140
.gitlab-ci/pages/main.js Normal file
View File

@@ -0,0 +1,140 @@
// SPDX-FileCopyrightText: 2021 GNOME Foundation
//
// SPDX-License-Identifier: LGPL-2.1-or-later
// eslint-disable-next-line no-unused-vars
function hasClass(elem, className) {
return elem && elem.classList && elem.classList.contains(className);
}
// eslint-disable-next-line no-unused-vars
function addClass(elem, className) {
if (!elem || !elem.classList) {
return;
}
elem.classList.add(className);
}
// eslint-disable-next-line no-unused-vars
function removeClass(elem, className) {
if (!elem || !elem.classList) {
return;
}
elem.classList.remove(className);
}
function insertAfter(newNode, referenceNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
function onEach(arr, func, reversed) {
if (arr && arr.length > 0 && func) {
var length = arr.length;
var i;
if (reversed !== true) {
for (i = 0; i < length; ++i) {
if (func(arr[i]) === true) {
return true;
}
}
} else {
for (i = length - 1; i >= 0; --i) {
if (func(arr[i]) === true) {
return true;
}
}
}
}
return false;
}
function onEachLazy(lazyArray, func, reversed) {
return onEach(
Array.prototype.slice.call(lazyArray),
func,
reversed);
}
// eslint-disable-next-line no-unused-vars
function hasOwnProperty(obj, property) {
return Object.prototype.hasOwnProperty.call(obj, property);
}
window.addEventListener("load", function() {
"use strict;"
var main = document.getElementById("main");
var btnToTop = document.getElementById("btn-to-top");
function labelForToggleButton(isCollapsed) {
if (isCollapsed) {
return "+";
}
return "\u2212";
}
function createToggle(isCollapsed) {
var toggle = document.createElement("a");
toggle.href = "javascript:void(0)";
toggle.className = "collapse-toggle";
toggle.innerHTML = "[<span class=\"inner\">"
+ labelForToggleButton(isCollapsed)
+ "</span>]";
return toggle;
}
function toggleClicked() {
if (hasClass(this, "collapsed")) {
removeClass(this, "collapsed");
this.innerHTML = "[<span class=\"inner\">"
+ labelForToggleButton(false)
+ "</span>]";
onEachLazy(this.parentNode.getElementsByClassName("docblock"), function(e) {
removeClass(e, "hidden");
});
} else {
addClass(this, "collapsed");
this.innerHTML = "[<span class=\"inner\">"
+ labelForToggleButton(true)
+ "</span>]";
onEachLazy(this.parentNode.getElementsByClassName("docblock"), function(e) {
addClass(e, "hidden");
});
}
}
onEachLazy(document.getElementsByClassName("toggle-wrapper"), function(e) {
let sectionHeader = e.querySelector(".section-header");
let fragmentMatches = sectionHeader !== null && location.hash === "#" + sectionHeader.getAttribute('id');
collapsedByDefault = hasClass(e, "default-hide") && !fragmentMatches;
var toggle = createToggle(collapsedByDefault);
toggle.onclick = toggleClicked;
e.insertBefore(toggle, e.firstChild);
if (collapsedByDefault) {
addClass(toggle, "collapsed");
onEachLazy(e.getElementsByClassName("docblock"), function(d) {
addClass(d, "hidden");
});
}
});
function scrollBackTop(e) {
e.preventDefault();
window.scroll({
top: 0,
behavior: 'smooth',
});
}
function toggleScrollButton() {
if (window.scrollY < 400) {
addClass(btnToTop, "hidden");
} else {
removeClass(btnToTop, "hidden");
}
}
window.onscroll = toggleScrollButton;
btnToTop.onclick = scrollBackTop;
}, false);

747
.gitlab-ci/pages/style.css Normal file
View File

@@ -0,0 +1,747 @@
/*
* SPDX-FileCopyrightText: 2021 GNOME Foundation
*
* SPDX-License-Identifier: LGPL-2.1-or-later
*/
@import url("fonts.css");
/*********************************
* LIGHT THEME
*********************************/
:root {
/* colors */
--text-color: #333;
--text-color-muted: #999;
--primary: rgb(28, 118, 228);
--body-bg: #fff;
--sidebar-primary: rgb(144, 194, 255);
--sidebar-bg: #151515;
--sidebar-selected-bg: var(--primary);
--sidebar-text-color: #fafafa;
--sidebar-padding: 1.5em;
/* boxes, e.g. code blocks */
--box-bg: rgba(135, 135, 135, 0.085);
--box-radius: 0.35rem;
--box-padding: 0.75rem;
--box-margin: 0.75rem 0;
--box-text-color: #111;
/* typography */
--body-font-family: "Noto Serif",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
--body-font-scale: 0.95;
--body-font-size: calc(var(--body-font-scale) * clamp(16px, 1vw, 20px));
--body-font-weight: normal;
--monospace-font-family: "Source Code Pro", monospace;
--monospace-font-size: calc(0.86 * var(--body-font-size)); /* Monospace fonts are very different in terms of font-sizes. Adjust this value to scale it */
--heading-font-family: "Red Hat Display", var(--body-font-family);
--heading-weight: 900;
--heading-font-scale: 1.05;
--heading-small-font-family: var(--heading-font-family);
--heading-small-weight: 600;
--heading-small-font-scale: 1;
--heading-table-font-family: var(--heading-font-family);
--heading-table-weight: 600;
--heading-docblock-color: #6d6d6d; /* docblocks have headings from source comments. we want them to differ.*/
--heading-docblock-scale: 0.9; /* docblocks have headings from source comments. we want them to differ.*/
--symbol-font-family: var(--heading-font-family);
--symbol-font-weight: 500;
--symbol-font-scale: 1;
--table-font-size: 0.92em; /* Tables often contain lots information. It's better to scale them down a big to get more sutff fitted inside */
/* misc */
--prefered-content-width: 90ch; /* The preferred width for the readable content */
--anchor-sign: "#";
}
/*********************************
* DARK THEME (overrides)
*********************************/
@media (prefers-color-scheme: dark) {
:root {
--primary: rgb(144, 194, 255);
--text-color: #f6f6f6;
--text-color-muted: #686868;
--body-bg: #121212;
--sidebar-primary: rgb(144, 194, 255);
--sidebar-bg: #1e1e1e;
--sidebar-selected-bg: rgb(17, 112, 228);
--sidebar-text-color: #fafafa;
--box-bg: rgba(135, 135, 135, 0.1);
--box-text-color: #fff;
--heading-docblock-color: #b7b7b7;
}
/* fix dark theme syntax highlighting with a filter (for now) */
.highlight pre span {
filter: brightness(6);
}
}
/*********************************
* GENERAL STYLING
*********************************/
*,
*:before,
*:after {
box-sizing: border-box;
}
::-moz-selection {
color: white;
background: var(--primary);
}
::selection {
color: white;
background: var(--primary);
}
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-thumb {
border-radius: 10px;
background: rgba(128, 128, 128, 0.6);
}
::-webkit-scrollbar-thumb:hover {
background: rgba(128, 128, 128, 1);
}
::-webkit-scrollbar-track {
background: rgba(128, 128, 128, 0.15);
}
* {
scrollbar-width: initial;
}
body {
font: 16px/1.5 var(--body-font-family);
font-weight: var(--body-font-weight);
font-size: var(--body-font-size);
margin: 0;
padding: 0;
position: relative;
-webkit-font-feature-settings: "kern", "liga";
-moz-font-feature-settings: "kern", "liga";
font-feature-settings: "kern", "liga";
color: var(--text-color);
background: var(--body-bg);
}
h1, h2, h3, h4, h5, h6 {
font-family: var(--heading-font-family);
font-weight: var(--heading-weight);
margin: 1.75em 0 0.75em 0;
display: flex;
align-items: center;
}
h1 {
font-size: calc(1.75em * var(--heading-font-scale));
}
header h1 {
margin-top: 0;
}
h2 {
font-size: calc(1.4em * var(--heading-font-scale));
}
h3 {
font-size: calc(1.2em * var(--heading-font-scale));
}
header h3 {
color: var(--text-color-muted);
margin-bottom: 0;
}
h4, h5 {
font-size: calc(1em * var(--heading-font-scale));
}
h6 {
font-size: calc(1em * var(--heading-small-font-scale));
font-family: var(--heading-small-font-family);
font-weight: var(--heading-small-weight);
}
ol, ul {
padding-left: 1rem;
}
ul ul, ol ul, ul ol, ol ol {
margin-bottom: .6em;
}
p {
margin: 0 0 .6em 0;
}
a {
color: var(--primary);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
summary {
outline: none;
}
blockquote {
border-left: 3px solid var(--primary);
background: var(--box-bg);
padding: var(--box-padding);
border-radius: var(--box-radius);
margin: var(--box--margin);
}
code,
pre {
font-family: var(--monospace-font-family);
font-size: var(--monospace-font-size);
color: var(--box-text-color);
}
pre {
background: var(--box-bg);
padding: var(--box-padding);
border-radius: var(--box-radius);
overflow: auto;
}
code {
background: var(--box-bg);
padding: 0 0.35em;
border-radius: 0.35rem;
word-break: break-word;
}
a > code {
color: var(--primary);
}
pre pre,
pre code {
padding: 0;
margin: 0;
font-size: 1em;
background: none;
color: inherit;
}
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
font-family: inherit;
font-weight: inherit;
font-size: 0.85em;
}
strong, b {
font-weight: 600;
}
/* fix unwanted margins in tables, code, lists and blockquotes */
li > *:first-child,
li > *:first-child > *:first-child,
li > *:first-child > *:first-child > *:first-child,
td > *:first-child,
td > *:first-child > *:first-child,
td > *:first-child > *:first-child > *:first-child,
pre > *:first-child,
pre > *:first-child > *:first-child,
pre > *:first-child > *:first-child > *:first-child,
blockquote > *:first-child,
blockquote > *:first-child > *:first-child,
blockquote > *:first-child > *:first-child > *:first-child {
margin-top: 0;
}
li > *:last-child,
li > *:last-child > *:last-child,
li > *:last-child > *:last-child > *:last-child,
td > *:last-child,
td > *:last-child > *:last-child,
td > *:last-child > *:last-child > *:last-child,
pre > *:last-child,
pre > *:last-child > *:last-child,
pre > *:last-child > *:last-child > *:last-child,
blockquote > *:last-child,
blockquote > *:last-child > *:last-child,
blockquote > *:last-child > *:last-child > *:last-child {
margin-bottom: 0;
}
/*********************************
* PAGE STRUCTURE
*********************************/
#body-wrapper {
display: flex;
flex-wrap: nowrap;
flex-direction: row;
}
#body-wrapper:focus {
outline: none;
}
#main {
position: relative;
flex-grow: 1;
min-width: 0;
box-shadow: 0 0 134px rgba(0, 0, 0, 0.1);
}
footer {
width: 100%;
display: none;
}
/*********************************
* Button
*********************************/
#btn-to-top {
position: fixed;
bottom: 12px;
right: 32px;
z-index: 1000;
border-radius: 50%;
width: 42px;
height: 42px;
border: 1px solid var(--primary);
background: var(--box-bg);
color: var(--text-color);
cursor: pointer;
text-transform: none;
}
#btn-to-top > .up-arrow:after {
content: "🡅"
}
/*********************************
* SIDEBAR
*********************************/
.sidebar {
scrollbar-width: thin;
background: var(--sidebar-bg);
border-right: 1px solid var(--sidebar-bg);
min-width: 40ch;
padding: var(--sidebar-padding);
color: var(--sidebar-text-color);
position: sticky;
top: 0;
z-index: 2;
height: 100vh;
overflow-y: auto;
}
.sidebar a,
.sidebar a:hover {
text-decoration: none;
}
.sidebar .logo {
display: block;
margin: 2rem auto 0 auto;
width: 70%;
}
.sidebar .section > ul > li {
margin-right: -10px;
}
.sidebar .section h3, .sidebar .section h5 {
text-align: left;
padding-left: 0.5rem;
padding-right: 0.5rem;
font-weight: var(--heading-weight);
}
.sidebar .section h5 {
font-size: 1em;
margin-bottom: 0.5em;
}
.sidebar .namespace > h3 {
margin-bottom: 0;
padding: 0;
font-size: 1.5em;
text-transform: uppercase;
font-weight: 900;
}
.sidebar .namespace > p {
font-size: 0.9em;
opacity: 0.8;
padding-left: 0.5rem;
}
.sidebar .section {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.sidebar .links {
margin-bottom: 1rem;
}
.sidebar .section a {
display: block;
text-overflow: ellipsis;
overflow: hidden;
transition: background-color 150ms ease;
color: var(--sidebar-primary);
border-radius: var(--box-radius);
padding: 0.2rem 0.5rem;
margin-bottom: 0.15rem;
}
.sidebar .section a:hover {
background-color: rgba(127, 127, 127, 0.2);
color: var(--sidebar-text-color);
}
.sidebar .section a.current {
background-color: var(--sidebar-selected-bg);
color: white;
}
.sidebar .search {
box-sizing: border-box;
text-align: center;
}
.sidebar .search input[type="text"] {
border-color: transparent;
width: 100%;
border: 1px solid #ccc;
border-radius: 50px;
padding: 6px 12px;
display: inline-block;
font-size: 80%;
box-shadow: inset 0 1px 3px #ddd;
transition: border .3s linear;
}
/*********************************
* ANCHORS & TOGGLERS
*********************************/
.anchor,
.md-anchor {
position: relative;
z-index: 1;
text-decoration: none;
padding: 0 0.5em;
color: var(--text-color-muted);
}
.anchor:hover,
.md-anchor:hover {
color: var(--primary);
}
.anchor:not([href]),
.md-anchor:not([href]) {
display: none;
}
.anchor:before,
.md-anchor:before {
content: var(--anchor-sign); /*'§'*/
}
.toggle-wrapper {
position: relative;
}
.collapse-toggle {
position: absolute;
right: 0;
left: -2em;
white-space: nowrap;
text-decoration: none;
font-size: 0.8em;
color: transparent;
}
.collapse-toggle > .inner {
width: 1rem;
height: 1rem;
border-radius: calc(0.75 * var(--box-radius));
display: inline-flex;
justify-content: center;
align-items: center;
text-align: center;
vertical-align: middle;
color: var(--box-text-color);
position: relative;
left: -0.25rem;
font-family: monospace;
font-size: 0.7rem;
font-weight: bold;
background: var(--box-bg);
}
/*********************************
* UTILITY
*********************************/
.deprecated > h6 > a {
opacity: 0.65;
}
.hidden {
display: none !important;
}
/*********************************
* CONTENT STYLING
*********************************/
.content {
padding: 2em 4em;
overflow: visible;
max-width: calc(var(--prefered-content-width) + 8em);
}
.content table:not(.table-display) {
border-spacing: 0 0.25rem;
}
.content td {
vertical-align: top;
}
.content td:first-child {
padding-right: 1rem;
}
.content td p:first-child {
margin-top: 0;
}
.content td h1, .content td h2 {
margin-left: 0;
font-size: 1.1em;
}
.content tr:first-child td {
border-top: 0;
}
kbd {
display: inline-block;
padding: 3px 5px;
font: 15px monospace;
line-height: 10px;
vertical-align: middle;
border: solid 1px;
border-radius: 3px;
box-shadow: inset 0 -1px 0;
cursor: default;
}
.content tr:first-child {
border-bottom: 1px solid rgba(0, 0, 0, 0.35);
}
.content td {
vertical-align: top;
}
.content td:first-child {
padding-right: 1rem;
}
.content td p:first-child {
margin-top: 0;
}
.content td h4, .content td h5 {
margin-left: 0;
font-size: 1.1em;
}
.content tr:first-child td {
border-top: 0;
}
.srclink {
color: var(--text-color-muted);
font-size: 1rem;
font-weight: var(--body-font-weight);
flex-grow: 0;
text-decoration: none;
margin-left: auto;
position: relative;
z-index: 1;
}
.meta tr > td:not(:first-child) {
width: 100%;
}
.meta tr > td:first-child {
white-space: nowrap;
}
/*********************************
* DOCBLOCK STYLING
*********************************/
.docblock {
position: relative;
text-align: left;
}
.docblock h1 {
font-size: calc(1.3em * var(--heading-docblock-scale) * var(--heading-font-scale));
}
.docblock h2 {
font-size: calc(1.2em * var(--heading-docblock-scale) * var(--heading-font-scale));
}
.docblock h3 {
font-size: calc(1.1em * var(--heading-docblock-scale) * var(--heading-font-scale));
}
.docblock h4 {
font-size: calc(1.05em * var(--heading-docblock-scale) * var(--heading-font-scale));
}
.docblock h1,
.docblock h2,
.docblock h3,
.docblock h4,
.docblock h5,
.docblock h6 {
color: var(--heading-docblock-color)
}
.docblock table {
margin: .25em 0;
max-width: 100%;
font-size: var(--table-font-size);
}
.docblock table td {
padding: .25em;
}
.docblock table th {
padding: .25em;
text-align: left;
font-family: var(--heading-table-font-family);
font-weight: var(--heading-table-weight);
}
.docblock table tr th:first-child,
.docblock table tr td:first-child {
padding-left: 0;
}
.docblock table tr th:last-child,
.docblock table tr td:last-child {
padding-right: 0;
}
table.enum-members,
table.results {
border-radius: var(--box-radius);
border: 1px solid var(--text-color-muted);
border-spacing: 0 0 !important;
font-size: 80%;
}
table.enum-members tr th,
table.results tr th {
border-top-color: var(--body-bg);
background-color: var(--box-bg);
border-bottom: 1px solid var(--text-color-muted);
}
table.enum-members tr th:first-child,
table.enum-members tr td:first-child {
min-width: 25em;
padding-left: .5em;
}
table.results tr th:first-child,
table.results tr td:first-child {
padding-left: .5em;
}
table.enum-members tr th:last-child,
table.enum-members tr td:last-child,
table.results tr th:last-child,
table.results tr td:last-child {
max-width: 35em;
padding-right: .5em;
}
table.results tr td code {
font-size: 100%;
}
.docblock ul li,
.docblock ol li {
padding-top: 0.15rem;
padding-bottom: 0.15rem;
}
.docblock ul.type {
list-style: none;
}
.docblock ul.type li::before {
content: "»";
color: var(--text-color);
display: inline-block;
width: 1em;
margin-left: -1em;
}
/**************************
RESPONSIVENESS
**************************/
@media (max-width: 700px) {
body {
padding-top: 0px;
}
#body-wrapper {
flex-direction: column;
overflow: hidden;
}
#main {
width: 100%;
padding: 2rem;
}
.sidebar {
position: static;
height: initial;
order: 1;
}
}

50
NEWS
View File

@@ -1,3 +1,53 @@
Overview of Changes in 4.2.0
============================
* GtkFileChooser: Make the location entry work again
* GtlLabel: Fix tooltips on links
* GtkTextView: Make scrolling work better with renderers
* X11:
- Fix damage handling
- Trap errors from the COW
* Windows:
- Use a visible scroll cursor
- Include more icons for icon-theme-less situations
* Wayland: Fix key event matching with mismatched layouts.
This was causing keyboard accelerators to trigger unexpectedly
* Inspector: Allow inspecting Unicode
* Input:
- Improve dead key handling
- Regenerate compose sequence table
* gsk:
- Fix a crash in the ngl renderer
- Fix a rounding error in subpixel glyph positioning
- ngl: Implement glyph cache eviction
- ngl: Improve the glyph cache effectiveness
- ngl: Fix uniform key mapping on Windows
- Make the ngl renderer the default
* build:
- Fix build with cairo as subproject
- Disable g_assert in release builds
- Include gi-docgen as subproject
- Include generated docs
* Translation updates:
Hebrew
Hungarian
Italian
Polish
Portuguese
Swedish
Ukrainian
Overview of Changes in 4.1.2
============================

View File

@@ -0,0 +1,39 @@
#!/usr/bin/env python3
import os
import shutil
import subprocess
from pathlib import PurePath
stylesheets = [
'gtk/theme/Adwaita/Adwaita.css',
'gtk/theme/Adwaita/Adwaita-dark.css',
'gtk/theme/HighContrast/HighContrast.css',
'gtk/theme/HighContrast/HighContrast-dark.css',
]
references = [
'docs/reference/gtk/gtk4',
'docs/reference/gsk/gsk4',
'docs/reference/gdk/gdk4',
'docs/reference/gdk/gdk4-wayland',
'docs/reference/gdk/gdk4-x11',
]
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
buildroot = os.environ.get('MESON_BUILD_ROOT')
distroot = os.environ.get('MESON_DIST_ROOT')
for stylesheet in stylesheets:
stylesheet_path = PurePath(stylesheet)
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
dst = PurePath(distroot, stylesheet_path)
subprocess.call(['sassc', '-a', '-M', '-t', 'compact', src, dst])
for reference in references:
src_path = os.path.join(buildroot, reference)
if os.path.isdir(src_path):
dst_path = os.path.join(distroot, reference)
shutil.copytree(src_path, dst_path)

View File

@@ -1,19 +0,0 @@
#!/usr/bin/env python3
import os
from pathlib import PurePath
import subprocess
stylesheets = [ 'gtk/theme/Adwaita/Adwaita.css',
'gtk/theme/Adwaita/Adwaita-dark.css',
'gtk/theme/HighContrast/HighContrast.css',
'gtk/theme/HighContrast/HighContrast-dark.css' ]
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
distroot = os.environ.get('MESON_DIST_ROOT')
for stylesheet in stylesheets:
stylesheet_path = PurePath(stylesheet)
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
dst = PurePath(distroot, stylesheet_path)
subprocess.call(['sassc', '-a', '-M', '-t', 'compact', src, dst])

View File

@@ -128,6 +128,9 @@
<file>gtkfishbowl.c</file>
<file>gtkfishbowl.h</file>
</gresource>
<gresource prefix="/frames">
<file>frames.ui</file>
</gresource>
<gresource prefix="/gears">
<file>gtkgears.c</file>
<file>gtkgears.h</file>
@@ -276,6 +279,7 @@
<file>fishbowl.c</file>
<file>fixed.c</file>
<file>flowbox.c</file>
<file>frames.c</file>
<file>font_features.c</file>
<file>fontplane.c</file>
<file>fontrendering.c</file>

165
demos/gtk-demo/frames.c Normal file
View File

@@ -0,0 +1,165 @@
/* Benchmark/Frames
*
* This demo is intentionally as simple as possible, to see what
* framerate the windowing system can deliver on its own.
*
* It does nothing but change the drawn color, for every frame.
*/
#include <gtk/gtk.h>
typedef struct
{
GtkWidget parent_instance;
GdkRGBA color1;
GdkRGBA color2;
guint64 time2;
float t;
guint tick_cb;
} ColorWidget;
typedef struct
{
GtkWidgetClass parent_class;
} ColorWidgetClass;
G_DEFINE_TYPE (ColorWidget, color_widget, GTK_TYPE_WIDGET)
#define TIME_SPAN (3.0 * G_TIME_SPAN_SECOND)
static gboolean
change_color (GtkWidget *widget,
GdkFrameClock *frame_clock,
gpointer data)
{
ColorWidget *color = (ColorWidget *)widget;
gint64 time;
time = gdk_frame_clock_get_frame_time (frame_clock);
if (time >= color->time2)
{
color->time2 = time + TIME_SPAN;
color->color1 = color->color2;
color->color2.red = g_random_double_range (0, 1);
color->color2.green = g_random_double_range (0, 1);
color->color2.blue = g_random_double_range (0, 1);
color->color2.alpha = 1;
}
color->t = 1 - (color->time2 - time) / TIME_SPAN;
gtk_widget_queue_draw (widget);
return G_SOURCE_CONTINUE;
}
static void
color_widget_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
ColorWidget *color = (ColorWidget *)widget;
float w, h;
GdkRGBA c;
w = gtk_widget_get_width (widget);
h = gtk_widget_get_height (widget);
c.red = (1 - color->t) * color->color1.red + color->t * color->color2.red;
c.green = (1 - color->t) * color->color1.green + color->t * color->color2.green;
c.blue = (1 - color->t) * color->color1.blue + color->t * color->color2.blue;
c.alpha = 1;
gtk_snapshot_append_color (snapshot, &c, &GRAPHENE_RECT_INIT (0, 0, w, h));
}
static void
color_widget_init (ColorWidget *color)
{
gtk_widget_add_tick_callback (GTK_WIDGET (color), change_color, NULL, NULL);
gtk_widget_set_hexpand (GTK_WIDGET (color), TRUE);
gtk_widget_set_vexpand (GTK_WIDGET (color), TRUE);
}
static void
color_widget_class_init (ColorWidgetClass *class)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
widget_class->snapshot = color_widget_snapshot;
}
GtkWidget *
color_widget_new (void)
{
return g_object_new (color_widget_get_type (), NULL);
}
static gboolean
update_fps_label (gpointer data)
{
GtkWidget *label = GTK_WIDGET (data);
GdkFrameClock *frame_clock;
frame_clock = gtk_widget_get_frame_clock (label);
if (frame_clock)
{
char *fps;
fps = g_strdup_printf ("%.2f fps", gdk_frame_clock_get_fps (frame_clock));
gtk_label_set_label (GTK_LABEL (label), fps);
g_free (fps);
}
else
gtk_label_set_label (GTK_LABEL (label), "");
return G_SOURCE_CONTINUE;
}
static void
remove_id (gpointer data)
{
guint id = GPOINTER_TO_UINT (data);
g_source_remove (id);
}
GtkWidget *
do_frames (GtkWidget *do_widget)
{
static GtkWidget *window = NULL;
if (!window)
{
GtkBuilder *builder;
GtkWidget *box;
GtkWidget *label;
guint id;
builder = gtk_builder_new_from_resource ("/frames/frames.ui");
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget));
label = GTK_WIDGET (gtk_builder_get_object (builder, "fps"));
box = GTK_WIDGET (gtk_builder_get_object (builder, "box"));
gtk_box_append (GTK_BOX (box), color_widget_new ());
id = g_timeout_add (500, update_fps_label, label);
g_object_set_data_full (G_OBJECT (label), "tick_cb",
GUINT_TO_POINTER (id), remove_id);
}
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_window_destroy (GTK_WINDOW (window));
return window;
}

24
demos/gtk-demo/frames.ui Normal file
View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkWindow" id="window">
<property name="resizable">1</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
<property name="title">Frames</property>
<child type="titlebar">
<object class="GtkHeaderBar" id="header">
<child type="end">
<object class="GtkLabel" id="fps">
<attributes>
<attribute name="font-features" value="tnum=1"/>
</attributes>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="box">
</object>
</child>
</object>
</interface>

View File

@@ -29,6 +29,7 @@ demos = files([
'fishbowl.c',
'fixed.c',
'fontrendering.c',
'frames.c',
'gears.c',
'gestures.c',
'glarea.c',

View File

@@ -41,11 +41,26 @@ open_clicked_cb (GtkWidget *button,
"_Open",
"_Cancel");
filter = gtk_file_filter_new ();
gtk_file_filter_add_pattern (filter, "*");
gtk_file_filter_set_name (filter, "All Files");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
g_object_unref (filter);
filter = gtk_file_filter_new ();
gtk_file_filter_add_mime_type (filter, "image/*");
gtk_file_filter_set_name (filter, "Images");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
g_object_unref (filter);
filter = gtk_file_filter_new ();
gtk_file_filter_add_mime_type (filter, "video/*");
gtk_file_filter_set_name (filter, "Video");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
g_object_unref (filter);
gtk_native_dialog_set_modal (GTK_NATIVE_DIALOG (dialog), TRUE);
g_signal_connect (dialog, "response", G_CALLBACK (open_dialog_response_cb), video);
gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog));

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M10.994 2c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h.711a6.972 6.972 0 01-4.71 4.71V11c0-.554-.447-1-1-1h-3c-.555 0-1 .446-1 1v1.5a2.5 2.5 0 002.5 2.5h.5c5.504 0 10-4.495 10-10v-.5a2.5 2.5 0 00-2.5-2.5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 788 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16.006" height="16"><path d="M14.242 11.715a.979.979 0 01-1.387 0l-1.04-1.04-1.041-1.04a.979.979 0 010-1.388l.493-.493a6.838 6.838 0 00-6.534 0l.493.493a.979.979 0 010 1.387l-1.04 1.04-1.04 1.04a.979.979 0 01-1.388 0l-1.04-1.04a2.452 2.452 0 010-3.467l.347-.347c3.818-3.818 10.052-3.818 13.87 0l.347.347c.957.958.957 2.51 0 3.468z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 895 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" font-weight="400" font-family="sans-serif" fill="#2e3436"><path d="M9 12v2h6v-2h-5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" overflow="visible"/><path d="M3 1a1 1 0 00-1 1v13a1 1 0 001 1h5v-2H4V3h5.586L12 5.414V9h2V5a1 1 0 00-.293-.707l-3-3A1 1 0 0010 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" overflow="visible" fill-rule="evenodd"/><path d="M11 10v6h2v-6z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M8 3h5v2H8zm0 4h6v2H8zm-6 4h7v2H2z" style="marker:none" overflow="visible"/><path d="M2 3v1c0 .257.13.528.312.719L3.594 6 2.312 7.281C2.13 7.471 2 7.743 2 8v1h1c.31 0 .552-.09.75-.281L6.406 6 3.75 3.281C3.552 3.091 3.31 3 3 3z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 583 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M7 3H2v2h5zm1 4H2v2h6zm6 4H7v2h7z" style="marker:none" overflow="visible"/><path d="M14 3v1c0 .257-.13.528-.312.719L12.406 6l1.282 1.281c.182.19.312.462.312.719v1h-1c-.31 0-.552-.09-.75-.281L9.594 6l2.656-2.719c.198-.19.44-.281.75-.281z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 593 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M7 3H2v2h5zm1 4H2v2h6zm6 4H7v2h7z" style="marker:none" overflow="visible"/><path d="M14 3v1c0 .257-.13.528-.312.719L12.406 6l1.282 1.281c.182.19.312.462.312.719v1h-1c-.31 0-.552-.09-.75-.281L9.594 6l2.656-2.719c.198-.19.44-.281.75-.281z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 593 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M8 3h5v2H8zm0 4h6v2H8zm-6 4h7v2H2z" style="marker:none" overflow="visible"/><path d="M2 3v1c0 .257.13.528.312.719L3.594 6 2.312 7.281C2.13 7.471 2 7.743 2 8v1h1c.31 0 .552-.09.75-.281L6.406 6 3.75 3.281C3.552 3.091 3.31 3 3 3z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 583 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M4 3h8v2H4zM3 7h10v2H3zm3 4h4v2H6z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 185 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M3 3h10v2H3zm0 4h10v2H3zm0 4h10v2H3z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 187 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M3 3h8v2H3zm0 4h10v2H3zm0 4h4v2H3z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 185 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M5 3h8v2H5zM3 7h10v2H3zm6 4h4v2H9z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 185 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15.982"><g font-weight="400" fill="#474747"><path d="M11.001 11.986h-1a1.21 1.21 0 00-.719.261l-1.281 1.07-1.281-1.07a1.202 1.202 0 00-.72-.26H5v.835c0 .258.09.461.282.626l2.741 2.534 2.697-2.534a.78.78 0 00.281-.626v-.836z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-family="Bitstream Vera Sans" overflow="visible"/><path d="M9.804 4.04a.936 1.01 0 00.185 1.997h4.937a.936 1.01 0 100-1.997H9.989a.936 1.01 0 00-.185 0zm-8.991 0c-.45.102-.789.599-.743 1.088.046.49.47.904.93.91h4.916c.535.085 1.084-.42 1.084-1 0-.578-.549-1.084-1.084-.998H1a.834.834 0 00-.187 0zM6.059.964a2.492 2.492 0 00-1.907 1.468 2.686 2.686 0 00-.156.532H12c-.026-.126-.054-.263-.094-.375A2.467 2.467 0 009.563.964h-3.13c-.126 0-.252-.019-.374 0zm-2.063 6c.236 1.132 1.24 2 2.438 2h3.129c1.197 0 2.202-.868 2.437-2z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-family="Sans" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M9.625 11h-3.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h3.25a.374.374 0 00.375-.375v-1.25A.374.374 0 009.625 11zm0-11h-3.25A.374.374 0 006 .375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 0010 1.625V.375A.374.374 0 009.625 0zm0 14h-3.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h3.25a.374.374 0 00.375-.375v-1.25A.374.374 0 009.625 14zm0-11h-3.25A.374.374 0 006 3.375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 0010 4.625v-1.25A.374.374 0 009.625 3z" style="marker:none" overflow="visible" opacity=".35"/><path d="M14 7H2v2h12z" style="marker:none" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 706 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M0 1v13h6c.176 0 .535.14.822.332.288.192.467.371.467.371l.719.727.711-.735S9.615 14 10 14h6V1h-6c-.901 0-1.572.353-2.043.701-.025-.017-.018-.018-.045-.035C7.452 1.362 6.828 1 6 1zm2 2h4c.138 0 .515.138.813.334.297.196.492.385.492.385l.717.693.695-.715S9.619 3 10 3h4v9h-4c-.89 0-1.562.348-2.033.693-.018-.012-.013-.013-.031-.025C7.476 12.36 6.836 12 6 12H2z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M5.625 5h-2.25A.374.374 0 003 5.375v1.25c0 .207.167.375.375.375h2.25A.374.374 0 006 6.625v-1.25A.374.374 0 005.625 5zm0 3h-2.25A.374.374 0 003 8.375v1.25c0 .208.167.375.375.375h2.25A.374.374 0 006 9.625v-1.25A.374.374 0 005.625 8zm7-3h-2.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h2.25A.374.374 0 0013 6.625v-1.25A.374.374 0 0012.625 5zm0 3h-2.25a.374.374 0 00-.375.375v1.25c0 .208.167.375.375.375h2.25A.374.374 0 0013 9.625v-1.25A.374.374 0 0012.625 8z" style="marker:none" overflow="visible" opacity=".35"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M1.984 8.986A1 1 0 001 10v4a1 1 0 001 1h4a1 1 0 100-2H3v-3a1 1 0 00-1.016-1.014z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M6.48 8.49a1 1 0 00-.687.303l-4.5 4.5a1 1 0 101.414 1.414l4.5-4.5A1 1 0 006.48 8.49z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M1 14h1v1H1z" style="marker:none" overflow="visible"/><path d="M10 1a1 1 0 100 2h3v3a1 1 0 102 0V2a1 1 0 00-1-1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M14 1h1v1h-1z" style="marker:none" overflow="visible"/><path d="M13.984.99a1 1 0 00-.69.301l-4.5 4.469a1 1 0 101.411 1.418l4.5-4.469a1 1 0 00-.72-1.719z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M1 9h1v1H1zm5 5h1v1H6zm8-8h1v1h-1zM9 1h1v1H9z" style="marker:none" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M3.384 3h3.231c.213 0 .385.224.385.502v2.996C7 6.776 6.828 7 6.615 7h-3.23C3.17 7 3 6.776 3 6.498V3.502C3 3.224 3.17 3 3.384 3zm6 0h3.231c.213 0 .385.224.385.502v2.996c0 .278-.172.502-.385.502h-3.23C9.17 7 9 6.776 9 6.498V3.502C9 3.224 9.17 3 9.384 3zm-6 6h3.231c.213 0 .385.224.385.502v2.996c0 .278-.172.502-.385.502h-3.23C3.17 13 3 12.776 3 12.498V9.502C3 9.224 3.17 9 3.384 9zm6 0h3.231c.213 0 .385.224.385.502v2.996c0 .278-.172.502-.385.502h-3.23C9.17 13 9 12.776 9 12.498V9.502C9 9.224 9.17 9 9.384 9z" style="marker:none" overflow="visible" color="#000" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 654 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M1 0v13h12V0zm2 2h8v9H3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M14 3v11H4v2h12V3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Sans" overflow="visible"/><path d="M8.625 4h-3.25A.374.374 0 005 4.375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 009 5.625v-1.25A.374.374 0 008.625 4zm0 3h-3.25A.374.374 0 005 7.375v1.25c0 .208.167.375.375.375h3.25A.374.374 0 009 8.625v-1.25A.374.374 0 008.625 7z" style="marker:none" overflow="visible" opacity=".35"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M3.988 9.106c.948-.277 1.953.294 2.253 1.282l.675 2.226c.3.988-.224 2.006-1.172 2.283-.949.278-1.954-.294-2.253-1.282l-.675-2.226c-.3-.987.223-2.006 1.172-2.283z"/><path d="M7.969 1C4.663 1 1.945 4.008 2 6.719c.048 2.365.809 4.695 1 5.281h1.526c-1.162-2.292-1.05-5.156-1.05-5.156 0-2.373 2.007-4.313 4.493-4.313 2.485 0 4.5 1.827 4.492 4.282-.024 1.674-.172 2.658-1.006 5.187h1.571c.225-.645.974-3.19.974-5.281C14 3.889 11.274 1 7.969 1z"/><path d="M12.012 9.139c-.948-.278-1.953.294-2.253 1.282l-.675 2.226c-.3.987.224 2.006 1.172 2.283.949.277 1.954-.294 2.253-1.282l.675-2.226c.3-.988-.223-2.006-1.172-2.283z"/></g></svg>

After

Width:  |  Height:  |  Size: 714 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<path d="m 40,328 c -1.662,0 -3,1.338 -3,3 v 5 c 0,1.662 1.338,3 3,3 1.662,0 3,-1.338 3,-3 v -5 c 0,-1.662 -1.338,-3 -3,-3 z m -6,6 v 2.00977 c 0,2.96574 2.165383,5.4238 5,5.90039 V 344 h 2 v -2.08984 c 2.834617,-0.47659 5,-2.93465 5,-5.90039 V 334 h -1.5 v 2.00977 c 0,2.50009 -1.993312,4.49023 -4.5,4.49023 -2.506688,0 -4.5,-1.99014 -4.5,-4.49023 V 334 Z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" transform="translate(-32 -328)"/>
</svg>

After

Width:  |  Height:  |  Size: 1016 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16.063"><g fill="#2e3436"><path d="M1 5.063h2.484l2.97-3L7 2.078v12l-.475.001-3.04-3.016H1z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M8 5.063V3.64L11.367.282c.404-.41 1.063-.346 1.412.023.332.351.375.988-.03 1.392L9.392 5.063zM8 11v1.422l3.367 3.358c.404.412 1.063.347 1.412-.022a1.016 1.016 0 00-.03-1.392L9.392 11zm0-3.937v2h6c.75 0 .999-.501 1-1.002 0-.5-.25-.998-1-.998z"/></g></svg>

After

Width:  |  Height:  |  Size: 471 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6 2c-.55 0-1 .45-1 1v1H2c-.552 0-1 .45-1 1v8c0 .55.448 1 1 1h12c.552 0 1-.45 1-1V5c0-.55-.448-1-1-1h-3V3c0-.55-.45-1-1-1zm2 3a4 4 0 110 8 4 4 0 010-8zm0 2a2 2 0 100 4 2 2 0 000-4z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 331 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6 4h8c.554 0 1 .446 1 1v7c0 .554-.446 1-1 1H6c-.554 0-1-.446-1-1V5c0-.554.446-1 1-1zM5 8.47L1.53 5H1v7h.5z" style="marker:none" overflow="visible" color="#bebebe" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 258 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M2.5 1A2.495 2.495 0 000 3.5v8C0 12.885 1.115 14 2.5 14v-2a.499.499 0 01-.5-.5V10h12v1.5c0 .277-.223.5-.5.5v2c1.385 0 2.5-1.115 2.5-2.5v-8C16 2.115 14.885 1 13.5 1z"/><path d="M2.875 11.039c0 2.69 2.299 4.904 5.116 4.904 2.817 0 5.134-2.213 5.134-4.904h-2.017c0 1.652-1.387 2.977-3.117 2.977s-3.099-1.325-3.099-2.977z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible"/><path d="M6 11c0 1.099.902 2 2 2 1.099 0 2-.901 2-2H9c0 .558-.442 1-1 1s-1-.442-1-1z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 951 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M0 11h5v4.938H0zm10 0h5v5h-5z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M2.03 8v3.531h1V9H12v2.531h1V8z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M7 5v3.5h1V5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M5 1h5v5H5z" style="marker:none" color="#bebebe" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><defs><clipPath id="a"><path style="marker:none" color="#bebebe" overflow="visible" fill="#bebebe" stroke-width="2" d="M26.85 220.75h3.825v6.375H26.85z"/></clipPath><clipPath id="b"><path style="marker:none" color="#bebebe" overflow="visible" fill="#bebebe" stroke-width="2" d="M26.966 221.282h2.898v5.313h-2.898z"/></clipPath><clipPath id="c"><path style="marker:none" color="#bebebe" overflow="visible" fill="#bebebe" stroke-width="2" d="M26.999 221.502h1.876v4.878h-1.876z"/></clipPath></defs><g fill="#474747"><path transform="matrix(0 -.78431 .94118 0 -202.765 31.059)" clip-path="url(#a)" d="M27.18 220.508a1.164 1.164 0 00-.81 1.998c.379.38.59.894.59 1.432 0 .537-.211 1.051-.59 1.431a1.164 1.164 0 101.644 1.645 4.352 4.352 0 001.275-3.077c0-1.153-.46-2.26-1.275-3.076a1.164 1.164 0 00-.834-.353z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path transform="matrix(0 -1.72549 1.88219 0 -413.493 54.529)" clip-path="url(#b)" d="M27.186 221.123a.555.555 0 00-.387.953 2.632 2.632 0 010 3.723.555.555 0 10.785.785 3.743 3.743 0 000-5.293.555.555 0 00-.398-.168z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path transform="matrix(0 -2.66667 2.86852 0 -634.374 78)" clip-path="url(#c)" d="M27.188 221.318a.362.362 0 00-.252.621 2.825 2.825 0 010 3.997.362.362 0 10.511.511 3.55 3.55 0 000-5.02.362.362 0 00-.26-.109z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M10 13a2 2 0 01-2 2 2 2 0 01-2-2 2 2 0 012-2 2 2 0 012 2z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M4 0C2.993.005 3 1 3 1v13c0 2 2.003 2 2.003 2h7c2 0 2-2 2-2V4s0-2-2-2h-6.75c-.25 0-.25-.25-.25-.25L5 1S4.99.006 4 0zm1.003 4.25c0-.25.25-.25.25-.25h6.5s.25 0 .25.25v9.5c0 .25-.25.25-.25.25h-6.5c-.25 0-.252-.277-.252-.277z" style="marker:none" overflow="visible"/><path d="M6.003 5.25c0-.25.25-.25.25-.25h4.5s.25 0 .25.25v2.5c0 .25-.25.25-.25.25h-4.5C6.003 8 6 7.723 6 7.723zM6.253 9h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25zm3 0h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25zm-3 2h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25zm3 0h1.5a.25.25 0 01.25.25v.5a.25.25 0 01-.25.25h-1.5a.25.25 0 01-.25-.25v-.5a.25.25 0 01.25-.25z" style="marker:none" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 922 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" font-weight="400" font-family="Sans" fill="#474747"><path d="M6.815 1.107C3.519 1.672.992 4.548.992 8c0 3.854 3.148 7 7.002 7a6.96 6.96 0 004.58-1.723C8.8 12.295 5.992 8.86 5.992 4.785a8.69 8.69 0 01.823-3.678z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/><path d="M7.994 1c-.402 0-.795.042-1.18.107a8.69 8.69 0 00-.822 3.678c0 4.075 2.807 7.51 6.582 8.492A6.983 6.983 0 0014.994 8c0-3.854-3.146-7-7-7z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible" opacity=".35"/></g></svg>

After

Width:  |  Height:  |  Size: 806 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M9.5 10A2.5 2.5 0 007 12.5c0 .218.041.423.094.625A1.549 1.549 0 006.5 13a1.5 1.5 0 100 3h8a1.5 1.5 0 100-3 2 2 0 00-2-2c-.316 0-.61.088-.875.219A2.47 2.47 0 009.5 10z" style="marker:none" color="#000" overflow="visible"/><path d="M6.82 1.107C3.526 1.672.999 4.548.999 8c0 2.33 1.155 4.394 2.916 5.668.311-.813 1.064-1.394 1.942-1.639A3.806 3.806 0 017.37 9.475a8.69 8.69 0 01-1.373-4.69c0-1.314.3-2.556.823-3.678z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible"/><path d="M8 1c-.402 0-.795.042-1.18.107a8.69 8.69 0 00-.822 3.678 8.69 8.69 0 001.373 4.69 3.567 3.567 0 012.13-.715c.997 0 1.82.484 2.486 1.125.18-.035.315-.125.513-.125.775 0 1.474.288 2.02.756.305-.782.48-1.628.48-2.516 0-3.854-3.146-7-7-7z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible" opacity=".35"/></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16.014" height="16"><path d="M3.33.994c-.623 0-1 .33-1.273.594-.273.265-.482.543-.676.793a6.48 6.48 0 01-.484.582c-.114.11-.122.031.115.031a.997.997 0 10-.002 1.994c.624 0 1.003-.329 1.276-.593.272-.265.48-.543.673-.793a7.56 7.56 0 01.372-.444c.108.121.223.253.37.444.194.25.402.53.674.794.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.483-.542.676-.792a7.64 7.64 0 01.37-.444c.107.121.223.253.37.444.194.25.401.53.674.794.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.482-.543.676-.793.147-.19.26-.324.369-.445.108.121.223.254.371.445.193.25.401.53.674.795s.652.594 1.275.594a.997.997 0 100-1.994c.237 0 .23.08.115-.031a6.55 6.55 0 01-.486-.582c-.193-.25-.401-.53-.674-.795-.272-.265-.65-.594-1.273-.594-.624 0-1.003.33-1.276.594-.272.264-.48.543-.673.793a8.56 8.56 0 01-.371.443 7.546 7.546 0 01-.372-.443c-.193-.25-.4-.53-.673-.795S8.595.996 7.97.996c-.623 0-1.002.33-1.275.594-.273.265-.48.543-.674.793a7.56 7.56 0 01-.371.443 7.55 7.55 0 01-.371-.443c-.194-.25-.401-.53-.674-.795S3.954.994 3.331.994zm0 5.002c-.623 0-1 .33-1.273.594-.273.265-.482.543-.676.793a6.48 6.48 0 01-.484.582c-.114.11-.122.031.115.031A.997.997 0 101.01 9.99c.624 0 1.003-.329 1.276-.594.272-.264.48-.542.673-.792.148-.191.264-.323.372-.444.108.121.223.253.37.444.194.25.402.53.674.794.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.483-.543.676-.793a7.64 7.64 0 01.37-.443c.107.121.223.253.37.443.194.25.401.53.674.795s.652.594 1.276.594c.623 0 1-.329 1.273-.594.273-.264.482-.543.676-.793.147-.19.26-.324.369-.445.108.121.223.254.371.445.193.25.401.53.674.795s.652.594 1.275.594a.997.997 0 100-1.994c.237 0 .23.08.115-.031a6.55 6.55 0 01-.486-.582c-.193-.25-.401-.53-.674-.795-.272-.265-.65-.594-1.273-.594-.624 0-1.003.33-1.276.594-.272.264-.48.543-.673.793a8.56 8.56 0 01-.371.443 7.546 7.546 0 01-.372-.443c-.193-.25-.4-.53-.673-.795s-.65-.594-1.274-.594c-.623 0-1.002.33-1.275.594-.273.264-.48.543-.674.793a7.56 7.56 0 01-.371.443 7.55 7.55 0 01-.371-.443c-.194-.25-.401-.53-.674-.795s-.652-.594-1.275-.594zm0 5.002c-.623 0-1 .33-1.273.594-.273.264-.482.543-.676.793-.193.25-.37.471-.484.582-.114.11-.122.03.115.031a.997.997 0 10-.002 1.994c.624 0 1.003-.329 1.276-.594.272-.264.48-.543.673-.793.148-.19.264-.322.372-.443.108.121.223.253.37.443.194.25.402.53.674.795.273.265.652.594 1.276.594.623 0 1-.329 1.273-.594.273-.264.483-.543.676-.793a7.3 7.3 0 01.37-.443c.107.12.223.253.37.443.194.25.401.53.674.795s.652.594 1.276.594c.623 0 1-.33 1.273-.594.273-.264.482-.543.676-.793.147-.19.26-.324.369-.445.108.121.223.254.371.445.193.25.401.53.674.795s.652.594 1.275.594a.997.997 0 100-1.994c.237 0 .23.08.115-.031a6.55 6.55 0 01-.486-.582c-.193-.25-.401-.529-.674-.793-.272-.265-.65-.596-1.273-.596-.624 0-1.003.329-1.276.594-.272.264-.48.543-.673.793a8.56 8.56 0 01-.371.443 7.545 7.545 0 01-.372-.443c-.193-.25-.4-.53-.673-.795S8.595 11 7.97 11c-.623 0-1.002.33-1.275.594-.273.264-.48.543-.674.793-.147.19-.263.322-.371.443a7.549 7.549 0 01-.371-.443c-.194-.25-.401-.53-.674-.795s-.652-.594-1.275-.594z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" overflow="visible" opacity=".5" color="#000" font-weight="400" font-family="sans-serif" fill="#474747"/></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M8.5 9A2.5 2.5 0 006 11.5c0 .218.041.423.094.625A1.549 1.549 0 005.5 12a1.5 1.5 0 100 3h8a1.5 1.5 0 100-3 2 2 0 00-2-2c-.316 0-.61.088-.875.219A2.47 2.47 0 008.5 9z" style="marker:none" overflow="visible"/><path d="M9.5 2a2.49 2.49 0 00-2.469 2.219C6.705 4.097 6.37 4 6.001 4a3 3 0 00-3 3c0 .098.021.185.03.281A2.013 2.013 0 002.001 7a2 2 0 100 4H5.1c.25-1.68 1.655-3 3.4-3 .98 0 1.786.49 2.416 1.143.199-.047.361-.143.584-.143 1.262 0 2.19.874 2.604 2h.396a1.5 1.5 0 100-3c-.207 0-.414.05-.594.125A2.44 2.44 0 0014 7.5c0-1.23-.893-2.228-2.062-2.437A2.5 2.5 0 009.5 2zm-1 8c-.663 0-1.207.414-1.41 1h2.838l-.16-.266C9.498 10.285 9.052 10 8.5 10z" style="marker:none" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 799 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M9.5 2a2.49 2.49 0 00-2.469 2.219C6.704 4.097 6.37 4 6 4a3 3 0 00-3 3c0 .098.022.185.031.281A2.014 2.014 0 002 7a2 2 0 100 4h5V8.875C7 7.865 7.865 7 8.875 7h5.062a2.499 2.499 0 00-2-1.938A2.5 2.5 0 009.5 2z" style="marker:none" color="#000" overflow="visible" fill="#2e3436"/><path class="warning" d="M8.875 8A.863.863 0 008 8.875v6.25c0 .492.383.875.875.875h6.25a.863.863 0 00.875-.875v-6.25A.863.863 0 0015.125 8zM11 9h2v2.5s0 .5-.5.5h-1c-.5 0-.5-.5-.5-.5zm.5 4h1c.277 0 .5.223.5.5v1c0 .277-.223.5-.5.5h-1a.499.499 0 01-.5-.5v-1c0-.277.223-.5.5-.5z" style="marker:none" color="#bebebe" overflow="visible" fill="#f57900"/></svg>

After

Width:  |  Height:  |  Size: 701 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M9.465 0C8.192 0 7.158.973 7.017 2.219 6.693 2.097 6.361 2 5.994 2 4.351 2 3.02 3.343 3.02 5c0 .098.022.185.031.281A1.983 1.983 0 002.028 5 1.992 1.992 0 00.044 7c0 1.105.888 2 1.984 2h12.396c.821 0 1.487-.672 1.487-1.5S15.245 6 14.424 6c-.206 0-.411.05-.589.125.052-.202.093-.407.093-.625 0-1.23-.886-2.228-2.045-2.438.041-.18.062-.368.062-.562 0-1.38-1.11-2.5-2.48-2.5z" style="marker:none" overflow="visible"/><path d="M2.49 9.992a.496.496 0 00-.48.404l-1 4.92a.496.496 0 10.973.198l1-4.918a.496.496 0 00-.493-.604zm2.004.004a.496.496 0 00-.48.404l-1.002 4.916a.496.496 0 10.973.198L4.987 10.6a.496.496 0 00-.493-.604zm2-.004a.496.496 0 00-.48.404l-1.002 4.92a.496.496 0 10.973.198l1.002-4.918a.496.496 0 00-.493-.604zm2.002 0a.496.496 0 00-.48.404l-1.002 4.92a.496.496 0 10.973.198l1-4.918a.496.496 0 00-.49-.604zm2 0a.496.496 0 00-.48.404l-1 4.92a.496.496 0 10.972.198l1-4.918a.496.496 0 00-.492-.604zm2.002 0a.496.496 0 00-.48.404l-1 4.92a.496.496 0 10.97.198l1.002-4.918a.496.496 0 00-.492-.604z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" font-family="sans-serif" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><g transform="translate(-332 -88)"><path id="a" d="M339.492 88.492A.5.5 0 00339 89v1.533l-1.252-.717a.5.5 0 10-.496.868l1.748 1v8.683l-1.746.987a.5.5 0 10.492.87l1.254-.708V103a.5.5 0 101 0v-1.484l1.254.709a.5.5 0 10.492-.871l-1.746-.987v-8.683l1.748-1a.5.5 0 10-.496-.868l-1.252.717V89a.5.5 0 00-.508-.508z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" stroke-linecap="round"/><use height="100%" xlink:href="#a" transform="rotate(-60 339.5 96)" width="100%"/><use height="100%" xlink:href="#a" transform="rotate(-120 339.5 96)" width="100%"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -10,30 +10,107 @@
<file preprocess="xml-stripblanks">help-overlay.ui</file>
</gresource>
<gresource prefix="/org/gtk/WidgetFactory4">
<file>icons/16x16/actions/call-start-symbolic.symbolic.png</file>
<file>icons/16x16/actions/call-stop-symbolic.symbolic.png</file>
<file>icons/16x16/actions/document-new-symbolic.symbolic.png</file>
<file>icons/16x16/actions/document-new.png</file>
<file>icons/16x16/actions/document-save.png</file>
<file>icons/16x16/actions/edit-find.png</file>
<file>icons/16x16/actions/insert-image.png</file>
<file>icons/16x16/actions/send-to-symbolic.symbolic.png</file>
<file>icons/16x16/actions/view-fullscreen-symbolic.symbolic.png</file>
<file>icons/16x16/actions/document-send-symbolic.symbolic.png</file>
<file>icons/16x16/actions/edit-find.png</file>
<file>icons/16x16/actions/format-indent-less-symbolic-rtl.symbolic.png</file>
<file>icons/16x16/actions/format-indent-less-symbolic.symbolic.png</file>
<file>icons/16x16/actions/format-indent-more-symbolic-rtl.symbolic.png</file>
<file>icons/16x16/actions/format-indent-more-symbolic.symbolic.png</file>
<file>icons/16x16/actions/format-justify-center-symbolic.symbolic.png</file>
<file>icons/16x16/actions/format-justify-fill-symbolic.symbolic.png</file>
<file>icons/16x16/actions/format-justify-left-symbolic.symbolic.png</file>
<file>icons/16x16/actions/format-justify-right-symbolic.symbolic.png</file>
<file>icons/16x16/actions/insert-image.png</file>
<file>icons/16x16/actions/insert-link-symbolic.symbolic.png</file>
<file>icons/16x16/actions/send-to-symbolic.symbolic.png</file>
<file>icons/16x16/actions/star-new-symbolic.symbolic.png</file>
<file>icons/16x16/actions/view-continuous-symbolic.symbolic.png</file>
<file>icons/16x16/actions/view-dual-symbolic.symbolic.png</file>
<file>icons/16x16/actions/view-fullscreen-symbolic.symbolic.png</file>
<file>icons/16x16/actions/view-grid-symbolic.symbolic.png</file>
<file>icons/16x16/actions/zoom-in.png</file>
<file>icons/16x16/actions/view-paged-symbolic.symbolic.png</file>
<file>icons/16x16/actions/zoom-in-symbolic.symbolic.png</file>
<file>icons/16x16/actions/zoom-original.png</file>
<file>icons/16x16/actions/zoom-in.png</file>
<file>icons/16x16/actions/zoom-original-symbolic.symbolic.png</file>
<file>icons/16x16/actions/zoom-out.png</file>
<file>icons/16x16/actions/zoom-original.png</file>
<file>icons/16x16/actions/zoom-out-symbolic.symbolic.png</file>
<file>icons/16x16/actions/zoom-out.png</file>
<file>icons/16x16/apps/preferences-desktop-locale-symbolic.symbolic.png</file>
<file>icons/16x16/devices/audio-headphones-symbolic.symbolic.png</file>
<file>icons/16x16/devices/audio-input-microphone-symbolic.symbolic.png</file>
<file>icons/16x16/devices/audio-speakers-symbolic.symbolic.png</file>
<file>icons/16x16/devices/camera-photo-symbolic.symbolic.png</file>
<file>icons/16x16/devices/camera-web-symbolic.symbolic.png</file>
<file>icons/16x16/devices/drive-optical-symbolic.symbolic.png</file>
<file>icons/16x16/devices/network-wired-symbolic.symbolic.png</file>
<file>icons/16x16/devices/network-wireless-symbolic.symbolic.png</file>
<file>icons/16x16/devices/phone-symbolic.symbolic.png</file>
<file>icons/16x16/emblems/emblem-default-symbolic.symbolic.png</file>
<file>icons/16x16/emblems/emblem-shared-symbolic.symbolic.png</file>
<file>icons/16x16/emotes/face-monkey-symbolic.symbolic.png</file>
<file>icons/16x16/status/appointment-soon-symbolic.symbolic.png</file>
<file>icons/16x16/status/microphone-sensitivity-muted-symbolic.symbolic.png</file>
<file>icons/16x16/status/microphone-sensitivity-high-symbolic.symbolic.png</file>
<file>icons/16x16/status/microphone-sensitivity-low-symbolic.symbolic.png</file>
<file>icons/16x16/status/microphone-sensitivity-medium-symbolic.symbolic.png</file>
<file>icons/16x16/status/microphone-sensitivity-high-symbolic.symbolic.png</file>
<file>icons/16x16/status/microphone-sensitivity-muted-symbolic.symbolic.png</file>
<file>icons/16x16/status/weather-clear-night-symbolic.symbolic.png</file>
<file>icons/16x16/emotes/face-monkey-symbolic.symbolic.png</file>
<file>icons/16x16/apps/preferences-desktop-locale-symbolic.symbolic.png</file>
<file>icons/16x16/status/weather-few-clouds-night-symbolic.symbolic.png</file>
<file>icons/16x16/status/weather-fog-symbolic.symbolic.png</file>
<file>icons/16x16/status/weather-overcast-symbolic.symbolic.png</file>
<file>icons/16x16/status/weather-severe-alert-symbolic.symbolic.png</file>
<file>icons/16x16/status/weather-showers-symbolic.symbolic.png</file>
<file>icons/16x16/status/weather-snow-symbolic.symbolic.png</file>
<file>icons/scalable/actions/call-start-symbolic.svg</file>
<file>icons/scalable/actions/call-stop-symbolic.svg</file>
<file>icons/scalable/actions/document-new-symbolic.svg</file>
<file>icons/scalable/actions/format-indent-less-symbolic-rtl.svg</file>
<file>icons/scalable/actions/format-indent-less-symbolic.svg</file>
<file>icons/scalable/actions/format-indent-more-symbolic-rtl.svg</file>
<file>icons/scalable/actions/format-indent-more-symbolic.svg</file>
<file>icons/scalable/actions/format-justify-center-symbolic.svg</file>
<file>icons/scalable/actions/format-justify-fill-symbolic.svg</file>
<file>icons/scalable/actions/format-justify-left-symbolic.svg</file>
<file>icons/scalable/actions/format-justify-right-symbolic.svg</file>
<file>icons/scalable/actions/insert-link-symbolic.svg</file>
<file>icons/scalable/actions/star-new-symbolic.svg</file>
<file>icons/scalable/actions/view-continuous-symbolic.svg</file>
<file>icons/scalable/actions/view-dual-symbolic.svg</file>
<file>icons/scalable/actions/view-paged-symbolic.svg</file>
<file>icons/scalable/actions/view-fullscreen-symbolic.svg</file>
<file>icons/scalable/actions/view-grid-symbolic.svg</file>
<file>icons/scalable/actions/zoom-in-symbolic.svg</file>
<file>icons/scalable/actions/zoom-original-symbolic.svg</file>
<file>icons/scalable/actions/zoom-out-symbolic.svg</file>
<file>icons/scalable/devices/audio-headphones-symbolic.svg</file>
<file>icons/scalable/devices/audio-speakers-symbolic.svg</file>
<file>icons/scalable/devices/audio-input-microphone-symbolic.svg</file>
<file>icons/scalable/devices/camera-photo-symbolic.svg</file>
<file>icons/scalable/devices/camera-web-symbolic.svg</file>
<file>icons/scalable/devices/drive-optical-symbolic.svg</file>
<file>icons/scalable/devices/network-wired-symbolic.svg</file>
<file>icons/scalable/devices/network-wireless-symbolic.svg</file>
<file>icons/scalable/devices/phone-symbolic.svg</file>
<file>icons/scalable/status/weather-clear-night-symbolic.svg</file>
<file>icons/scalable/status/weather-few-clouds-night-symbolic.svg</file>
<file>icons/scalable/status/weather-fog-symbolic.svg</file>
<file>icons/scalable/status/weather-overcast-symbolic.svg</file>
<file>icons/scalable/status/weather-severe-alert-symbolic.svg</file>
<file>icons/scalable/status/weather-showers-symbolic.svg</file>
<file>icons/scalable/status/weather-snow-symbolic.svg</file>
</gresource>
<gresource prefix="/org/gtk/WidgetFactory4">
<file>gtk-logo.webm</file>

View File

@@ -311,9 +311,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<row>
<col id="0">camera-photo-symbolic</col>
</row>
<row>
<col id="0">camera-video-symbolic</col>
</row>
<row>
<col id="0">camera-web-symbolic</col>
</row>
@@ -329,9 +326,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<row>
<col id="0">drive-harddisk-symbolic</col>
</row>
<row>
<col id="0">drive-multidisk-symbolic</col>
</row>
<row>
<col id="0">drive-optical-symbolic</col>
</row>

View File

@@ -349,7 +349,7 @@ gdk_content_provider_union_get_value (GdkContentProvider *provider,
g_clear_error (&provider_error);
}
return FALSE;
return GDK_CONTENT_PROVIDER_CLASS (gdk_content_provider_union_parent_class)->get_value (provider, value, error);
}
static void

View File

@@ -965,6 +965,7 @@ init (void)
string_serializer,
(gpointer) charset,
NULL);
g_free (mime);
}
gdk_content_register_serializer (G_TYPE_STRING,
"text/plain",

View File

@@ -1381,3 +1381,33 @@ gdk_device_has_bidi_layouts (GdkDevice *device)
return FALSE;
}
void
gdk_device_set_timestamp (GdkDevice *device,
guint32 timestamp)
{
device->timestamp = timestamp;
}
/**
* gdk_device_get_timestamp:
* @device: a `GdkDevice`
*
* Returns the timestamp of the last activity for this device.
*
* In practice, this means the timestamp of the last event that was
* received from the OS for this device. (GTK may occasionally produce
* events for a device that are not received from the OS, and will not
* update the timestamp).
*
* Returns: the timestamp of the last activity for this device
*
* Since: 4.2
*/
guint32
gdk_device_get_timestamp (GdkDevice *device)
{
g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_CURRENT_TIME);
return device->timestamp;
}

View File

@@ -117,6 +117,9 @@ GDK_AVAILABLE_IN_ALL
GdkSurface * gdk_device_get_surface_at_position (GdkDevice *device,
double *win_x,
double *win_y);
GDK_AVAILABLE_IN_4_2
guint32 gdk_device_get_timestamp (GdkDevice *device);
G_END_DECLS
#endif /* __GDK_DEVICE_H__ */

View File

@@ -89,6 +89,8 @@ struct _GdkDevice
GdkSeat *seat;
GdkDeviceTool *last_tool;
guint32 timestamp;
};
struct _GdkDeviceClass
@@ -189,6 +191,9 @@ gboolean gdk_device_get_axis (GdkDevice *device,
GdkAxisUse gdk_device_get_axis_use (GdkDevice *device,
guint index_);
void gdk_device_set_timestamp (GdkDevice *device,
guint32 timestamp);
G_END_DECLS

View File

@@ -699,6 +699,11 @@ gdk_drop_read_async (GdkDrop *self,
*
* Finishes an async drop read operation.
*
* Note that you must not use blocking read calls on the returned stream
* in the GTK thread, since some platforms might require communication with
* GTK to complete the data transfer. You can use async APIs such as
* g_input_stream_read_bytes_async().
*
* See [method@Gdk.Drop.read_async].
*
* Returns: (nullable) (transfer full): the `GInputStream`, or %NULL

View File

@@ -414,6 +414,9 @@ gdk_event_alloc (GdkEventType event_type,
event->device = device != NULL ? g_object_ref (device) : NULL;
event->time = time_;
if (device != NULL && time_ != GDK_CURRENT_TIME)
gdk_device_set_timestamp (device, time_);
return event;
}
@@ -1686,6 +1689,24 @@ gdk_key_event_is_modifier (GdkEvent *event)
return self->key_is_modifier;
}
static gboolean
keyval_in_group (GdkKeymap *keymap,
guint keyval,
int group)
{
GdkKeymapKey *keys;
guint n_keys;
gdk_keymap_get_cached_entries_for_keyval (keymap, keyval, &keys, &n_keys);
for (int i = 0; i < n_keys; i++)
{
if (keys[i].group == group)
return TRUE;
}
return FALSE;
}
/**
* gdk_key_event_matches:
* @event: (type GdkKeyEvent): a key `GdkEvent`
@@ -1781,10 +1802,9 @@ gdk_key_event_matches (GdkEvent *event,
if (keys[i].keycode == keycode &&
keys[i].level == level &&
/* Only match for group if it's an accel mod */
(!group_mod_is_accel_mod || keys[i].group == layout))
{
return GDK_KEY_MATCH_PARTIAL;
}
(keys[i].group == layout ||
(!group_mod_is_accel_mod && !keyval_in_group (keymap, keyval, layout))))
return GDK_KEY_MATCH_PARTIAL;
}
}

View File

@@ -2248,13 +2248,18 @@ _gdk_windowing_got_event (GdkDisplay *display,
GdkPointerSurfaceInfo *pointer_info = NULL;
GdkDevice *device;
GdkEventType type;
guint32 timestamp;
_gdk_display_update_last_event (display, event);
device = gdk_event_get_device (event);
timestamp = gdk_event_get_time (event);
if (device)
{
if (timestamp != GDK_CURRENT_TIME)
gdk_device_set_timestamp (device, timestamp);
if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD &&
gdk_device_get_source (device) != GDK_SOURCE_TABLET_PAD)
{
@@ -2610,37 +2615,6 @@ gdk_surface_get_scale_factor (GdkSurface *surface)
return 1;
}
/* Returns the *real* unscaled size, which may be a fractional size
in surface scale coordinates. We need this to properly handle GL
coordinates which are y-flipped in the real coordinates. */
void
gdk_surface_get_unscaled_size (GdkSurface *surface,
int *unscaled_width,
int *unscaled_height)
{
GdkSurfaceClass *class;
int scale;
g_return_if_fail (GDK_IS_SURFACE (surface));
class = GDK_SURFACE_GET_CLASS (surface);
if (class->get_unscaled_size)
{
class->get_unscaled_size (surface, unscaled_width, unscaled_height);
return;
}
scale = gdk_surface_get_scale_factor (surface);
if (unscaled_width)
*unscaled_width = surface->width * scale;
if (unscaled_height)
*unscaled_height = surface->height * scale;
}
/**
* gdk_surface_set_opaque_region:
* @surface: a top-level `GdkSurface`

View File

@@ -157,9 +157,6 @@ struct _GdkSurfaceClass
double dy);
int (* get_scale_factor) (GdkSurface *surface);
void (* get_unscaled_size) (GdkSurface *surface,
int *unscaled_width,
int *unscaled_height);
void (* set_opaque_region) (GdkSurface *surface,
cairo_region_t *region);
@@ -271,9 +268,6 @@ GdkGLContext * gdk_surface_get_paint_gl_context (GdkSurface *surface,
GError **error);
GdkGLContext * gdk_surface_get_shared_data_gl_context (GdkSurface *surface);
void gdk_surface_get_unscaled_size (GdkSurface *surface,
int *unscaled_width,
int *unscaled_height);
gboolean gdk_surface_handle_event (GdkEvent *event);
GdkSeat * gdk_surface_get_seat_from_event (GdkSurface *surface,
GdkEvent *event);

View File

@@ -103,8 +103,7 @@ create_pixel_format (int major,
NSOpenGLPFABackingStore,
NSOpenGLPFAColorSize, 24,
NSOpenGLPFAAlphaSize, 8,
(NSOpenGLPixelFormatAttribute)nil
0
};
if (major == 3 && minor == 2)

View File

@@ -1846,6 +1846,36 @@ pointer_handle_axis_discrete (void *data,
get_axis_name (axis), value, seat));
}
static int
get_active_layout (GdkKeymap *keymap)
{
struct xkb_keymap *xkb_keymap;
struct xkb_state *xkb_state;
xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap);
xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap);
for (int i = 0; i < xkb_keymap_num_layouts (xkb_keymap); i++)
{
if (xkb_state_layout_index_is_active (xkb_state, i, XKB_STATE_LAYOUT_EFFECTIVE))
return i;
}
return -1;
}
#ifdef G_ENABLE_DEBUG
static const char *
get_active_layout_name (GdkKeymap *keymap)
{
struct xkb_keymap *xkb_keymap;
xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap);
return xkb_keymap_layout_get_name (xkb_keymap, get_active_layout (keymap));
}
#endif
static void
keyboard_handle_keymap (void *data,
struct wl_keyboard *keyboard,
@@ -1870,6 +1900,8 @@ keyboard_handle_keymap (void *data,
_gdk_wayland_keymap_update_from_fd (seat->keymap, format, fd, size);
GDK_DISPLAY_NOTE(seat->keymap->display, INPUT, g_print ("active layout now: %s\n", get_active_layout_name (seat->keymap)));
g_signal_emit_by_name (seat->keymap, "keys-changed");
g_signal_emit_by_name (seat->keymap, "state-changed");
if (direction != gdk_keymap_get_direction (seat->keymap))
@@ -2215,17 +2247,18 @@ keyboard_handle_modifiers (void *data,
gboolean num_lock;
gboolean scroll_lock;
GdkModifierType modifiers;
int layout;
keymap = seat->keymap;
xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap);
direction = gdk_keymap_get_direction (seat->keymap);
bidi = gdk_keymap_have_bidi_layouts (seat->keymap);
caps_lock = gdk_keymap_get_caps_lock_state (seat->keymap);
num_lock = gdk_keymap_get_num_lock_state (seat->keymap);
scroll_lock = gdk_keymap_get_scroll_lock_state (seat->keymap);
modifiers = gdk_keymap_get_modifier_state (seat->keymap);
direction = gdk_keymap_get_direction (keymap);
bidi = gdk_keymap_have_bidi_layouts (keymap);
caps_lock = gdk_keymap_get_caps_lock_state (keymap);
num_lock = gdk_keymap_get_num_lock_state (keymap);
scroll_lock = gdk_keymap_get_scroll_lock_state (keymap);
modifiers = gdk_keymap_get_modifier_state (keymap);
layout = get_active_layout (keymap);
/* Note: the docs for xkb_state_update mask state that all parameters
* must be passed, or we may end up with an 'incoherent' state. But the
@@ -2247,20 +2280,26 @@ keyboard_handle_modifiers (void *data,
seat->key_modifiers = gdk_keymap_get_modifier_state (keymap);
g_signal_emit_by_name (keymap, "state-changed");
if (direction != gdk_keymap_get_direction (keymap))
g_signal_emit_by_name (keymap, "direction-changed");
if (layout != get_active_layout (keymap))
{
GDK_DISPLAY_NOTE(keymap->display, INPUT, g_print ("active layout now: %s\n", get_active_layout_name (keymap)));
if (direction != gdk_keymap_get_direction (seat->keymap))
g_object_notify (G_OBJECT (seat->logical_keyboard), "direction");
if (bidi != gdk_keymap_have_bidi_layouts (seat->keymap))
g_signal_emit_by_name (keymap, "keys-changed");
}
if (direction != gdk_keymap_get_direction (keymap))
{
g_signal_emit_by_name (keymap, "direction-changed");
g_object_notify (G_OBJECT (seat->logical_keyboard), "direction");
}
if (bidi != gdk_keymap_have_bidi_layouts (keymap))
g_object_notify (G_OBJECT (seat->logical_keyboard), "has-bidi-layouts");
if (caps_lock != gdk_keymap_get_caps_lock_state (seat->keymap))
if (caps_lock != gdk_keymap_get_caps_lock_state (keymap))
g_object_notify (G_OBJECT (seat->logical_keyboard), "caps-lock-state");
if (num_lock != gdk_keymap_get_num_lock_state (seat->keymap))
if (num_lock != gdk_keymap_get_num_lock_state (keymap))
g_object_notify (G_OBJECT (seat->logical_keyboard), "num-lock-state");
if (scroll_lock != gdk_keymap_get_scroll_lock_state (seat->keymap))
if (scroll_lock != gdk_keymap_get_scroll_lock_state (keymap))
g_object_notify (G_OBJECT (seat->logical_keyboard), "scroll-lock-state");
if (modifiers != gdk_keymap_get_modifier_state (seat->keymap))
if (modifiers != gdk_keymap_get_modifier_state (keymap))
g_object_notify (G_OBJECT (seat->logical_keyboard), "modifier-state");
}

View File

@@ -488,26 +488,19 @@ gdk_registry_handle_global (void *data,
}
else if (strcmp (interface, "wl_seat") == 0)
{
SeatAddedClosure *closure;
static const char *required_device_manager_globals[] = {
"wl_compositor",
"wl_data_device_manager",
NULL
};
if (has_required_globals (display_wayland,
required_device_manager_globals))
_gdk_wayland_display_add_seat (display_wayland, id, version);
else
{
SeatAddedClosure *closure;
closure = g_new0 (SeatAddedClosure, 1);
closure->base.handler = seat_added_closure_run;
closure->base.required_globals = required_device_manager_globals;
closure->id = id;
closure->version = version;
postpone_on_globals_closure (display_wayland, &closure->base);
}
closure = g_new0 (SeatAddedClosure, 1);
closure->base.handler = seat_added_closure_run;
closure->base.required_globals = required_device_manager_globals;
closure->id = id;
closure->version = version;
postpone_on_globals_closure (display_wayland, &closure->base);
}
else if (strcmp (interface, "wl_data_device_manager") == 0)
{
@@ -586,8 +579,6 @@ gdk_registry_handle_global (void *data,
g_hash_table_insert (display_wayland->known_globals,
GUINT_TO_POINTER (id), g_strdup (interface));
process_on_globals_closures (display_wayland);
}
static void
@@ -679,8 +670,13 @@ _gdk_wayland_display_open (const char *display_name)
display_wayland->wl_registry = wl_display_get_registry (display_wayland->wl_display);
wl_registry_add_listener (display_wayland->wl_registry, &registry_listener, display_wayland);
if (wl_display_roundtrip (display_wayland->wl_display) < 0)
{
g_object_unref (display);
return NULL;
}
_gdk_wayland_display_async_roundtrip (display_wayland);
process_on_globals_closures (display_wayland);
/* Wait for initializing to complete. This means waiting for all
* asynchronous roundtrips that were triggered during initial roundtrip. */

View File

@@ -126,14 +126,48 @@ gdk_wayland_gl_context_realize (GdkGLContext *context,
: EGL_NO_CONTEXT,
context_attribs);
/* If context creation failed without the legacy bit, let's try again with it */
if (ctx == NULL && !legacy_bit)
/* If context creation failed without the ES bit, let's try again with it */
if (ctx == NULL)
{
/* Ensure that re-ordering does not break the offsets */
g_assert (context_attribs[0] == EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR);
context_attribs[1] = EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR;
context_attribs[3] = 3;
context_attribs[5] = 0;
i = 0;
context_attribs[i++] = EGL_CONTEXT_MAJOR_VERSION;
context_attribs[i++] = 2;
context_attribs[i++] = EGL_CONTEXT_MINOR_VERSION;
context_attribs[i++] = 0;
context_attribs[i++] = EGL_CONTEXT_FLAGS_KHR;
context_attribs[i++] = flags & ~EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR;
context_attribs[i++] = EGL_NONE;
g_assert (i < N_EGL_ATTRS);
eglBindAPI (EGL_OPENGL_ES_API);
legacy_bit = FALSE;
use_es = TRUE;
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("eglCreateContext failed, switching to OpenGL ES"));
ctx = eglCreateContext (display_wayland->egl_display,
context_wayland->egl_config,
share != NULL ? GDK_WAYLAND_GL_CONTEXT (share)->egl_context
: shared_data_context != NULL ? GDK_WAYLAND_GL_CONTEXT (shared_data_context)->egl_context
: EGL_NO_CONTEXT,
context_attribs);
}
/* If context creation failed without the legacy bit, let's try again with it */
if (ctx == NULL)
{
i = 0;
context_attribs[i++] = EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR;
context_attribs[i++] = EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR;
context_attribs[i++] = EGL_CONTEXT_MAJOR_VERSION;
context_attribs[i++] = 3;
context_attribs[i++] = EGL_CONTEXT_MINOR_VERSION;
context_attribs[i++] = 0;
context_attribs[i++] = EGL_CONTEXT_FLAGS_KHR;
context_attribs[i++] = flags & ~EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR;
context_attribs[i++] = EGL_NONE;
g_assert (i < N_EGL_ATTRS);
eglBindAPI (EGL_OPENGL_API);

View File

@@ -61,6 +61,7 @@ static DefaultCursor default_cursors[] = {
{ "text", IDC_IBEAM },
{ "move", IDC_SIZEALL },
{ "not-allowed", IDC_NO },
{ "all-scroll", IDC_SIZEALL },
{ "ew-resize", IDC_SIZEWE },
{ "e-resize", IDC_SIZEWE },
{ "w-resize", IDC_SIZEWE },

View File

@@ -2485,8 +2485,6 @@ gdk_event_translate (MSG *msg,
delta_y,
FALSE);
_gdk_win32_append_event (event);
/* Append the discrete version too */
direction = 0;
if (msg->message == WM_MOUSEWHEEL)

View File

@@ -520,8 +520,6 @@ _gdk_win32_display_create_surface (GdkDisplay *display,
surface->height = height;
impl->surface_scale = _gdk_win32_display_get_monitor_scale_factor (display_win32, NULL, NULL, NULL);
impl->unscaled_width = width * impl->surface_scale;
impl->unscaled_height = height * impl->surface_scale;
dwExStyle = 0;
owner = NULL;
@@ -3969,12 +3967,9 @@ gdk_win32_surface_do_move_resize_drag (GdkSurface *window,
{
int scale = impl->surface_scale;
impl->unscaled_width = new_rect.right - new_rect.left;
impl->unscaled_height = new_rect.bottom - new_rect.top;
impl->next_layout.configured_rect = new_rect;
impl->next_layout.configured_width = (impl->unscaled_width + scale - 1) / scale;
impl->next_layout.configured_height = (impl->unscaled_height + scale - 1) / scale;
impl->next_layout.configured_width = (new_rect.right - new_rect.left + scale - 1) / scale;
impl->next_layout.configured_height = (new_rect.bottom - new_rect.top + scale - 1) / scale;
}
context->native_move_resize_pending = TRUE;
@@ -4476,19 +4471,6 @@ _gdk_win32_surface_get_scale_factor (GdkSurface *window)
}
}
void
_gdk_win32_surface_get_unscaled_size (GdkSurface *window,
int *unscaled_width,
int *unscaled_height)
{
GdkWin32Surface *impl = GDK_WIN32_SURFACE (window);
if (unscaled_width)
*unscaled_width = impl->unscaled_width;
if (unscaled_height)
*unscaled_height = impl->unscaled_height;
}
static void
gdk_win32_surface_set_input_region (GdkSurface *window,
cairo_region_t *input_region)
@@ -4580,11 +4562,8 @@ _gdk_win32_surface_request_layout (GdkSurface *surface)
{
_gdk_win32_get_window_rect (surface, &rect);
impl->unscaled_width = rect.right - rect.left;
impl->unscaled_height = rect.bottom - rect.top;
impl->next_layout.configured_width = (impl->unscaled_width + scale - 1) / scale;
impl->next_layout.configured_height = (impl->unscaled_height + scale - 1) / scale;
impl->next_layout.configured_width = (rect.right - rect.left + scale - 1) / scale;
impl->next_layout.configured_height = (rect.bottom - rect.top + scale - 1) / scale;
surface->x = rect.left / scale;
surface->y = rect.top / scale;
}
@@ -4635,7 +4614,6 @@ gdk_win32_surface_class_init (GdkWin32SurfaceClass *klass)
impl_class->drag_begin = _gdk_win32_surface_drag_begin;
impl_class->create_gl_context = _gdk_win32_surface_create_gl_context;
impl_class->get_scale_factor = _gdk_win32_surface_get_scale_factor;
impl_class->get_unscaled_size = _gdk_win32_surface_get_unscaled_size;
impl_class->request_layout = _gdk_win32_surface_request_layout;
impl_class->compute_size = _gdk_win32_surface_compute_size;
}

View File

@@ -335,8 +335,6 @@ struct _GdkWin32Surface
/* scale of window on HiDPI */
int surface_scale;
int unscaled_width;
int unscaled_height;
GdkToplevelLayout *toplevel_layout;
struct {

View File

@@ -581,12 +581,14 @@ gdk_surface_cache_new (GdkDisplay *display)
*/
if (gdk_display_is_composited (display))
{
gdk_x11_display_error_trap_push (display);
cow = XCompositeGetOverlayWindow (xdisplay, xroot_window);
gdk_surface_cache_add (result, cow, 0, 0,
WidthOfScreen (GDK_X11_SCREEN (screen)->xscreen),
HeightOfScreen (GDK_X11_SCREEN (screen)->xscreen),
TRUE);
XCompositeReleaseOverlayWindow (xdisplay, xroot_window);
gdk_x11_display_error_trap_pop_ignored (display);
}
#endif

View File

@@ -37,7 +37,7 @@
#include "gdkintl.h"
#include <cairo/cairo-xlib.h>
#include <cairo-xlib.h>
#include <epoxy/glx.h>

View File

@@ -177,35 +177,46 @@ _gdk_x11_surface_get_toplevel (GdkSurface *surface)
return impl->toplevel;
}
/**
* _gdk_x11_surface_update_size:
* @impl: a #GdkX11Surface.
/*
* gdk_x11_surface_update_size:
* @self: a #GdkX11Surface
* @width: the new width of the surface
* @height: the new height of the surface
* @scale: the new scale of the surface
*
* Updates the state of the surface (in particular the drawable's
* cairo surface) when its size has changed.
*
* Returns: %TRUE if the surface was updated, %FALSE if no updates
* where necessary
**/
void
_gdk_x11_surface_update_size (GdkX11Surface *impl)
static gboolean
gdk_x11_surface_update_size (GdkX11Surface *self,
int width,
int height,
int scale)
{
if (impl->cairo_surface)
GdkSurface *surface = GDK_SURFACE (self);
if (surface->width == width &&
surface->height == height &&
self->surface_scale == scale)
return FALSE;
surface->width = width;
surface->height = height;
self->surface_scale = scale;
_gdk_surface_update_size (surface);
if (self->cairo_surface)
{
cairo_xlib_surface_set_size (impl->cairo_surface,
impl->unscaled_width, impl->unscaled_height);
cairo_xlib_surface_set_size (self->cairo_surface,
self->unscaled_width, self->unscaled_height);
cairo_surface_set_device_scale (self->cairo_surface, scale, scale);
}
}
static void
gdk_x11_surface_get_unscaled_size (GdkSurface *surface,
int *unscaled_width,
int *unscaled_height)
{
GdkX11Surface *impl = GDK_X11_SURFACE (surface);
if (unscaled_width)
*unscaled_width = impl->unscaled_width;
if (unscaled_height)
*unscaled_height = impl->unscaled_height;
return TRUE;
}
static void
@@ -385,10 +396,10 @@ gdk_x11_surface_compute_size (GdkSurface *surface)
if (surface->resize_count == 0)
{
surface->width = impl->next_layout.configured_width;
surface->height = impl->next_layout.configured_height;
_gdk_surface_update_size (surface);
_gdk_x11_surface_update_size (impl);
gdk_x11_surface_update_size (impl,
impl->next_layout.configured_width,
impl->next_layout.configured_height,
impl->surface_scale);
}
impl->next_layout.surface_geometry_dirty = FALSE;
@@ -396,11 +407,10 @@ gdk_x11_surface_compute_size (GdkSurface *surface)
}
else
{
surface->width = impl->next_layout.configured_width;
surface->height = impl->next_layout.configured_height;
_gdk_surface_update_size (surface);
_gdk_x11_surface_update_size (impl);
gdk_x11_surface_update_size (impl,
impl->next_layout.configured_width,
impl->next_layout.configured_height,
impl->surface_scale);
impl->next_layout.surface_geometry_dirty = FALSE;
}
@@ -1983,7 +1993,7 @@ gdk_x11_surface_enter_leave_monitors (GdkSurface *surface)
void
_gdk_x11_surface_set_surface_scale (GdkSurface *surface,
int scale)
int scale)
{
GdkX11Surface *impl;
GdkToplevelX11 *toplevel;
@@ -1991,10 +2001,8 @@ _gdk_x11_surface_set_surface_scale (GdkSurface *surface,
impl = GDK_X11_SURFACE (surface);
impl->surface_scale = scale;
if (impl->cairo_surface)
cairo_surface_set_device_scale (impl->cairo_surface, impl->surface_scale, impl->surface_scale);
_gdk_surface_update_size (surface);
if (!gdk_x11_surface_update_size (impl, surface->width, surface->height, scale))
return;
toplevel = _gdk_x11_surface_get_toplevel (surface);
if (toplevel)
@@ -4802,7 +4810,6 @@ gdk_x11_surface_class_init (GdkX11SurfaceClass *klass)
impl_class->get_scale_factor = gdk_x11_surface_get_scale_factor;
impl_class->set_opaque_region = gdk_x11_surface_set_opaque_region;
impl_class->create_gl_context = gdk_x11_surface_create_gl_context;
impl_class->get_unscaled_size = gdk_x11_surface_get_unscaled_size;
impl_class->request_layout = gdk_x11_surface_request_layout;
impl_class->compute_size = gdk_x11_surface_compute_size;
}

Some files were not shown because too many files have changed in this diff Show More