Compare commits

..

1328 Commits

Author SHA1 Message Date
Matthias Clasen
5e87f96aaf Per-glyph instance for color text as well 2017-09-10 13:44:43 -04:00
Matthias Clasen
ffd2e620ba fixup 2017-09-10 13:32:42 -04:00
Matthias Clasen
aec50193b0 wip: work towards per-glyph instances
Doesn't quite work yet
2017-09-10 13:27:58 -04:00
Matthias Clasen
2f46bd772e drop todo
All of this is backend work now
2017-09-10 10:11:20 -04:00
Matthias Clasen
797042e616 Drop has-color from text node
The vulkan code now figures this out when it needs to.
2017-09-10 10:09:29 -04:00
Matthias Clasen
ab00930bca update todo 2017-09-10 10:05:00 -04:00
Matthias Clasen
8b70b91a76 Use vulkan images for text
We are still using a single texture for each
glyph string.

Along the way, we drop the surface from the text node
and return gsk_text_node_draw to the way it was initially,
directly drawing on the provided cairo_t.
2017-09-10 10:03:32 -04:00
Matthias Clasen
b47fe87d61 Add code to put glyphs in a vulkan image 2017-09-10 10:02:41 -04:00
Matthias Clasen
63a1dc16ae Drop the surface caching 2017-09-10 10:02:41 -04:00
Matthias Clasen
f1a36a93cb update todo 2017-09-10 10:02:41 -04:00
Matthias Clasen
e1adca7301 Use color text pipeline
At the same time, rename the render ops to TEXT and COLOR_TEXT.
2017-09-10 10:02:41 -04:00
Matthias Clasen
0152a4b309 Add a color text pipeline
For now, this will be just the same as the blend pipeline,
but it will eventually do per-glyph instances.
2017-09-10 08:01:03 -04:00
Matthias Clasen
e4b5835185 Rename mask pipeline to text pipeline
It will become text-specific when we move to using one
instance per glyph, so rename it already.
2017-09-10 07:52:22 -04:00
Matthias Clasen
a6a3186bd7 update todo 2017-09-10 07:37:00 -04:00
Matthias Clasen
40de42cff9 update todo list 2017-09-09 23:00:13 -04:00
Matthias Clasen
36001547f5 Fix the mask renderer 2017-09-09 22:59:29 -04:00
Matthias Clasen
a87b120a2d more work-in-progress
Use the proper blend factors for masks. Still doesn't work.
2017-09-09 22:31:02 -04:00
Matthias Clasen
fca1a9244e wip: add a mask shader
It doesn't work yet.
2017-09-09 12:43:42 -04:00
Matthias Clasen
ae574b168a More text node work
Use the surface as a plain texture. This currently doesn't do
the right thing for masking, and loses text color. Keep a simple
cache of the surfaces.
2017-09-09 11:41:43 -04:00
Matthias Clasen
344bad9788 More work on text nodes
This commit takes several steps towards rendering text
like we want to. We use cairo to create a mask surface.
In draw(), we use it to paint individual glyphs with the
text color, unless we are dealing with color glyphs,
in which case we use the surface as source. The surface
will eventually be replaced by a font atlas texture.

This commit also simplifies the text node api to just
have a single offset, which determines the left end of
the text baseline, like all our other text drawing APIs.

We temporarily drop text node serialization, since it
will have to change anyway.
2017-09-09 09:22:57 -04:00
Daniel Boles
09d1d5a0d6 Entry: Fix leak of text in ensure_has_tooltip()
Thanks to Mohammed Sadiq for noticing this. I guess I got
Widget.get_tooltip_text() confused with Label.get_label().

https://bugzilla.gnome.org/show_bug.cgi?id=787410
2017-09-07 14:56:20 +01:00
Javier Jardón
80e3239033 meson.build: enable-tests -> build-tests
This completes b5e00d36f0
2017-09-06 20:45:35 +01:00
Piotr Drąg
4b48ed569a Update Polish translation 2017-09-06 20:17:24 +02:00
Matthias Clasen
dd4361a638 Rename enable-documentation and enable-man-pages options
You can now disable the documentation build with
-Ddocumentation=false and -Dman-pages=false.
2017-09-06 11:10:55 -04:00
Matthias Clasen
15edfbbc88 Rename and document the enable-gir option
You can disable introspection now with -Dintrospection=false.
2017-09-06 09:53:34 -04:00
Matthias Clasen
b5e00d36f0 Allow building without tests and demos
This is meant to cut down build time in flatpak and similar
situations. Since it produces technically incomplete builds,
we list these options in the status output at the end of
the meson run.
2017-09-06 09:53:20 -04:00
Matthias Clasen
af5d3e3299 popover: Fix a warning
We were unintentionally disconnecting an already-disconnected
signal handler in some cases. Don't do that, it causes warnings.
2017-09-06 08:04:33 -04:00
Matthias Clasen
ff0f5f57f1 gtk4-demo: Fix up the event axes demo
Use a drawing area instead of drawing directly on the
window, which doesn't work well with csd.
2017-09-06 07:05:01 -04:00
Matthias Clasen
b3b6c42e18 gtk4-demo: add a few missing window titles 2017-09-06 07:05:01 -04:00
Çağatay Yiğit Şahin
541af54d9d Update Turkish translation 2017-09-06 06:49:29 +00:00
Matthias Clasen
863a9cef98 entry: Set a clip
Now that GtkEntry is using a text node, we were spilling
the contents out to the side when the entry is scrolling.
Avoid that by setting a clip.
2017-09-05 23:29:59 -04:00
Chun-wei Fan
1b7f08171a gskpango.c: Include cairo.h consistently
The other source files use "#include <cairo.h>", so we should do
likewise.

https://bugzilla.gnome.org/show_bug.cgi?id=773299
2017-09-06 10:42:32 +08:00
Daniel Boles
d97db77ad4 ActionBar: Fix links in set_revealed() doc, etc.
mostly: syncing with previous commit, where InfoBar copied this all from

Also, remove my unhelpful “and vice-versa” from InfoBar.
2017-09-05 21:33:00 +01:00
Daniel Boles
14387ed2e7 InfoBar: Fix typos in set_revealed() documentation
Fix a parameter type and a link to the corresponding property.
Tweak the wording and whatnot a little while at it.
2017-09-05 20:20:46 +01:00
Patrick Griffis
a55b57caff build: Improve vulkan resource handling
This fixes the proper dependencies getting set up for generating
the shaders and only the necessary things getting rebuilt on
resources changing in gsk.
2017-09-05 15:18:56 -04:00
Mario Blättermann
f0f394bfdd Update German translation 2017-09-05 17:56:32 +00:00
Mario Blättermann
bb8f2784d7 Update German translation 2017-09-05 17:52:35 +00:00
Balázs Úr
992aeb76ca Update Hungarian translation 2017-09-05 15:16:16 +00:00
Balázs Úr
bf029e2d7a Update Hungarian translation 2017-09-05 15:14:28 +00:00
Marek Cernocky
8b87137d2f Updated Czech translation 2017-09-05 16:38:18 +02:00
Jakub Steiner
90ba317d92 adwaita: use generic sidebar icon style
https://bugzilla.gnome.org/show_bug.cgi?id=786613
2017-09-05 13:53:46 +02:00
Daniel Mustieles
54a03cb3d9 Update Spanish translation 2017-09-05 10:35:00 +00:00
Daniel Mustieles
bb5ef90827 Update Spanish translation 2017-09-05 10:33:59 +00:00
Jean-Baptiste Holcroft
4e7aa84b9b Update French translation 2017-09-05 08:31:53 +00:00
Timm Bäder
2a373b8ac8 build: Depend on wayland-protocols 1.9
Needed for the keyboard shortcuts inhibit protocol
2017-09-05 10:09:24 +02:00
Matthias Clasen
4800a248bd Typo fix 2017-09-04 23:32:31 -04:00
Matthias Clasen
7bb5b8df0b A somewhat working blur shader
This is a very direct implementation of a Gaussian blur,
without any optimizations.
2017-09-04 23:32:31 -04:00
Andika Triwidada
bb2a4a4e9b Update Indonesian translation 2017-09-05 01:12:51 +00:00
Andika Triwidada
a8d2ef28a5 Update Indonesian translation 2017-09-05 01:09:35 +00:00
Daniel Boles
9699a954cd HighContrast: Stop hovered emoji from disappearing
Otherwise emoji are invisible in the normal variant & nearly in Inverse.

https://bugzilla.gnome.org/show_bug.cgi?id=787279
2017-09-05 01:42:56 +01:00
Daniel Boles
edad5e5c09 Adwaita: Fix a selector not regenerated in the CSS 2017-09-05 01:42:13 +01:00
Daniel Boles
23ea09aa48 HighContrast: Kill abominable headerbar vseparator
Commit 8cd37ff0df fixed a syntax error and
unwittingly released this bizarre mutant.
2017-09-05 01:00:53 +01:00
Daniel Boles
b97f1900b7 EmojiChooser: Ensure always have a selected button
We were only selecting a section’s button if the adjustment y coord was
within its heading, so scrolling slightly into it unchecked all buttons.
This also fixes how we could end up with the first 2 selected, somehow.

https://bugzilla.gnome.org/show_bug.cgi?id=787172
2017-09-04 22:58:24 +01:00
Daniel Boles
002a1d9c1c EmojiChooser: Check the 1st button before 1st show
We scroll to the top in show() but only ever selected a button when the
adjustment changed, which doesn’t happen in init(). Check it manually.

https://bugzilla.gnome.org/show_bug.cgi?id=787172
2017-09-04 22:58:24 +01:00
Piotr Drąg
fcae5e942f Update Polish translation 2017-09-04 23:53:19 +02:00
Rafael Fontenelle
40001d27a1 Update Brazilian Portuguese translation 2017-09-04 19:54:43 +00:00
Rafael Fontenelle
adc590721a Update Brazilian Portuguese translation 2017-09-04 19:52:31 +00:00
Matthias Clasen
86c60592fb css: Implement the blur filter
This implementation is somewhat incomplete, since
we don't allow combining blur with the other filters
yet.
2017-09-04 14:28:16 -04:00
Matthias Clasen
5f6fdc4dd8 Render the main overlay child only once
Use a separate snapshot to capture the main child render node
and reuse it multiple times, instead of generating multiple
nodes for the same content.
2017-09-04 14:28:16 -04:00
Matthias Clasen
93c67eaf6d Add a test for overlay blur 2017-09-04 14:28:16 -04:00
Matthias Clasen
31349e71d3 Add a blur child property to GtkOverlay
When set, it blurs the content behind the child.
2017-09-04 14:28:16 -04:00
Matthias Clasen
d6be42203b Add gtk_snapshot_push_blur()
This function is similar to the other push functions.
This one uses the newly created blur node.
2017-09-04 14:28:16 -04:00
Matthias Clasen
e2869853dc gsk: Add a blur node
For now, this has just a fallback implementation using
the typical box filter approximation.
2017-09-04 14:28:16 -04:00
Baurzhan Muftakhidinov
516442a889 Update Kazakh translation 2017-09-04 15:51:35 +00:00
Julius Härtl
a1635b6188 gtkplacessidebar: implement libcloudproviders support
Add integration of the libcloudproviders DBus API to the
GtkPlacesSidebar by showing name and sync status of the cloud providers.
The exported menu is rendered as a GtkPopover.

The sidebar will be updated if the list of cloudproviders changes e.g.
by adding or removing an account. If any cloud provider changes detailed
information like sync status only the individual sidebar row gets
updated.

Co-authored-by: Carlos Soriano <csoriano@gnome.org>
Co-authored-by: Daniel Boles <dboles@src.gnome.org>

https://bugzilla.gnome.org/show_bug.cgi?id=786123
2017-09-04 11:32:03 -04:00
Daniel Boles
9514ef0d03 HighContrast: basic port of emoji CSS from Adwaita
This is better than nothing: without specific CSS, the Chooser was too
large, the emoji were too small, and the buttons were generally ugly.

https://bugzilla.gnome.org/show_bug.cgi?id=786956
2017-09-04 11:03:35 -04:00
Daniel Boles
99b314084b Adwaita: proper colours for inactive emoji buttons
Use opacity to differentiate unselected/hovered/selected buttons. It had
assumed bg < border < fg colours, which may be false, as in Adwaita:dark

This also means we do not need to special-case for the backdrop state.

https://bugzilla.gnome.org/show_bug.cgi?id=786956
2017-09-04 11:03:16 -04:00
Daniel Boles
8a8a643b03 Adwaita: Make use of SASS syntax for emoji stuff
This makes the theme easier to maintain.

https://bugzilla.gnome.org/show_bug.cgi?id=786956
2017-09-04 11:03:02 -04:00
Milo Casagrande
d20998db0b Update Italian translation 2017-09-04 11:44:57 +00:00
Matthias Clasen
86c0c243a0 Add rules to regenerate all shader variants
We were missing rules to build the clip variants of
the shaders.
2017-09-03 19:58:41 -04:00
Matthias Clasen
d281cd7498 Fix a compiler warning 2017-09-03 19:53:29 -04:00
Matthias Clasen
59b1206468 Avoid empty nodes another way
Make gsk_text_node_new return NULL if the extents are empty.
2017-09-03 19:35:02 -04:00
Aurimas Černius
ccc587cca7 Updated Lithuanian translation 2017-09-03 23:36:03 +03:00
Rūdolfs Mazurs
0fbd16bac5 Update Latvian translation 2017-09-03 19:26:58 +03:00
Jordi Mas
d3d10fa917 Update Catalan translation 2017-09-03 18:06:43 +02:00
Matthias Clasen
7bb202e4a2 Add a workaround for vulkan crashes
I see 'out of memory' errors and crashes inside libvulkan when
creating nodes that have empty bounds and end up in the fallback
paths, like a shadow around an empty text node. Prevent this
by not creating text nodes in that case.
2017-09-03 11:57:21 -04:00
Matthias Clasen
2101f26b49 vulkan: Add more debug spew 2017-09-03 11:34:41 -04:00
Matthias Clasen
a05895e029 Record node names for debug output
This is useful for GSK_NOTE output as well.
2017-09-03 11:32:09 -04:00
Matthias Clasen
8db13c3362 gsk: Improve debug output
If we don't have node names, we can still print class names.
2017-09-03 10:32:55 -04:00
Matthias Clasen
eab50246e1 Only record node names when we should
This is the same thing we do for render nodes elsewhere.
2017-09-03 10:30:32 -04:00
Daniel Boles
68631d6dbd Adwaita: Fix ineffective theming of switch slider
in a specific case, which was applying .slider as a class on the parent
switch, instead of correctly selecting on its child node named slider.

This makes the border on the outside of a switch in a selected listbox
row look better in the light variant. Since the code was never removed,
it was clearly meant to work, and making it work is a clear improvement.
2017-09-03 14:02:23 +01:00
Daniel Boles
8cd37ff0df HighContrast: Fix outdated name for headerbar box 2017-09-03 13:36:43 +01:00
Daniel Boles
b5afe75700 docs: css-overview: Don’t recommend broken syntax
Using this produced warnings about the Pango syntax of <Family> <size>
being deprecated, and the size being invalid due to no unit specified.
Also, that multi-word font family presumably wouldn’t work as expected.
2017-09-03 12:26:07 +01:00
Daniel Boles
48055f99e7 Toolbar: Clarify set_show_arrow() a bit more 2017-09-03 11:04:59 +01:00
Daniel Boles
1b38944203 Toolbar: Clarify how the arrow overflow menu works
The fact it affects the preferred size, and only works with ToolItems
that return a menu proxy item, was unclear unless deduced from other
sources, and this led to users thinking it was broken, for example:

https://stackoverflow.com/q/44644642/2757035

https://bugzilla.gnome.org/show_bug.cgi?id=787158
https://bugzilla.gnome.org/show_bug.cgi?id=787195
2017-09-03 10:59:34 +01:00
Daniel Boles
5095ca6ed7 ToolItem: Add see-also from proxy setter to signal 2017-09-03 10:59:34 +01:00
Daniel Boles
7ed0d9344e ToolItem: Annotate menu proxy item as nullable
It can be NULL. ::create-menu-proxy gave an example of when a NULL proxy
menu item could be useful, but the accessors did not annotate it as such.
2017-09-03 10:59:33 +01:00
Timm Bäder
7481affb82 container: Drop priv pointer 2017-09-03 09:17:35 +02:00
Timm Bäder
98281bc60a testcenterbox: Properly quit on window close 2017-09-03 09:17:35 +02:00
Rafael Fontenelle
1346520e4b Update Brazilian Portuguese translation 2017-09-02 22:48:48 +00:00
Daniel Boles
9019b0887f Revert "sk.po: Consistently translate “Insert”"
This reverts commit 98e3018455.

As an English-speaker, I know nothing about complex grammar, and it’s
been brought to my attention that some languages might differ in the
translation of the same command depending on where it appears.

So, I’d better assume everyone else knows better than me. Apologies!
2017-09-02 16:13:30 +01:00
Matthias Clasen
440e534053 gsk: add a has_color boolean to text nodes
Currently, this information is not used since cairo_show_glyphs
deals with color glyphs for us. But when we get to uploading
glyphs to a texture atlas, we will need it to do the right thing.

We don't look at individual glyphs here, but just whether the
font has the has-color flag set. In practice, all glyphs in
such a font will be color glyphs, and we can avoid loading all
the glyphs this way.
2017-09-02 11:09:03 -04:00
Daniel Boles
18adda6eb0 Adwaita: Fix colour mixing of emoji section button
when hovered, by using %, since SASS does not handle decimal mixes.
2017-09-02 16:02:59 +01:00
Daniel Boles
98e3018455 sk.po: Consistently translate “Insert”
The two occurrences disagreed on the translation, and my amateur
investigation indicates this one is correct.
2017-09-02 16:02:52 +01:00
Daniel Boles
26954f9ef6 gl.po: Consistently translate/capitalise “Emoji”
GTK+ 3 and 4 disagreed on capitalisation and the translation of “Emoji”.
Use sentence case as elsewhere & the most common translation: emoticono.
2017-09-02 16:02:22 +01:00
Matthias Clasen
d27c552630 emoji chooser: No emoji in the search entry
Recursion is fun, but better avoided in the ui.

https://bugzilla.gnome.org/show_bug.cgi?id=786960
2017-09-02 08:47:17 -04:00
Matthias Clasen
3694104f67 entry: Consider input hints for Emoji support
Don't show "insert emoji" in the context menu if input
hints indicate that Emoji input is not useful.
2017-09-02 08:47:17 -04:00
Matthias Clasen
774499e10e Add input hints for Emoji input
Allow hinting input methods about whether Emoji support is
useful or not.
2017-09-02 08:47:17 -04:00
Emmanuele Bassi
3a0eab776e build: Add option to enable/disable GIR generation
And drop the unnecessary is_cross_build() check: it's entirely possible
to generate introspection data when cross-compiling.
2017-09-02 12:00:57 +01:00
Fran Dieguez
1e92faff76 Update Galician translation 2017-09-02 10:09:49 +00:00
Dušan Kazik
66714bfc89 Update Slovak translation 2017-09-02 08:00:42 +00:00
Dušan Kazik
969527cdb0 Update Slovak translation 2017-09-02 07:55:10 +00:00
Andika Triwidada
69afc4773b Update Indonesian translation 2017-09-02 00:59:58 +00:00
Matthias Clasen
f414e1b15f emoji chooser: Avoid a crash
The emoji chooser gets disposed already, because it is attached
to the toplevel as a popover. Doing it again when the object data
is cleared is leading to a crash.

https://bugzilla.gnome.org/show_bug.cgi?id=787103
2017-09-01 19:55:21 -04:00
Piotr Drąg
7e1f3344f7 Update Polish translation 2017-09-02 01:53:37 +02:00
Mohammed Sadiq
18adee6e1b emoji-chooser: fix subsequent scroll
Event handlers on scroll window should only be run once the widget
is shown.

https://bugzilla.gnome.org/show_bug.cgi?id=786964
2017-09-01 19:36:59 -04:00
gogo
5fcaec75ea Update Croatian translation 2017-09-01 22:04:54 +00:00
gogo
3469d088d8 Update Croatian translation 2017-09-01 21:52:46 +00:00
Daniel Boles
7a3548e10c Entry: Set tooltip text on icon for emoji chooser
https://bugzilla.gnome.org/show_bug.cgi?id=786885
2017-09-01 17:28:31 -04:00
Matthias Clasen
7da4d8af2f Use gsk for text shadows
We don't need to render these manually using cairo anymore.
2017-09-01 15:34:13 -04:00
Matthias Clasen
6bdebd1570 label: Don't leak clip regions
This was introduced in the conversion to gsk.
2017-09-01 15:34:13 -04:00
Daniel Boles
e6bbc10bd5 ComboBox: Dodge possible surplus disconnects
in case anyone connected any other signal on the model to this ComboBox.
2017-09-01 20:20:17 +01:00
Matthias Clasen
8de8525b44 entry: Convert to gsk
This introduces a new css node for block cursor styling.
2017-09-01 14:42:29 -04:00
Matthias Clasen
1440bb25de Fix text colors
This was lost in some reshuffling of the gskpango branch.
2017-09-01 14:12:20 -04:00
Matthias Clasen
f199f7b87b Fix the build 2017-09-01 13:42:43 -04:00
Matthias Clasen
a367d34949 Use a text render node in GskPangoRenderer
This pushes the rendering closer to the place where we can
insert a texture atlas for glyph caching.
2017-09-01 13:30:03 -04:00
Matthias Clasen
4975aa7920 Add a render node for text
This is just a wrapper around a PangoGlyphString + PangoFont.
Basically, the arguments that are passed to pango_renderer_draw_glyphs.
2017-09-01 13:30:03 -04:00
Matthias Clasen
82538f935b Use GskPangoRenderer to render text
This just replaces the wrapper call.
2017-09-01 13:30:03 -04:00
Matthias Clasen
82e8f3a542 Add a Pango renderer
Copy the PangoCairoRenderer into GTK+, rename it to GskPangoRenderer,
and strip it down far enough to build without private pango apis.
This means we currently don't support hexboxes or shapes.

Currently, this lives in gtk, but it might be nicer to put it
in gsk eventually.
2017-09-01 13:30:03 -04:00
Timm Bäder
3fc1cafec0 centerbox: Unparent widgets in dispose 2017-09-01 19:05:30 +02:00
Timm Bäder
2cd9f43d2f menuitem: Fix small memory leak in get_label
g_object_get returs a newly allocated string so we can't use it here.
2017-09-01 19:05:30 +02:00
Matthias Clasen
745a9426b0 Remove an unused variable 2017-09-01 12:56:22 -04:00
Matthias Clasen
10ddd3112a label: Port active link drawing to gsk
We don't need to fall back to cairo fro this anymore.
2017-09-01 12:29:11 -04:00
Piotr Drąg
80c0bf21ce Update POTFILES.in and POTFILES.skip 2017-09-01 18:22:44 +02:00
Matthias Clasen
75115b122b inspector: Add some tooltips
These buttons are not 100% obvious.
2017-09-01 12:04:40 -04:00
Matthias Clasen
c17f76cd54 inspector: Remove debug nodes setting from visual tab
No need to have the same setting in two places.
2017-09-01 12:04:33 -04:00
Matthias Clasen
04f1e19e00 inspector: Move debug nodes option
Put this option on the recorder page where it makes more sense.
2017-09-01 12:04:27 -04:00
Matthias Clasen
47f717d4ae label: Port selection drawing to gsk
We don't need to fall back to cairo for this anymore.
2017-09-01 12:04:20 -04:00
Daniel Boles
021e0d5e3d ScrolledWindow: Dodge possible surplus disconnects
In case the outgoing Adjustment for whatever reason has other handlers
referring to this SW, be sure to avoid disconnecting any but our own.
2017-09-01 16:28:57 +01:00
Daniel Boles
9a6adcbce4 ComboBox: Remove pointless signal ID member fields
We don’t need to store these for disconnection, as we can just use
g_signal_handlers_disconnect_by_data().
2017-09-01 16:28:56 +01:00
Dušan Kazik
a28bf09145 Update Slovak translation 2017-09-01 14:21:15 +00:00
Daniel Boles
ceb09e4c8d ScrolledWindow: Fix non-disconnection of handlers
• Use disconnect_by_data() to catch both _adjustment_changed() and now
  _adjustment_value_changed(), as the latter had been missed until now.

• Also disconnect from indicator_value_changed(), which was not done in
  destroy() due to indicator_reset() and remove_indicator() disagreeing.

https://bugzilla.gnome.org/show_bug.cgi?id=775074
2017-08-31 23:18:46 +01:00
Daniel Boles
6984d0847b Window: Do not connect to NULL screen in init()
Do not connect to get_settings_for_screen() if we have no screen…

Use g_signal_connect(), not connect_object(), to match how set_screen()
makes this same connection, and how finalize() already disconnects it.

https://bugzilla.gnome.org/show_bug.cgi?id=705640
2017-08-31 20:26:44 +01:00
Daniel Boles
6609173779 FileChooserWidget: Remove an unused #include 2017-08-31 19:59:25 +01:00
Daniel Boles
97b5f3d029 gskenums: Fix typo/grammar in GskRenderNodeType doc 2017-08-31 19:59:25 +01:00
Matthias Clasen
767bf1b3fd Avoid computing the same thing twice
Trivial cleanup.
2017-08-30 23:30:10 -04:00
Daniel Boles
552998868d Entry: Rename int helper to gtk_entry_clear_icon()
It was called gtk_entry_clear(), which was unnecessarily vague.
2017-08-30 21:16:00 +01:00
Gábor Kelemen
7c4a0f5ee3 Update Hungarian translation 2017-08-30 18:18:25 +00:00
Gábor Kelemen
1f3fce4159 Update Hungarian translation 2017-08-30 18:18:10 +00:00
Daniel Boles
6e414d42d7 Entry: Fix Shift-click → extend/truncate selection
Since the move from button-press to gesture events, Shift-clicking did
not work to start a selection (from none) or truncate an existing one.

This was due to the code being copy-pasted around and some logic being
broken in the process. This makes both of those work as they should, by
shuffling it again so the end result is the same as before. Highlights:

(1) ::button-press if extending due to a single press would call
set_positions(tmp_pos, tmp_pos), which is what made the Shift+click to
create a selection work. That was lost. Add it back to make that work.

(2) ::button-press in the “Truncate current selection” branch would not
execute all the stuff around “extend_to_left”, as that was the else
case. So, set extend_selection = FALSE so we skip over that later on.

(3) BUT! This Truncate case never fired because it was in the else
branch of if (in_selection())! Of course, it must be in the true branch.

(4) The IM context was not reset if the Shift-click occurred within an
existing selection, only if it did not. In ::button-press this was the
first thing done if extending a selection, regardless. Make it so again.

https://bugzilla.gnome.org/show_bug.cgi?id=780750
2017-08-30 18:26:04 +01:00
Daniel Boles
d715346d5d gl.po: Remove mnemonic underlines from tooltips
It looks like these were copy-paste errors from the corresponding labels
for buttons, which should have mnemonics. Of course, tooltips cannot.
2017-08-30 14:24:04 +01:00
Matthias Clasen
d2087f1943 Avoid empty space in the emoji chooser
We need to hide the empty flow boxes as well, to avoid
spacing between them.

https://bugzilla.gnome.org/show_bug.cgi?id=786966
2017-08-30 08:36:56 -04:00
Fabio Tomat
48fd9290be Update Friulian translation 2017-08-30 08:31:59 +00:00
Nelson Benítez León
c3c10edd09 textview: fix bug on DnD displaced limits of selection
The fix of commit f2fd655754
should be confined to DnD coords only, because otherwise
it causes the start and end of the selection to be displaced.

https://bugzilla.gnome.org/show_bug.cgi?id=785736
2017-08-29 19:26:07 +01:00
Debarshi Ray
fd9aec27fc GtkBuilder: Prefer "type-func" over "class" when looking for the GType
https://bugzilla.gnome.org/show_bug.cgi?id=786932
2017-08-29 15:41:01 +02:00
Милош Поповић
3fd77d1a70 Update Serbian Latin translation 2017-08-29 11:36:58 +00:00
Марко Костић
5a1a91fbe1 Update Serbian translation 2017-08-29 11:33:09 +00:00
Timm Bäder
c18d2872f2 GskRenderNode: Fix fallback border drawing 2017-08-29 11:48:42 +02:00
Rūdolfs Mazurs
27e1260104 Update Latvian translation 2017-08-29 12:19:09 +03:00
Emin Tufan Çetin
243262a64e Update Turkish translation 2017-08-29 05:39:03 +00:00
Daniel Boles
87c67e6ed3 LevelBar: Really fix underallocation of blocks
Themes should not enforce min sizes on blocks in continuous mode; in
this case, the filled block should be as large as it needs to be to
reflect the current value, and no larger or smaller than that. So, the
fact that the minimal size was selected on just levelbar block is wrong:
we should also require the levelbar.discrete class to apply min sizes.

The widget should enforce whatever correct minimum size results from the
above fix, by reapplying commit 78b4885fe8

Except: we should not allocate/draw the filled block if the value is 0,
as in this case, the LevelBar should be empty, not have a min-size fill.

This partially reverts commit 96062ffeae,
as it makes sense to set min sizes for discrete blocks, so keep that in.

https://bugzilla.gnome.org/show_bug.cgi?id=783649
2017-08-29 00:34:02 +01:00
Javier Jardón
bc3968d2ff gtk/gtkshow: Remove deprected gtk_show_uri() 2017-08-28 23:47:36 +01:00
Javier Jardón
d3954f614c Use gtk_show_uri_on_window() instead gtk_show_uri() 2017-08-28 23:47:36 +01:00
Daniel Boles
896f7c8ac0 Entry: Handle :show-emoji-icon becoming false
Disconnect the now-unwanted signal handler, and hide the icon.

https://bugzilla.gnome.org/show_bug.cgi?id=786940
2017-08-28 20:52:06 +01:00
Daniel Boles
cb219473ee Entry: Drop redundant typecasts
https://bugzilla.gnome.org/show_bug.cgi?id=786940
2017-08-28 20:52:06 +01:00
Daniel Boles
477fc95655 Entry: Only open emoji picker on 2ndary icon click
We hijack the secondary icon for the emoji picker, but the handler for
::icon-press did not check the pressed icon and opened it for either.

https://bugzilla.gnome.org/show_bug.cgi?id=786938
2017-08-28 20:52:01 +01:00
Ask Hjorth Larsen
69e0c7a8c3 Updated Danish translation 2017-08-28 19:27:30 +02:00
Ask Hjorth Larsen
25020018ac Updated Danish translation 2017-08-28 19:25:52 +02:00
Matej Urbančič
380a10eaa3 Updated Slovenian translation 2017-08-28 19:24:58 +02:00
Matej Urbančič
4692bea659 Updated Slovenian translation 2017-08-28 19:19:53 +02:00
Timm Bäder
9a43881a19 gskrendernode: Fix inset shadow drawing 2017-08-28 17:50:34 +02:00
Timm Bäder
4045794801 gskrendernode: Constify some parameters 2017-08-28 17:50:34 +02:00
Timm Bäder
a08f8937c6 Revert "headerbar: Avoid allocating 0 visible children"
This reverts commit 8c0e5adaab.

This is actually needed since GtkHeaderBar will allocate and snapshot
widget that coun_visible_children does not consider.
2017-08-28 17:50:34 +02:00
Fabio Tomat
6589532245 Update Friulian translation 2017-08-28 14:40:24 +00:00
Timm Bäder
ccfc568a03 range: Fix trough state update 2017-08-28 11:17:47 +02:00
Timm Bäder
619ee3797d popover: Initialize some locals
gtk_popover_get_pointing_to does not fill the given rect in every case.
2017-08-28 11:17:47 +02:00
Timm Bäder
8c0e5adaab headerbar: Avoid allocating 0 visible children
Ths avoids doing a bunch of work as well as passing 0 to g_alloca which
is undefined.
2017-08-28 11:17:47 +02:00
Changwoo Ryu
08393a6477 Update Korean translation 2017-08-27 21:47:55 +00:00
Changwoo Ryu
a3ff71d893 Update Korean translation 2017-08-27 21:47:41 +00:00
Çağatay Yiğit Şahin
0860e739ba Update Turkish translation 2017-08-27 20:59:40 +00:00
Matthias Clasen
dec77c3a7a meson: Make sure ENABLE_NLS is actually defined
Despite the comment, we ended up without ENABLE_NLS.
2017-08-27 16:09:05 -04:00
Matthias Clasen
95ae7b7c1e x11: Fix managed dnd
We need to actually trigger the drop from the gdk side.
2017-08-27 08:55:16 -04:00
Matthias Clasen
a683629dc7 Remove an unused field
Drag contexts are objects, so there is no need to carry a
manual refcount around.
2017-08-26 19:54:39 -04:00
Matthias Clasen
5722f25d51 x11: Fix initial drag cursors
Under X, we were not setting the right drag cursor initially,
because at current_action == action == 0, initially. Fix this
by explicitly using the right cursor when grabbing.
2017-08-26 19:54:29 -04:00
Matthias Clasen
41f26ea7a6 wayland: Stop using subsurfaces for popovers
Subsurfaces don't currently work with our new rendering,
and this makes popovers unusable. We can go back to using
subsurfaces for popovers when this is fixed.
2017-08-26 15:34:46 -04:00
Timm Bäder
e26b60d48c container: Remove leftover prototype
Thanks to Murray Cumming.
2017-08-25 14:53:09 +02:00
Fabio Tomat
6bae8aa0cf Update Friulian translation 2017-08-25 11:44:35 +00:00
Jordi Mas
3cc7accc15 Fix Catalan translation 2017-08-25 13:37:17 +02:00
Fabio Tomat
752b42fa47 Update Friulian translation 2017-08-25 03:17:56 +00:00
Daniel Boles
73c689eb5a ComboBox: Clarify documentation of get_active_iter
https://bugzilla.gnome.org/show_bug.cgi?id=618160
2017-08-24 21:32:05 +01:00
Daniel Boles
12693c6fe3 Popover: Include window shadows in overshoot calcs
.update_position() enforces that non-Wayland platforms must position a
Popover within its parent Window. We use the allocation of the Window
to translate the position and check for overshoot on each of its sides.
Calling Widget.get_allocation() of a CSD Window includes its shadows.

But shadows were not excluded from the area in which we can position.
Thus, Popovers could get positioned in the shadow of CSD windows, where,
at least on X11, no input is received. Therefore, positioning a Popover
over a shadow meant its child widgets within that area became unusable.

Fix by calling Window.get_shadow() and including it in the overshoot on
each side. This adjusts for how the allocation includes shadows, making
overshoots with and without shadows the same. Thus, we avoid considering
shadows as viable for positioning, favouring a side where input works.

https://bugzilla.gnome.org/show_bug.cgi?id=786209
2017-08-24 21:32:05 +01:00
Daniel Boles
1e832b2e16 testpopover: Use HeaderBar to get CSD decorations
This helps test whether the Popover positioning gets messed up by the
presence of CSD shadow or other accessories around the content area.

https://bugzilla.gnome.org/show_bug.cgi?id=786209
2017-08-24 21:32:05 +01:00
Cheng-Chia Tseng
2c9144b5fe Update Chinese (Taiwan) translation 2017-08-24 16:40:29 +00:00
Piotr Drąg
1ace6518d0 Update POTFILES.in and POTFILES.skip 2017-08-24 02:45:09 +02:00
Matthias Clasen
17b75f2252 Remove motif dnd leftovers
We don't support Motif DND anymore, so no need to look for
Motif-specific messages.
2017-08-23 19:42:53 -04:00
Daniel Boles
da76699757 SidebarRow: Add Unmount tooltip to eject_button
It was reported that the lack of a tooltip made its purpose unclear.
This can be solved by just copying PlacesViewRow’s eject_button tooltip.

https://bugzilla.gnome.org/show_bug.cgi?id=766909
2017-08-23 21:41:50 +01:00
Carlos Garnacho
5fdcfa4739 fontchooser: Block row deleted signal handler when reloading model
This prevents the load_fonts() function from switching to the "no fonts"
page and back when the model is reloaded. Given
GtkSettings::gtk-fontconfig-timestamp is 0 on Wayland and style changes
happen often, the stack change messes up popovers and pointer focus
on the fonts treeview and test entry.
2017-08-23 20:41:18 +02:00
Tom Schoonjans
84bcf7d4d3 GtkFileChooserNativeQuartz: restore parent focus after closing dialog
Tested for both modal and non-modal dialogs

https://bugzilla.gnome.org/show_bug.cgi?id=785306
2017-08-23 10:45:50 -04:00
Tom Schoonjans
bc2f125f1c GtkFileChooserNativeQuartz: improve support for file filters
Instead of using conditional compilation, use respondsToSelector to
check at runtime for setAccessoryViewDisclosed.

https://bugzilla.gnome.org/show_bug.cgi?id=785306
2017-08-23 10:45:49 -04:00
Tom Schoonjans
798ea02440 GtkFileChooserNativeQuartz: add support for Mountain Lion and Mavericks
https://bugzilla.gnome.org/show_bug.cgi?id=784723 introduced support for
native file chooser dialogs on macOS, but due to the use of generics in
the patch, there will be compilation errors on pre-Xcode 7 platforms,
such as Mountain Lion and Mavericks.

I strongly recommend to revert this patch when the oldest supported
macOS release is bumped to Yosemite (10.10).

https://bugzilla.gnome.org/show_bug.cgi?id=785306
2017-08-23 10:45:49 -04:00
Matthias Clasen
44e1c19b42 Revert "wayland: fix filechooser crash"
This reverts commit bd033165e5.

The function already had an early exit, no need for this check.
2017-08-23 10:40:12 -04:00
Lionel Landwerlin
bd033165e5 wayland: fix filechooser crash
The opaque region of the window can be updated before we're requested
its creation on the compositor.

https://bugzilla.gnome.org/show_bug.cgi?id=786673
2017-08-23 10:36:30 -04:00
Matthias Clasen
4402335333 wayland: fix filechooser crash
The size of the window can be updated before we're requested its
creation on the compositor.

https://bugzilla.gnome.org/show_bug.cgi?id=786673
2017-08-23 10:36:30 -04:00
Timm Bäder
53ad763042 magnifier: Port to snapshot
Instead of gtk_widget_draw'in the inspected widget inside the
magnifier's ::draw handler, just create a new GtkSnapshot and snapshot
in its snapshot handler, similar to what GtkStack is doing.
2017-08-23 16:33:49 +02:00
Fabio Tomat
81f3dc0493 Update Friulian translation 2017-08-23 13:50:20 +00:00
Timm Bäder
a23ea01c8f widget: Fix UPDATES debug rendering
Choose the right widget to add the debug updates to (the one with the
window) and the correct region (the one in that window's coordinates).
2017-08-23 13:58:21 +02:00
Timm Bäder
86c294b952 testgtk: Remove some invalid css 2017-08-23 11:05:37 +02:00
Timm Bäder
8e0ed691e3 widget: Remove unused draw_internal prototype
gtk_widget_draw_internal is now only used inside gtkwidget.c, so remove
the prototype from gtkwidgetprivate.h. And since all incovacations call
it with clip_to_size=TRUE, remove that parameter.
2017-08-23 11:05:36 +02:00
Milo Casagrande
82f20efc2c Update Italian translation 2017-08-23 07:18:25 +00:00
Milo Casagrande
41ac29c4f4 Update Italian translation 2017-08-23 07:14:01 +00:00
Aurimas Černius
800d49f02d Updated Lithuanian translation 2017-08-22 23:06:07 +03:00
Daniel Boles
5f593ff306 getting_started: Sync filenames & section headings
The order of Examples 3 and 4 was swapped, so the headings updated
themselves, but the filenames were left reflecting the old order.

https://bugzilla.gnome.org/show_bug.cgi?id=786553
2017-08-22 14:15:46 +01:00
Matthias Clasen
7937da632a Handle emoji data change in emoji chooser
Update the settings schema to follow the change in Emoji data,
and make the emoji chooser code handle the new format.
2017-08-22 08:13:52 -04:00
Matthias Clasen
ac1b8f66b1 Add shortnames to emoji data
The json file is from

https://github.com/emojione/emojione/tree/master/extras/alpha-codes

It is under the MIT license.
2017-08-22 08:13:45 -04:00
Matthias Clasen
2f909cc474 Don't consume too many key releases
The Emoji input support in GtkIMContextSimple was
unintentionally consuming too many key release
events. Fix this.

https://bugzilla.gnome.org/show_bug.cgi?id=786594
2017-08-22 06:49:35 -04:00
Emmanuele Bassi
e3f99fa2df build: Use the appropriate symbol visibility annotation
We cargo-culted this from Autotools, but GCC on Windows supports the
same __declspec syntax as MSVC. The only difference is the additional
flag needed for GCC-like compilers.
2017-08-22 10:27:14 +01:00
Emmanuele Bassi
7845854ca2 build: Fix macOS linker compatibility flags
The linker on macOS does not support '=' in its command line; there's no
guarantee that we are using the correct compatibility versions compared
to the Autotools build, but for that we'll need to build GTK+ master on
macOS.
2017-08-22 10:24:45 +01:00
Emmanuele Bassi
55c42b9d25 build: Allow using libepoxy as a subproject
Like we do for Graphene, we can build libepoxy as a sub-project of GTK+
in case we do not find the dependency installed on the system.
2017-08-22 10:22:37 +01:00
Daniel Mustieles
3168bbe55b Update Spanish translation 2017-08-21 11:36:06 +00:00
Timm Bäder
f879750759 container: Fix scrolling adjustment coordinates 2017-08-21 12:30:47 +02:00
Timm Bäder
b24535ea75 container: Remove gtk_container_propagate_draw
It's superseded by gtk_widget_snapshot_child now.
2017-08-21 12:30:42 +02:00
Timm Bäder
afa9b5032c textview: Draw children using gtk_widget_snapshot_child 2017-08-21 12:27:10 +02:00
Pawan Chitrakar
8da4842369 Update Nepali translation 2017-08-20 23:49:13 +00:00
Pawan Chitrakar
9425ba8705 Update Nepali translation 2017-08-20 23:42:21 +00:00
Anish Sheela
416facb91f Update Malayalam translation 2017-08-20 21:00:03 +00:00
Mario Blättermann
44acdbc13b Update German translation 2017-08-20 18:03:19 +00:00
Baurzhan Muftakhidinov
50e91478f0 Update Kazakh translation 2017-08-20 16:06:09 +00:00
Alexandre Franke
4ba27a50e5 Update French translation 2017-08-19 14:48:49 +00:00
Alexandre Franke
1bc6ae5c32 Update French translation 2017-08-19 14:46:50 +00:00
Мирослав Николић
a863d18a00 Updated Serbian translation 2017-08-19 15:45:15 +02:00
Mario Blättermann
714eebeb33 Update German translation 2017-08-19 11:50:58 +00:00
Timm Bäder
3613f96f59 widget: Remove outdated comment about widget coordinates
Not so odd anymore.
2017-08-19 11:43:29 +02:00
Timm Bäder
b2c0afce34 Remove gdk_event_get_user_data from public headers
And add it back in gdk-private.h
2017-08-19 08:53:38 +02:00
Lionel Landwerlin
fddfb60c59 gdk: wayland: always set buffer scale on size update
We're only updating this when we have an EGL window. This means we
have the wrong scaling factor when using Vulkan.

https://bugzilla.gnome.org/show_bug.cgi?id=786492
2017-08-18 19:48:52 -04:00
Lionel Landwerlin
48df19287b gsk: vulkan: fix image uploading
The memory alignment requirements are different from the image layout.
We want the rowPitch to know where to upload the lines.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=786485
2017-08-18 19:41:36 -04:00
gogo
652a99ff9f Update Croatian translation 2017-08-18 20:34:30 +00:00
gogo
864f806c10 Update Croatian translation 2017-08-18 20:31:56 +00:00
Rui Matos
e702ee8fa6 gdkwindow: Avoid re-setting the opaque region if it doesn't change
This avoids, at least, needless chatter with the compositor and the X
server in X11's case.

https://bugzilla.gnome.org/show_bug.cgi?id=786469
2017-08-18 19:01:00 +02:00
Dušan Kazik
e35266a6ae Update Slovak translation 2017-08-18 16:09:11 +00:00
Emmanuele Bassi
08526d4da0 build: Print out a configuration summary
Add some easy to check summary of the configuration step, especially for
optional features that can use automatic discovery.
2017-08-18 16:56:09 +01:00
Marek Cernocky
3d8e550085 Updated Czech translation 2017-08-18 10:57:21 +02:00
Carlos Garnacho
c2e08122d8 gdk/x11: Extract GdkDeviceTool tool ID from "Wacom Serial IDs" property
This property contains 5 integers, of which the last 2 respectively
contain the tool serial number and tool ID. We were only extracting the
first so far, but GdkDeviceTool also has API getters for the latter,
which remained 0.

https://bugzilla.gnome.org/show_bug.cgi?id=786400
2017-08-17 16:31:33 +02:00
Rafael Fontenelle
ee1e2c9dac Update Brazilian Portuguese translation 2017-08-17 10:24:10 +00:00
Rafael Fontenelle
00843b0ee6 Update Brazilian Portuguese translation 2017-08-17 10:19:51 +00:00
Fran Dieguez
a2986a898d Update Galician translation 2017-08-16 22:41:41 +00:00
Timm Bäder
5204802f61 widget: Remove some always-true precondition checks 2017-08-15 21:45:03 +02:00
Daniel Boles
d98a23dc80 GdkDisplay: Call the correct push|pop_error_trap()
It is wrong to assume all Displays are of the same class as the default.

https://bugzilla.gnome.org/show_bug.cgi?id=784016
2017-08-15 20:34:11 +01:00
Daniel Boles
ad5c4d09b3 ScrolledWindow: Bin unreachable ternary branches
We already checked that the child is not NULL above.

Coverity CID 1454191
2017-08-15 20:33:49 +01:00
Timm Bäder
d81fc8edce gtkpango: Remove unused functions
Remove _gtk_pango_move_lines and a few function declarations in the
private header file since they are only used inside gtkpango.c
2017-08-15 21:27:52 +02:00
Timm Bäder
c1082ca93e build: Install gtkcenterbox.h 2017-08-15 21:27:52 +02:00
Daniel Boles
915d8197a0 Widget: Fix outdated comments about tooltips
They are not usually yellow anymore, the previous advice about how to
style them was for pre-3.20 versions, and the immediate replacement (CSS
class .tooltip) does not seem ready for primetime.

https://bugzilla.gnome.org/show_bug.cgi?id=784421
2017-08-15 19:17:57 +01:00
Emmanuele Bassi
3cb8a976a6 build: Ensure introspection data points to the right header
We have different header files for different sections of our API,
including introspection.
2017-08-15 17:13:30 +01:00
Emmanuele Bassi
4904491b77 build: Move Vulkan shader handling to its own directory
Spooky action at a distance is not really allowed in Meson, so the rules
to generate the SPV files should go in their own directory.

Tested by: Rico Tzschichholz <ricotz@ubuntu.com>
2017-08-15 17:07:21 +01:00
Chun-wei Fan
0a85a76419 build: Partially revert "Drop old MSC makefiles"
gtk/libgtk4.manifest.in is used to give the themed print dialog on
Windows, which should not be removed, so we ought to get it back.

https://bugzilla.gnome.org/show_bug.cgi?id=773299
2017-08-15 23:37:24 +08:00
Chun-wei Fan
f7409773b3 gtk/gtkemojichooser.c: Don't use g_autoptr()
We can't use g_autoptr() on non-GCC-style compilers.

https://bugzilla.gnome.org/show_bug.cgi?id=773299
2017-08-15 23:36:53 +08:00
Piotr Drąg
0b59f4e62d make-pot: Make it executable
Oops.
2017-08-15 16:30:14 +02:00
Piotr Drąg
d27453cb94 Restore make-pot script
Until #783099 is fixed.
2017-08-15 16:16:32 +02:00
Emmanuele Bassi
9957dd59b0 docs: Update references to Meson CLI utilities
The separate `mesonconf` and `mesontest` binaries have been deprecated,
in favour of `meson` sub-commands.
2017-08-15 14:08:57 +01:00
Emmanuele Bassi
12b155eae7 broadway: Build fixes
The Broadway backend does not build after commit c409fca7 dropped some
occurrences of the root window from GDK.
2017-08-15 13:59:34 +01:00
Timm Bäder
c468cdf8b6 gdk: Remove another gdk_window_new_input reference
The most obvious one.
2017-08-15 15:00:49 +02:00
Timm Bäder
7685d157bc build: Remove more wrong kwargs
declare_dependency does not take a depends: kwarg and meson 0.42.0
started warning about that.
2017-08-15 14:56:13 +02:00
Timm Bäder
4fbe313cbc build: Remove wrong kwargs from a11y test()s
test() does not take install: or install_dir: kwargs.
2017-08-15 14:56:13 +02:00
Matthias Clasen
8c3fc06baf Remove an erroneous unref
This was leftover by accident.
2017-08-15 06:40:05 -04:00
Мирослав Николић
52cc1c3ea1 Updated Serbian translation 2017-08-15 06:26:02 +02:00
Мирослав Николић
d239ef082f Updated Serbian translation 2017-08-15 06:25:13 +02:00
Daniel Boles
fb66f539ae testpopover: Sync initial vals of controls & props
The ComboBoxes were initially empty, rather than reflecting the initial
values of the properties. The CheckButtons were only correct by chance.
Fix this by setting the initial values on the widgets and binding them
to the properties using SYNC_CREATE, so the two are always synced up.

https://bugzilla.gnome.org/show_bug.cgi?id=786209
2017-08-14 23:15:11 +01:00
Emmanuele Bassi
a4d0800673 build: Fix post-install script
Use the appropriate variable when expanding the input method modules
path.
2017-08-14 22:31:13 +01:00
Marc-Antoine Perennou
49d0b4ccb8 meson: install gdkvulkancontext.h
https://bugzilla.gnome.org/show_bug.cgi?id=782981

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-08-14 22:26:59 +01:00
Marc-Antoine Perennou
c9caa6167e meson: install gdkdrawcontext.h
https://bugzilla.gnome.org/show_bug.cgi?id=782981

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-08-14 22:26:59 +01:00
Marc-Antoine Perennou
807c744c8d gdk: fix headers installation path
https://bugzilla.gnome.org/show_bug.cgi?id=782981

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-08-14 22:26:59 +01:00
Emmanuele Bassi
17b7d6b149 Remove MAINTAINER file
The DOAP file is a better description of the maintainership of the
project.
2017-08-14 22:23:09 +01:00
Emmanuele Bassi
3e558b950d Remove obsolete README for Windows
Using Meson we get Windows support, both via Ninja and Visual Studio.
2017-08-14 22:23:09 +01:00
Emmanuele Bassi
d2af823183 Rename 'HACKING' to 'CONTRIBUTING'
And remove redundant and obsolete information.
2017-08-14 22:23:09 +01:00
Emmanuele Bassi
0803ee2df4 docs: Update the 'building gtk' guide
Clean up for Meson.
2017-08-14 22:23:09 +01:00
Emmanuele Bassi
f82f0c7fbc docs: Update the release instructions 2017-08-14 22:23:09 +01:00
Emmanuele Bassi
98ed797731 docs: Update the README
Let's bring it into this century, and drop outdated information.
2017-08-14 22:23:09 +01:00
Emmanuele Bassi
6240082e12 Drop old MSC makefiles 2017-08-14 22:23:09 +01:00
Emmanuele Bassi
391d1a04ec Drop Autotools build
We are officially switching to Meson as the default build system for
GTK+.
2017-08-14 22:23:09 +01:00
Kukuh Syafaat
562e278bf8 Update Indonesian translation 2017-08-14 20:18:42 +00:00
Kukuh Syafaat
ad510927b7 Update Indonesian translation 2017-08-14 20:17:43 +00:00
Matthias Clasen
fdd5e9f61e Redo emoji data slightly
No longer store variation sequences explicitly. Instead, put a 0
in the sequence where the modifiers will be inserted. This is more
compact, and it allows us to put variations directly into the
recent section.

Update the type of the recent-emoji setting to match these changes.
2017-08-14 15:46:02 -04:00
Timm Bäder
0fe396e516 popover: Remove double assignment 2017-08-14 21:29:18 +02:00
Daniel Mustieles
27f14920a3 Update Spanish translation 2017-08-14 16:06:32 +00:00
Timm Bäder
54c362bf48 gtkwindowprivate: Remove _gtk_window_keys_foreach
Unused outside of gtkwindow.c
2017-08-14 14:24:29 +02:00
Timm Bäder
c309def4f0 winodw: Remove _gtk_window_reposition prototype
It's never implemented.
2017-08-14 14:24:10 +02:00
Timm Bäder
2a49e08d6d meson: Don't define G_ENABLE_CONSISTENCY_CHECKS unconditionally
We add it back later depending on the current buildtype.
2017-08-14 13:01:22 +02:00
Timm Bäder
9f3f640c0d widget: Remove gtk_widget_get_border_allocation 2017-08-14 12:22:39 +02:00
Timm Bäder
5f859a1f24 widget: Remove gtk_widget_get_content_allocation
Replace it where we still need something similar, e.g. in
gtk_widget_translate_coordinates
2017-08-14 12:22:39 +02:00
Timm Bäder
9c7e089fc2 widget: Remove gtk_widget_get_margin_allocation
It's not needed anymore with get_outer_allocation (which will be
replaced by something more appropriately named).
2017-08-14 12:22:39 +02:00
Jordi Mas
c3aacbecdf Update Catalan translation 2017-08-14 00:36:36 +02:00
Fran Dieguez
2755717740 Update Galician translation 2017-08-13 22:19:01 +00:00
Daniel Boles
4a6f5136ba convert-emoji: Don’t pointlessly do rest of loop
skip can never become FALSE again, so break as soon as it becomes TRUE.
2017-08-13 17:39:13 +01:00
Muhammet Kara
f998360600 Update Turkish translation
(cherry picked from commit a6de59845a)
2017-08-13 16:35:12 +00:00
Timm Bäder
1ee32d10ce meson: Add emoji data
Otherwise we crash at runtime.
2017-08-13 18:08:41 +02:00
Timm Bäder
2eaf416062 gsk: Add color shader sources to meson build files 2017-08-13 18:01:58 +02:00
Matthias Clasen
82a24e7cf6 Don't update headings in an idle
It is not necessary since flow box invalidation is
all synchronous currently. If that ever changes,
this code will need adjustment.
2017-08-13 09:27:37 -04:00
Matthias Clasen
b52c1cb8dc scrolled window: Don't leak timeout sources
We must only create a new source if there isn't one already,
otherwise we override the ID and leak the previous one.
2017-08-13 09:24:50 -04:00
Matthias Clasen
98089778df Add names to more sources
This makes debugging mainloop-related issues more pleasant.
2017-08-13 09:03:40 -04:00
Matthias Clasen
5b23fd32f1 emoji: Fix a leak
We were leaking the list of recently used Emoji here.
Pointed out by Timm Bädert.
2017-08-13 07:51:33 -04:00
Matthias Clasen
fd4fa7be29 emoji: Start search on the first character
There is no need to wait for a longer prefix here.
We already display all the content anyway, it will
only get less.
2017-08-13 07:51:33 -04:00
Pawan Chitrakar
50453d44bc Update Nepali translation 2017-08-13 08:30:09 +00:00
Pawan Chitrakar
8585b4a9f5 Update Nepali translation 2017-08-13 08:08:44 +00:00
Piotr Drąg
c77a188a02 Update Polish translation 2017-08-13 01:24:38 +02:00
Piotr Drąg
49671e7498 Update POTFILES.skip 2017-08-13 01:18:31 +02:00
Matthias Clasen
aa1fb13451 Fix the meson build 2017-08-12 19:06:00 -04:00
Matthias Clasen
f54aca20ee widget-factory: Add a use of show-emoji-icon
This also serves as a testcase for nested popovers
that was missing in widget-factory so far.
2017-08-12 18:50:50 -04:00
Matthias Clasen
e24ffbbc21 Add a testcase for the new Emoji chooser
For now, add it in testentryicons.
2017-08-12 18:48:14 -04:00
Matthias Clasen
558aebfbc4 entry: Add support for an Emoji chooser
Add an "Insert Emoji" item to the context menu in entries.
We also add a show-emoji-icon property, which when set to
TRUE, will add an icon that can be clicked to bring up
the Emoji chooser.
2017-08-12 18:48:14 -04:00
Matthias Clasen
46f7804f3a Fix a problem with focus handling in modal popovers
When the popover is dismissed, we return the focus to
where it came from. However, by using gtk_widget_grab_focus,
we were messing up the selection if that widget happens to
be an entry. Special-case GtkEntry and use
gtk_entry_grab_focus_without_selecting to avoid this issue.
2017-08-12 18:48:14 -04:00
Matthias Clasen
c6c1619646 Add an Emoji chooser widget
Add a popover that shows color Emoji, with a search entry.
The recently-used Emoji are stored in a GSetting.
2017-08-12 18:48:14 -04:00
Matthias Clasen
44999fa239 Add Emoji data
The json file is imported from the (MIT-licensed) emoji.json[0] node
module, which generates it from the emoji list published by the
Unicode Consortium.

This commit also adds a little tool to convert the data into
a compact GVariant, and the result of that conversion, which is
added to libgtk as a resource. The following commits will make use
of it.

[0] https://github.com/amio/emoji.json
2017-08-12 18:48:14 -04:00
Daniel Boles
a2768144f1 InfoBar: Fix wrong/uninit var use in code example
https://bugzilla.gnome.org/show_bug.cgi?id=786144
2017-08-12 21:08:24 +01:00
Daniel Boles
854bfb916c Adwaita: Sync CSS files with current SASS 2017-08-12 16:02:18 +01:00
Daniel Boles
c8e2ccd7a1 LevelBar: Don’t pointlessly copy an allocation
now featuring the required comma :/
2017-08-12 15:13:36 +01:00
Timm Bäder
07d6c7817d widget: Remove private _gtk_widget_set_has_focus
The css state here is now handled in gtk_widget_set_focus_child
2017-08-12 15:56:53 +02:00
Matthias Clasen
a5ba6dfe97 Revert "LevelBar: Avoid unnecessarily copying allocation"
This reverts commit d5e25be9bc.

It doesn't build.
2017-08-12 09:46:06 -04:00
Matthias Clasen
124b790a77 Fix a bootstrapping problem without root windows
We create various windows during the initial creation of display
objects, which causes some bootstrapping issues when we try to
find the default screen to get its root window. To work around this,
pass the display object into gdk_window_new.

This is not an API change, since gdk_window_new is no longer public API.
2017-08-12 09:42:19 -04:00
Daniel Boles
d5e25be9bc LevelBar: Avoid unnecessarily copying allocation
Just use the original allocation, instead of copying it and passing that
2017-08-12 14:23:55 +01:00
Matthias Clasen
342fdee0a1 Remove an unused field
Nothing uses bubble_window, so it can go.
2017-08-11 19:53:06 -04:00
Matthias Clasen
535e604b91 Drop the shape window example in testgtk
Not sure this can be rescued without root window coordinates.
It is also somewhat inherently X11-specific.
2017-08-11 15:46:00 -04:00
Matthias Clasen
0eaf861420 Remove root window getters from public API
These are now just used internally in GDK.
2017-08-11 15:45:24 -04:00
Matthias Clasen
916702f7a9 Make the xim module build without root getters
This is X specific code anyway, so no need to use
generic GDK api for this.
2017-08-11 15:45:24 -04:00
Matthias Clasen
127922cf44 Stop passing root window to gdk_device_query_state
The backends do the right thing now.
2017-08-11 15:45:24 -04:00
Matthias Clasen
9859f8f69f Allow passing a NULL window to gdk_device_query_state
Interpret NULL as "root window" here - we only have one
screen nowadays, so there is no choice involved, and this
will let us avoid dealing with the root window in the
fontend code.
2017-08-11 15:45:24 -04:00
Matthias Clasen
c409fca703 Drop root windows from some internal apis
_gdk_device_query_state was needlessly shuffling
root windows around.
2017-08-11 15:45:23 -04:00
Matthias Clasen
8d3dd50948 Drop keynav for dnd
This is very much an easter egg, and it is the last place where
we use the root window in libgtk.
2017-08-11 15:45:23 -04:00
Lapo Calamandrei
96062ffeae adwaita: remove min-<lenght> from levelbar blocks
It's not needed and causes issues, see for details:
https://bugzilla.gnome.org/show_bug.cgi?id=783649
2017-08-11 16:25:40 +02:00
Lapo Calamandrei
30a7264865 adwaita: Remove menu margins
menu margins have been added has a hack to mitigate bug:
https://bugzilla.gnome.org/show_bug.cgi?id=591258 with gtk+4 this
doesn't work anymore on gtk+4, the margin should probably be moved
to the parent window node, but it's not selectable, commenting out
for now.
2017-08-11 15:07:13 +02:00
Piotr Drąg
f3200b3336 Update Polish translation 2017-08-11 00:05:26 +02:00
Timm Bäder
a8a755e5cd widget: Remove gtk_widget_set_redraw_on_alloc
Since gtk+ draws more than the widget and allocates more size to it than
it knows about, this flag doesn't work anymore. Removing it (or setting
it to TRUE for widgets that used to set it to FALSE) fixes drawing
invalidation when these widgets get allocated a new size.
2017-08-09 16:26:26 +02:00
Timm Bäder
5874a30c73 GdkWindow: Remove gdk_window_new_input
Not needed anymore.
2017-08-09 15:19:46 +02:00
John Ralls
a2c4c54a2f Duplicate the TIC strings before NULLing the GObject data.
NULLing the data strings in GObject frees and invalidates the pointers
returned by g_object_get_data so we need our own copy of the values.
2017-08-08 23:21:55 +03:00
Daniel Boles
c25f619033 Revert "levelbar: Don't underallocate block widgets"
This reverts commit e25e1c54a4.

That commit causes a block always to be shown at the min side, even when
the value is 0, in which case, no fill should be shown.

https://bugzilla.gnome.org/show_bug.cgi?id=783649
2017-08-08 18:58:13 +01:00
Matthias Clasen
2f02401344 3.91.2 2017-08-07 22:21:22 -04:00
Matthias Clasen
80afb8c90a Fix docs build 2017-08-07 22:21:22 -04:00
Daniel Boles
23b6699ec3 Container: Don’t scroll to unset focus child coord
In gtk_container_real_set_focus_child(), we try to scroll to the
position of the new :focus-child if we have h or v adjustments.

gtk_widget_translate_coordinates() returns FALSE if neither widget is
realized or in other situations that cause output parameters x and y not
to be set. Thus, if the caller did not initialise x/y and uses them even
if the function returned FALSE, they are using uninitialised variables.

In gtk_container_real_set_focus_child(), we did not check the return
value but merrily went ahead and used x and y regardless. This is UB, as
revealed by Valgrind, as well as being pointless.

The trivial fix is to exit early if (!gtk_widget_translate_coordinates).

https://bugzilla.gnome.org/show_bug.cgi?id=776909
2017-08-07 19:21:09 +01:00
Daniel Boles
c4865bed43 Container: Fix scrolled coord in set_focus_child()
Commit 885bcd9fe4 trampled the bit here
that is meant to translate between the nominated focus child and the
actual innermost one that is used for updating the h/v adjustments.

So, we need to save the passed focus child before diving into its
children, then translate and get allocations between them both. This
makes GTK+ 4 behave like GTK+ 3 again: instead of priv->focus_child and
focus_child, we now have focus_child and child, serving the roles of the
nominated focus child and its innermost focus child respectively.

This also ditches the unnecessary call to Widget:get_focus_child(), as
Container::set_focus_child() gets that same new child as an argument.
2017-08-07 18:42:15 +01:00
Daniel Boles
e29f39b66c AccelLabel: set_accel_closure() arg is nullable 2017-08-07 10:32:13 +01:00
Daniel Boles
a42634c3e5 AccelLabel: set_accel_widget() arg is nullable 2017-08-07 10:29:53 +01:00
Matej Urbančič
5ac3ee99a9 Updated Slovenian translation 2017-08-07 10:07:50 +02:00
Matej Urbančič
d8defe7439 Updated Slovenian translation 2017-08-07 09:10:37 +02:00
Fabio Tomat
495e45f090 Update Friulian translation 2017-08-07 06:04:19 +00:00
Carlos Garnacho
4f31afcd9c window: Fix traversal of popovers during picking
These need to be traversed in the opposite direction. Given the order is
opposite to rendering, use a GQueue so it's cheap to traverse/add either
way.
2017-08-06 22:44:40 +02:00
Daniel Boles
be85c8b1fd HeaderBar: Use less clashing appmenu fallback icon
process-stop-symbolic is unintuitive if represented as a stop sign as in
Adwaita, and completely ambiguous if represented as a cross like the
window close button in other icon themes.

Instead, use application-x-executable, which is already used elsewhere
as a fallback if no specific icon can be found for the application.

https://bugzilla.gnome.org/show_bug.cgi?id=784624
2017-08-06 18:03:27 +01:00
Daniel Boles
d6e4ce127a docs: gtk/running: Document the GTK_CSD env var
It was not documented before.

https://bugzilla.gnome.org/show_bug.cgi?id=778791#c1
2017-08-06 17:44:18 +01:00
Daniel Boles
fec4a9f16a AccelLabel: Fix typos of Ctl to Ctrl 2017-08-06 17:35:07 +01:00
Daniel Boles
30eac22974 icon-browser: Add missing document-edit icon
https://bugzilla.gnome.org/show_bug.cgi?id=777515
2017-08-06 03:30:21 +01:00
Daniel Boles
b3ab230aac gdkdisplay: Remove a pointless assignment
https://bugzilla.gnome.org/show_bug.cgi?id=784016
2017-08-06 01:13:51 +01:00
Matthias Clasen
642aee75d5 Enough with the beeping!
Don't beep when modifiers are released in entries.
This was an inadvertent change that snuck in with
the emoji support.

Also, don't beep while entering an emoji name.
There is entirely too much beeping here.
2017-08-05 19:31:52 -04:00
Matthias Clasen
c250dddb00 Use the right gettext domain
Most of our .ui files were still using the gtk30 domain,
despite the library having switched to gtk40. Fix this.
2017-08-05 18:17:29 -04:00
Daniel Boles
e9af8a2a67 AccelLabel: Fix displaying accel unichars >= 0x80
In GTK+ 2, the ch < 0x80 was ORd with klass->latin1_to_char, and that
was unconditionally set to TRUE in the class init function, so
effectively the ch < 0x80 never mattered before or served any purpose.

When klass->latin1_to_char was deleted from the class in commit
f760538f17, this check’s sense changed.

The resuls was that accel keyvals with gunichar value >= 0x80 stopped
being rendered as symbols, instead falling back to their keysym name.
Instead of recognisable symbols for these, we get raw, often obscure,
and untranslatable keysym names. This breaks accessibility as well as
client users who may be parsing such accels and migrating from GTK+ 2.

So, remove the < 0x80 to restore the behaviour from before said commit.

https://bugzilla.gnome.org/show_bug.cgi?id=783906
2017-08-05 20:27:43 +01:00
Daniel Boles
7dd9f212ad CenterBox: minor tweaks to doc blurb 2017-08-05 18:57:08 +01:00
Daniel Boles
cbe53fec07 CenterBox: Add missing nullable annotations
https://bugzilla.gnome.org/show_bug.cgi?id=785280
2017-08-05 18:56:01 +01:00
Daniel Boles
4accb9f167 CenterBox: Guard against directly including header
https://bugzilla.gnome.org/show_bug.cgi?id=785280
2017-08-05 18:44:02 +01:00
Kjell Ahlstedt
8f22078787 centerbox: Add G_BEGIN_DECLS and G_END_DECLS
https://bugzilla.gnome.org/show_bug.cgi?id=785280
2017-08-05 11:26:42 +02:00
Matthias Clasen
72695773c2 Add support for entering emoji by name
This commit adds some basic support for entering emoji by name
to GtkIMContextSimple. To begin an emoji sequence, use Ctrl-Shift-e
instead of Ctrl-Shift-u that is used for hex input. Otherwise, the
behavior is the same: you can can let go of the modifier keys and
end the sequence with space or enter, or hold on to the modifier
keys and end the sequence by releasing them.

Only a limited, fixed set of names is supported at this time, see
the GtkIMContextSimple docs for a full list.
2017-08-04 14:54:26 -04:00
Daniel Boles
0740fb5c64 gskrendernodeimpl: Fix leak of cairo_pattern_t
It was not destroyed after setting it on the cairo_context_t, as it is
in every other case.

https://bugzilla.gnome.org/show_bug.cgi?id=785793
2017-08-04 00:59:33 +01:00
Daniel Boles
01e587da22 Window: Also quote Window address in Popover error
This is symmetrical with how we already do that for the Popover, and it
could be useful for debugging.
2017-08-03 21:10:22 +01:00
Daniel Boles
1f1e156007 widget-factory: Add tooltip to Entry icon
just to show we can.
2017-08-03 20:43:03 +01:00
Daniel Boles
bae6d3d45c Fix some nullable Returns annotations
based on reports and patches by Iñaki García Etxebarria:

https://bugzilla.gnome.org/show_bug.cgi?id=781246
https://bugzilla.gnome.org/show_bug.cgi?id=785423
2017-08-03 20:27:29 +01:00
Timm Bäder
edbe6b3360 inspector: Fix object title label alignment
Re-center it after the center-child removal in GtkBox and the addition
of GtkCenterBox.
2017-08-03 18:25:51 +02:00
Daniel Boles
01fe6b4a83 GtkFixed: Update documentation intro
• Add GtkLayout as a @See_also since it includes fixed-pos functionality
• Drop mention of the long-gone Linux framebuffer port
• Explain how to work around the problems with RTL text
2017-08-03 13:03:05 +01:00
Marek Cernocky
a14b3dd3a9 Updated Czech translation 2017-08-03 11:51:09 +02:00
Daniel Boles
06da814863 Layout: Tweak documentation blurb
Being addable to a ScrolledWindow is not interesting; now that SW
auto-adds a Viewport if needed, so can DrawingArea and any other widget.

Mention GtkFixed in case the reader just wants that bit of functionality
2017-08-03 10:19:13 +01:00
Timm Bäder
5cafa2b1ce entry: get_icon_area returns in entry coordinates
This fixes the popover positions in the gtk4-demo/popovers, and it also
just makes sense. Also document what the returned coordinates are
relatiev to.
2017-08-03 11:14:53 +02:00
Timm Bäder
765aff3f0e popover: Fix arrow position
Remove all the manual css margin handling since that's being done for us
automatically now.
2017-08-03 11:07:59 +02:00
Piotr Drąg
552e883bdf Update POTFILES.in 2017-08-02 18:05:30 +02:00
Benjamin Otte
47fe08528d eventbox: Remove 2017-08-02 16:59:09 +01:00
Benjamin Otte
18c086a46c texthandle: Don't use GtkEventBox 2017-08-02 16:58:47 +01:00
Benjamin Otte
77c9ef1b7b testsuite: Don't use GtkEventBox in gestures test 2017-08-02 16:58:17 +01:00
Benjamin Otte
212c46e20a a11y: Remove check for GtkEventBox 2017-08-02 16:58:05 +01:00
Benjamin Otte
cdba1b8ac8 docs: Don't use GtkEventBox 2017-08-02 16:55:25 +01:00
Benjamin Otte
b6efd89225 testsuite: Remove GtkEventBox from a11y test 2017-08-02 16:47:39 +01:00
Benjamin Otte
b555638600 iconbrowser: Remove GtkEventBox usage 2017-08-02 14:50:19 +01:00
Benjamin Otte
5be94c1fd7 gtk-demo: Get rid of GtkEventBox 2017-08-02 14:05:02 +01:00
Benjamin Otte
711bf38d90 cellaccel: Get rid of GtkEventBox
Can't test the code atm because treeview editing is broken, let's hope
it works once that's fixed.
2017-08-02 14:05:02 +01:00
Benjamin Otte
6b7503b83e placessidebar: Remove EventBox usage 2017-08-02 14:05:02 +01:00
Benjamin Otte
464ffad23e placesview: Remove event box usage 2017-08-02 14:05:02 +01:00
Emmanuele Bassi
b4b2fa4a98 meson: Add missing Wayland protocol
GDK depends on a new Wayland protocol.
2017-08-02 12:31:30 +01:00
Olivier Fourdan
ac61aedae9 wayland: add shortcut inhibitor support
This adds support for the shortcut inhibitor protocol in gdk/wayland
backend.

A shortcut inhibitor request is issued from the gdk wayland backend for
both the older, deprecated API gdk_device_grab() and the new gdk seat
API gdk_seat_grab(), but only if the requested capability is for the
keyboard only.

https://bugzilla.gnome.org/show_bug.cgi?id=783343
2017-08-02 12:37:23 +02:00
Benjamin Otte
9ec22d6652 reftests: Always wait for rendering to settle
We wait for a few 100ms for rendering to settle in various WMs. So far
we only did that for windows that were controlled by the WM (aka
toplevels).

With modern compositing gnome-shell however, this now also applies to
override-redirect windows, so we now wait there, too.

This makes the reftests a lot slower, but they now actually work when
running make check in gnome-shell.
2017-08-02 11:34:57 +01:00
Benjamin Otte
64b7308328 reftests: Remove event box usage 2017-08-02 11:34:57 +01:00
Benjamin Otte
bb238894dc testuite: Remove EventBox from builder test 2017-08-02 11:34:57 +01:00
Matej Urbančič
88cd0886bd Updated Slovenian translation 2017-08-02 10:42:45 +02:00
Timm Bäder
e70a3fab0d widget: Constify state parameter of propagate_state
Makes sense.
2017-08-02 08:58:30 +02:00
Timm Bäder
8c08a33220 widget: Don't try to propagate 0 state flags
This happens quite often and has no effect anyway.
2017-08-02 08:58:30 +02:00
Timm Bäder
9a3049009e widget: Fix size_allocate's out_clip annotation 2017-08-02 08:58:30 +02:00
Benjamin Otte
29b0954c45 testgtk: Actually expand the scrolled window 2017-08-02 00:23:43 +01:00
Benjamin Otte
7297aeb54c testgtk: Get rid of GtkEventBox 2017-08-02 00:23:30 +01:00
Benjamin Otte
69da7836f9 tests: Get rid of GtkEventBox 2017-08-02 00:15:10 +01:00
Daniel Boles
2b7db2376c bindings: Avoid iterating array if it is never set
If query.return_type is not one we want, binding_compose_params() is
not called, and so params remains a NULL pointer. However, the code was
then unconditionally iterating it regardless. Don't if it is still NULL.

CID 1452218 (#1 of 1): Explicit null dereferenced (FORWARD_NULL)
15. var_deref_op: Dereferencing null pointer params.
2017-08-01 20:45:07 +01:00
Daniel Boles
79bbd4aca5 cssselector: Ensure we do not index out of bounds
This would only happen if the last element was deprecated, but it should
be avoided anyway.

CID 1388852 (#1 of 1): Out-of-bounds read (OVERRUN)
12. overrun-local: Overrunning array pseudo_classes of 16 32-byte
elements at element index 16 (byte offset 512) using index i + 1U (which
evaluates to 16).
2017-08-01 20:17:02 +01:00
Daniel Boles
fc619706b7 Notebook: Remove null check after dereference
This function clearly assumes the parameter children cannot be NULL, and
the call sites seem to perform enough checks to confirm this.

CID 1388869 (#1 of 1): Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking children suggests that it may be null,
but it has already been dereferenced on all paths leading to the check.
2017-08-01 20:15:14 +01:00
Daniel Boles
881d7c6442 Calendar: Add default case to appease Coverity
CID 1432024 (#1 of 1): Uninitialized scalar variable (UNINIT)
2. uninit_use_in_call: Using uninitialized value rect.x when calling
calendar_arrow_rectangle.

Add a default case to the switch which will bail out with
g_assert_not_reached(), which should reassure Coverity that the method
is always called with a valid value that is handled in the switch.
2017-08-01 20:15:14 +01:00
Daniel Boles
eddbfc65a9 cssbordervalue: Fix possible use of uninitialised
If value->values[i] is NULL, then values[i] was left uninitialised.
The code then reads each element of values[].

CID 1432029 (#1 of 1): Uninitialized pointer read (UNINIT)
11. uninit_use: Using uninitialized value values[i].
2017-08-01 20:14:50 +01:00
Daniel Boles
37b23927c4 Stack: Fix copy-paste error
This fixes Coverity CID 1452217.
2017-08-01 19:18:39 +01:00
Daniel Boles
44c4faeed0 Entry: Fix unset icon tooltip hiding Entry tooltip
Our ::query-tooltip handler first checks whether the pointer is over any
of the icons, returning their tooltip if so, and if not chains up to
Widget::query-tooltip in order to show the text for the widget overall.

But ensure_has_tooltip(), which exists to update :has-tooltip based on
whether ::query-tooltip is needed, only set :has-tooltip to TRUE if any
icon had a tooltip, without caring whether the widget as a whole does.

That is asymmetrical and meant that if the Entry had a tooltip, but
subsequently all icons had their tooltips unset, :has-tooltip would be
set to FALSE, and hence the tooltip for the widget would become lost.

The fix is to set :has-tooltip to TRUE if the widget has a tooltip of
its own, and we only need to check the icons if that is not the case.

https://bugzilla.gnome.org/show_bug.cgi?id=785672
2017-08-01 18:13:11 +01:00
Daniel Boles
b3a6067541 Entry: Warn about corner case hiding icon tooltips
https://bugzilla.gnome.org/show_bug.cgi?id=785672#c4
2017-08-01 18:13:11 +01:00
Timm Bäder
f7bb6a7aa8 widget: Unset PRELIGHT and ACTIVE state in _set_sensitive
They both depend on input, which an insensitive widget does not receive.
2017-08-01 18:43:42 +02:00
Timm Bäder
36c4582086 button: Stop fiddling with PRELIGHT state
This is done automatically now and it's wrong here since it gets
executed after gesture release.
2017-08-01 18:16:40 +02:00
Timm Bäder
30d6b08271 scale: Allocate the value next to the slider
... when vertical. Also fixes usage of the uninitialized value_alloc.y.
2017-08-01 11:36:03 +02:00
Chun-wei Fan
ffc15bf922 Visual Studio builds: Adapt to new glib-mkenums
glib-mkenums is now done in Python, but since the Visual Studio build
environment (cmd.exe) does not support shebang lines, we need to call
the interpretor explicitly to run the script.

This means that we need to update on how we generate
gsk/gskenumtypes.[c|h] in our projects, as at this point GTK+-3.91.x
does not require a GLib installation that ships with the Python-fied
glib-mkenums.  As a result, we adapt to this by first using Python
to call glib-mkenums.  If this fails (where the output file becomes 0
in size), then we use PERL to call the glib-mkenums script.  Note that
during the build this will cause a warning message to be displayed,
stating that '&' cannot be found, but due to the way Windows .bat script
are done, we need to live with that until a solution can be found on
this.

This is likely a problem that does not exist in the Meson builds, as
Meson will take care of calling the interpretor for us by looking at
the shebang lines for our case.

Also, clean up the .batin Windows batch script that is used to call
glib-mkenums by using a for loop in there.
2017-08-01 16:26:43 +08:00
Daniel Boles
e74be1728e testentryicons: Set tooltips on all icons
Just to test tooltips in all cases; what was already here
should have been sufficient, but this doesn't hurt.

While here, also add some instructive placeholder text.

https://bugzilla.gnome.org/show_bug.cgi?id=780938
2017-07-31 20:01:30 +01:00
Chun-wei Fan
1eb8d2ad09 MSVC builds: Allow different Python versions per toolset
Use conditionals to select the Python installation, so that we can stick
closer to the default Visual Studio versions used to compile each official
Python releases.

This means by default:
-2013 builds use Python 3.4.x, which is built with 2010
-2015 and 2017 builds use Python 3.6.x, which is built with 2015.

Also rename PythonPath/PythonPathX64 in the property sheets to
PythonDir/PythonDirX64 repsectively, as PythonPath is the envvar name
where additional Python modules is searched for, so we don't want to get
confused with it.

Last but not least, distinguish between the Python interpretors that are
used on x64 and x86/32-bit builds for generating the libgtk4.manifest
file and the gdbus-generated sources, for consistency reasons.
2017-07-31 17:39:56 +08:00
Daniel Boles
0eb7e71a89 entry: Remove unused/duplicate widget in IconInfo 2017-07-30 14:20:59 +01:00
Timm Bäder
2cbcee8549 widget: Don't access highlight_resize in non-debug builds
The GtkWidgetPrivate struct only contains that member if G_ENABLE_DEBUG
is defined.
2017-07-28 21:28:32 +02:00
Timm Bäder
b71f644cf5 eventbox: Remove visible-window property
The GdkWindow that was supposed to back it is gone.
2017-07-27 21:53:42 +02:00
Matej Urbančič
5e7894feb9 Updated Slovenian translation 2017-07-27 15:46:34 +02:00
Matej Urbančič
df55dc0fe3 Updated Slovenian translation 2017-07-27 15:46:22 +02:00
Matej Urbančič
d6dc72ccc9 Updated Slovenian translation 2017-07-27 15:46:07 +02:00
Carlos Garnacho
2d3882c7eb gtklabel: Fix touch link handling under wayland
Refactor the code updating the active link under the current coordinates
into a separate function, and call it on GtkGestureMultiPress::pressed
so the link is updated on GDK_TOUCH_BEGIN. Based on a patch by
Jan-Michael Brummer <jan.brummer@tabos.org>.

https://bugzilla.gnome.org/show_bug.cgi?id=776903
2017-07-26 13:20:56 +02:00
Carlos Garnacho
21062fab02 gtklinkbutton: Set cursor on button's event window
It is not necessary to (re)set the cursor on every crossing
event, and can probably yield the wrong results if there are
multiple master devices involved. Just set it on init(), and
let the inner machinery update the cursor whenever necessary.

This patch is an adaption of commit 0daf79676 in gtk-3-22, the
side effects are not as bad here because the cursor was already
being set on the widget specifically instead of the parent
widget's, but there's still some nonetheless (plus, it's simpler)

https://bugzilla.gnome.org/show_bug.cgi?id=785375
2017-07-26 13:11:43 +02:00
Carlos Garnacho
8f33385d62 wayland: Clear tablet tool cursor on proximity out
This ensures that the tablet tool will get the cursor updated even if it
happens to fall within the same window again on the next proximity in.

https://bugzilla.gnome.org/show_bug.cgi?id=785375
2017-07-26 13:09:04 +02:00
Carlos Garnacho
312773a927 gdkwindow: Update cursor for tablet tools in the window
This check must be done explicitly on Wayland as the master device for
tablet tools differ from the Core Pointer. This ensures that whenever a
tablet tool is inside a window and the cursor is programmatically changed,
it will be visually updated too.

https://bugzilla.gnome.org/show_bug.cgi?id=785375
2017-07-26 13:08:50 +02:00
Carlos Garnacho
5b9adfba46 wayland: Observe GDK_SEAT_CAPABILITY_TABLET_STYLUS on gdk_seat_get_slaves()
This flag wasn't being honored so far...
2017-07-26 13:08:36 +02:00
Daniel Mustieles
8305465440 Updated Spanish translation 2017-07-25 20:16:59 +02:00
gogo
15c70a1fbb Update Croatian translation 2017-07-25 17:43:59 +00:00
Kjell Ahlstedt
e2744aa74f actionbar: Call g_object_class_install_properties()
https://bugzilla.gnome.org/show_bug.cgi?id=785318
2017-07-25 10:35:29 +02:00
Matthias Clasen
ce801641a7 Avoid the use of g_autofree
We can't use this in code that may be built on win32,
so lets just not use it at all.
2017-07-24 13:27:29 -04:00
Timm Bäder
3f9bcf3b31 widget: Stop invalidating recursively 2017-07-24 14:32:06 +02:00
A S Alam
3b8ca60bfc updated Punjabi Translation 2017-07-23 09:59:04 -05:00
Fabio Tomat
b512ff97e6 Update Friulian translation 2017-07-22 21:41:59 +00:00
Timm Bäder
343f2d8c08 notebook: Set tabs child visible before allocating a size
Otherwise we might skip them here, then set child-visible to TRUE and
then later snapshot them even though they have no valid size.
2017-07-22 19:36:05 +02:00
Timm Bäder
3b44a88ddb cssstylechange: Fix change printing
Only print the old value once, above the new one.
2017-07-22 19:36:05 +02:00
Kukuh Syafaat
fe1a953e9d Update Indonesian translation 2017-07-22 05:15:36 +00:00
Timm Bäder
5afbde2632 flowbox: Fix get_child_at_pos 2017-07-22 06:52:46 +02:00
Timm Bäder
b838cc0d65 testflowbox: hexpand the flowbox 2017-07-22 06:52:46 +02:00
Chun-wei Fan
171ff43340 tests: Include system headers appropriately
Don't include unistd.h on Windows, and include the appropriate headers on
Windows as necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=773299
2017-07-21 23:36:03 +08:00
Chun-wei Fan
4d3aa827f6 tests/rendernode-create-tests.c: Don't use VLAs
Replace uses of VLAs (variable-length arrays) using g_newa(), since
Visual Studio builds will unlikely ever support VLAs (which became optional
in C11).

https://bugzilla.gnome.org/show_bug.cgi?id=773299
2017-07-21 23:35:54 +08:00
Chun-wei Fan
73e81b64b6 gtk/gtkprintoperation-win32.c: Don't call gtk_widget_set_allocation()
This function was removed recently.

https://bugzilla.gnome.org/show_bug.cgi?id=773299
2017-07-21 23:35:38 +08:00
Jason Gerecke
837c2002e9 wayland: Implement support for tablet wheel scrolling
Adds support for creating scroll events from Wayland tablet wheel events.
Even though no Wacom tablet puck has a smooth-scrolling wheel, both event
types need to be generated to make the upper layers happy.

https://bugzilla.gnome.org/show_bug.cgi?id=783716
2017-07-20 14:27:28 +02:00
Carlos Garnacho
3be5aae56a wayland: Make function to create scroll event more generic
Add GdkWaylandPointerData and GdkDevice arguments so it can be
used across master devices.

https://bugzilla.gnome.org/show_bug.cgi?id=783716
2017-07-20 14:27:28 +02:00
Jason Gerecke
8419b51cc3 wayland: Get implicit grab serial information from tablet devices
If a tablet device is used to perform actions like window moving or resizing,
GTK must provide the correct implicit grab serial number over Wayland to Mutter
in order for the action to succeed. This commit adds tablet support to the
implicit serial getters.

https://bugzilla.gnome.org/show_bug.cgi?id=777333
2017-07-20 14:27:28 +02:00
Timm Bäder
500d25e3c8 gdkgears: Add window content spacing back
This was lost when border-width was removed.
2017-07-20 12:41:12 +02:00
Timm Bäder
e92eebb434 overlay: Fix child widget allocation
Just adding the overlay's own position is wrong now.
2017-07-20 12:40:46 +02:00
Timm Bäder
c3176ed302 overlay: Keep the main child at the bottom
Since gtk_bin_add does a gtk_widget_set_parent call, we cannot use it in
a GtkBin implementation that has multiple child widgets and cares about
their order.
2017-07-20 12:33:57 +02:00
Matthias Clasen
953e762843 Move GdkWindowWindowClass to private headers
This enum is no longer used in public api.
2017-07-19 23:11:12 -04:00
Matthias Clasen
394c21da98 Drop an unused typedef
GdkWindowRedirect is not used anywhere anymore.
2017-07-19 23:11:12 -04:00
Jonas Ådahl
f6dd1f6ceb wayland: Throttle system bell requests
If a bad behaving application tries to make the window/display beep too
often, throttle the beep requests so that we don't end up filling the
Wayland socket queue.

The throttle is set to 50 beeps per second, which far more beeps than
will ever make any sense from a user experience point of view, but will
avoid terminating due to an excessive amount of requests.

https://bugzilla.gnome.org/show_bug.cgi?id=778188
2017-07-20 09:58:10 +08:00
Jonas Ådahl
96295ad8c5 wayland: Make beep requests go through the GdkDisplay
This way we can add things like throttling.

https://bugzilla.gnome.org/show_bug.cgi?id=778188
2017-07-20 09:58:10 +08:00
Matthias Clasen
c715683643 Summarize changes so far
This is a high-level view of what was just merged.
2017-07-19 21:52:10 -04:00
Timm Bäder
52875b7639 testgtk: Remove unused local variable 2017-07-19 21:27:16 -04:00
Timm Bäder
f537d36d0a GtkStyleContext: Create path node in _new
So we can avoid creating a GtkCssPathNode in _init and then throwing it
away right after when using the _new_with_node constructor, which is the
one we use for all widgets.
2017-07-19 21:27:16 -04:00
Timm Bäder
fc47be9339 GtkStyleContext: Remove property cache
It was only used for widget style properties which don't exist anymore.
2017-07-19 21:27:16 -04:00
Timm Bäder
4cf39f65b2 widget-factory: fix page 3 widget expand
The treeview/listbox on the left side should not expand.
2017-07-19 21:27:16 -04:00
Timm Bäder
bf22dea2ce GdkWindow: Default to unfocused
Don't set the have_focused field of the window's toplevel to TRUE by
default and don't set the FOCUSED state in gdk_window_map. This a means
toplevel window's state is what the WM expects, and the FOCUSED state
will be set anyway when we map the window and receive a _NET_WM_STATE
message.
2017-07-19 21:27:16 -04:00
Timm Bäder
9bf5def6b7 statusbar: Inherit from GtkWidget 2017-07-19 21:27:16 -04:00
Timm Bäder
4a4c7131fd modelmenuitem: Care about GtkAccelLabel in get_text 2017-07-19 21:27:16 -04:00
Timm Bäder
8a26e8a6ba modelmenuitem: Update indicator visibility when has_indicator changes 2017-07-19 21:27:16 -04:00
Timm Bäder
2f1d962e56 menushell: Hide model submenus by default 2017-07-19 21:27:16 -04:00
Timm Bäder
b1354a184b GtkCheckMenuItem: Remove snapshot-indicator vfunc
Let the widget snapshot all child widgets and control the visibility of
those child widgets instead.
2017-07-19 21:27:16 -04:00
Timm Bäder
ed5192497f label: Remove GtkEventBox mention from docs
Packing the label inside a GtkEventBox is not necessary anymore for it
to receive events.
2017-07-19 21:27:16 -04:00
Timm Bäder
584d613bfd image: Remove irrelevant code sample
Both the description and the sample itself are obsolete or uninteresting
now that all widgets can receive events.
2017-07-19 21:27:16 -04:00
Timm Bäder
d31621256d spinbutton: Fix css node docs 2017-07-19 21:27:16 -04:00
Timm Bäder
2c3ec49535 treeview: Fix row drag icon offsets 2017-07-19 21:27:16 -04:00
Timm Bäder
d836fa5134 treeviewcolumn: Remove input window 2017-07-19 21:27:16 -04:00
Timm Bäder
bd446c48e9 spinbutton: expand the entry
It's supposed to fill the entire spinbutton allocation apart from the
buttons
2017-07-19 21:27:16 -04:00
Timm Bäder
efccff70b7 Adwaita: Set minimum size for modelbutton arrows
Otherwise the minimum size is 1×1.
2017-07-19 21:27:16 -04:00
Timm Bäder
348871d9fc Fix a few testsuite failures
Adjust default property values, skip GtkRange:adjustment.
2017-07-19 21:27:16 -04:00
Timm Bäder
5720f2a845 widget: Make _set_clip private
We don't need this anymore since clips are now reported in
size-allocate.
2017-07-19 21:27:16 -04:00
Timm Bäder
28dae5f1c2 checkmenuitem: Don't always snapshot the indicator
Chaining up will snapshot all child widgets, which doesn't work with
GtkModelMenuItem.
2017-07-19 21:27:16 -04:00
Timm Bäder
8358817ad1 applicationwindow: Remove some useless queue_resize calls
The gtk_widget_{set_parent,unparent} calls before will already cause a
resize when necessary.
2017-07-19 21:27:16 -04:00
Timm Bäder
308f41487d modelmenuitem: Set label on menu items
We have to add a check for GTK_IS_ACCEL_LABEL too now...
2017-07-19 21:27:16 -04:00
Timm Bäder
5116ce19b7 widget: Remove queue_draw_region vfunc
Unused
2017-07-19 21:27:16 -04:00
Timm Bäder
65209da486 widget: Set :focus on focus children 2017-07-19 21:27:16 -04:00
Timm Bäder
d7056f5d22 revealer: Explain CSS oddities 2017-07-19 21:27:16 -04:00
Timm Bäder
36ab70ddf5 widget: Add baseline and out_clip parameters to size-allocate
Since setting a clip is mandatory for almost all widgets, we can as well
change the size-allocate signature to include a out_clip parameter, just
like GtkCssGadget did. And since we now always propagate baselines, we
might as well pass that one on to size-allocate.

This way we can also make sure to transform the clip returned from
size-allocate to parent-coordinates, i.e. the same coordinate space
priv->allocation is in.
2017-07-19 21:27:16 -04:00
Timm Bäder
95bd58ac00 widget: Don't propagate size-allocate if only the position changed
We can do this now so we should
2017-07-19 21:27:15 -04:00
Timm Bäder
2e6b1158ee widget: Fix priv dereference in size_allocate_with_baseline
Accessing ->priv is only safe *after* the GTK_IS_WIDGET precondition, so
use the get_instance_private function instead.
2017-07-19 21:27:15 -04:00
Timm Bäder
6d9a0d432a widget: Fix a widget/container mixup 2017-07-19 21:27:15 -04:00
Timm Bäder
3aeaeef070 window: Fix resizing with solid-csd
We can't use a 20px resize handle in that case so fall back to the
padding area of the window. Still ugly but it works.
2017-07-19 21:27:15 -04:00
Timm Bäder
edf0aeb92e gtkapplication: g_dbus_proxy_new_sync can return NULL
Specifically, in the case where @error is set.
2017-07-19 21:27:15 -04:00
Timm Bäder
5fb27e2bd7 window: Fix annotations in get_size and get_position 2017-07-19 21:27:15 -04:00
Timm Bäder
0ebd8840a8 widget: Remove gtk_cairo_transform_to_window
Useless in a world without windows and cairo.
2017-07-19 21:27:15 -04:00
Timm Bäder
f637006b3e popover: Add a contents node
Remove the special case in gtkwidget.c where we didn't draw any css
background/border for popovers. Instead, rely on themes to not style the
popover node and add a contents gizmo that gets the actual css styling.
We then requeste enough space for the popover to draw both the contents
and the arrow on the side.
2017-07-19 21:27:15 -04:00
Timm Bäder
097ab2baed widget: Draw css box after pushing a opacity node 2017-07-19 21:27:15 -04:00
Timm Bäder
e2e91bf9bc Fix a few documentation issues 2017-07-19 21:27:15 -04:00
Timm Bäder
c26731968b testpopover: Remove expand GtkBox child properties 2017-07-19 21:27:15 -04:00
Timm Bäder
eb34c68ff4 widget: Move get_resize_needed to gtkwidget.c
It's only used in there so we don't need it in the private header.
2017-07-19 21:27:15 -04:00
Timm Bäder
831bcc5e0d notebook: Allocate unmapped tabs 2017-07-19 21:27:15 -04:00
Timm Bäder
c4f6cea111 fix a few documentation problems 2017-07-19 21:27:15 -04:00
Timm Bäder
23f90e3d67 centerbox: Add some missing return value annotations 2017-07-19 21:27:15 -04:00
Timm Bäder
1e4d11b995 box: Ignore baselines when vertical
For now.
2017-07-19 21:27:15 -04:00
Timm Bäder
68c35bbe15 bbox: Don't report a horizontal baseline 2017-07-19 21:27:15 -04:00
Timm Bäder
f0d6cb5f40 widget: Propagate correct baseline 2017-07-19 21:27:15 -04:00
Timm Bäder
e19e3b72a3 widget: Always pass on baselines 2017-07-19 21:27:15 -04:00
Timm Bäder
fb2bb87bb1 widget: Simplify snapshot_child 2017-07-19 21:27:15 -04:00
Timm Bäder
55389cd97c entry: Fix baseline alignment
Since we only look at priv->text_baseline later on, it would be useful
to actually set it to a useful value.
2017-07-19 21:27:15 -04:00
Timm Bäder
0726148ca5 widget: Draw debug nodes for widget margins too 2017-07-19 21:27:15 -04:00
Timm Bäder
fa5203e700 widget: Fix copy&paste error when creating debug nodes 2017-07-19 21:27:15 -04:00
Timm Bäder
6a7d903612 sizerequest: Add more assertions for baselines
min baselines must be <= natural baselines and both must lie inside the
content size of the widget.
2017-07-19 21:27:15 -04:00
Timm Bäder
cef4df1e7e widget: Unset PRELIGHT and ACTIVE state flags in unmap 2017-07-19 21:27:15 -04:00
Timm Bäder
1dd716e66f button: Reset in_button state in unmap
Since at that point the point is clearly not in the button anymore.
2017-07-19 21:27:15 -04:00
Timm Bäder
e276f1e844 label: Fix get_layout_index
Properly translate the given coordinates to layout coordinates. Fixes
clicking links and selecting text.
2017-07-19 21:27:15 -04:00
Timm Bäder
dd9c3fc8ab textview: Invalidate entire widget 2017-07-19 21:27:15 -04:00
Timm Bäder
dc473b4180 textview: Remove size_changed check in size-allocate
It's broken and we only hit size-allocate when the size changes anyway.
2017-07-19 21:27:15 -04:00
Timm Bäder
f7bc5fcae3 linkbutton: Remove useless unrealize implementation 2017-07-19 21:27:15 -04:00
Timm Bäder
c8ca43ad51 stack: Fix under transitions
make sure we initialize both width and height with proper values.
2017-07-19 21:27:15 -04:00
Timm Bäder
2c958df789 eventbox: Remove window 2017-07-19 21:27:15 -04:00
Timm Bäder
82eafb8a2c centerbox: Avoid accessing unset widgets 2017-07-19 21:27:15 -04:00
Timm Bäder
d832001baa textview: Use correct size for cairo node bounds 2017-07-19 21:27:15 -04:00
Timm Bäder
451a991488 window: Move updates debugging to GtkWidget
Which has the necessary information.
2017-07-19 21:27:15 -04:00
Timm Bäder
995903e971 scale: Fix mark positions
Someone else will have to fix the css.
2017-07-19 21:27:15 -04:00
Timm Bäder
4eba9442df range: Fix get_range_rect
get_own_allocation's position is relative to the given widget's origin,
not the parent.
2017-07-19 21:27:15 -04:00
Timm Bäder
468e75e43d range: Fix mark positions
The values returned by gtk_range_compute_slider_position are relative
to the trough_widget (the slider's parent), not the slider widget
itself.
2017-07-19 21:27:15 -04:00
Timm Bäder
ed5b7fedb8 scale: Remove custom indicator drawing
it's a css node so we can simply use the background instead of the
foreground color in the theme.
2017-07-19 21:27:15 -04:00
Timm Bäder
5bb355f06f scale: Fix mark indicator allocations 2017-07-19 21:27:15 -04:00
Timm Bäder
a8561bcc99 headerbar: don't measure own size
This is fallout from an earlier commit, we should be checking the
child's size of course, not repeatedly the headerbar's.
2017-07-19 21:27:15 -04:00
Timm Bäder
e25e1c54a4 levelbar: Don't underallocate block widgets 2017-07-19 21:27:15 -04:00
Timm Bäder
993998085f range: Avoid division by zero 2017-07-19 21:27:15 -04:00
Timm Bäder
a0444b9c42 gtk4-demo: Add widgetbowl demo
Same as fishbowl, but with widgets
2017-07-19 21:27:15 -04:00
Timm Bäder
4b0da8682d popover: set the shape on the correct window
the parent window is now the toplevel's window.
2017-07-19 21:27:15 -04:00
Timm Bäder
d25af7ce10 switch: Put the slider node last
Makes sense since we draw it over both labels. Also make this obvious by
using the default snapshot implementation.
2017-07-19 21:27:15 -04:00
Timm Bäder
4fb2fc7d89 drawingarea: Remove useless line from code example
backgrounds are drawn automatically now.
2017-07-19 21:27:15 -04:00
Timm Bäder
3dc6d240b3 Fix a few allocation coordinates & sizes 2017-07-19 21:27:15 -04:00
Timm Bäder
2c2867d45d entry: Fix undershoot position 2017-07-19 21:27:15 -04:00
Timm Bäder
6f7387cd25 paned: Fix clip node coordinates 2017-07-19 21:27:15 -04:00
Timm Bäder
aa5cb1648c adwaita: Adjust entry progress styling
Now that the entry>progress node is a full GtkProgressBar, we need to
apply the style to its trough>progress node.
2017-07-19 21:27:15 -04:00
Timm Bäder
84c00d18bb entry: Simplify progress size allocation 2017-07-19 21:27:15 -04:00
Timm Bäder
f520700b13 calendar: Remove all input windows
and simultaneously fix input! \o/
2017-07-19 21:27:15 -04:00
Timm Bäder
3fc49ce8a1 entry: Fix text position
We need to adjust the layout coordinates depending on priv->text_x,
sinec that one accounts for the width of the left icon.
2017-07-19 21:27:15 -04:00
Timm Bäder
a0f3497939 treeview: Remove bin_window 2017-07-19 21:27:15 -04:00
Timm Bäder
26e1491c70 label: Use the correct size in snapshot() 2017-07-19 21:27:15 -04:00
Timm Bäder
3252630a4b aboutdialog: Remove unused image 2017-07-19 21:27:15 -04:00
Timm Bäder
d6bb1625e9 testbaseline: Add a horizontal spinbutton 2017-07-19 21:27:14 -04:00
Timm Bäder
42aa7453ab Fix baselines wrt css values
The reported minimum baseline is for the reported min height, but if the
css min-height is greater than that, we need to account for that fact
when saving the baseline.

Since the reported baseline is relative to the widget's origin, we also
need to add the top values for margin, border and padding to the
reported baseline.
2017-07-19 21:27:14 -04:00
Timm Bäder
ea3876d26a widget: black is the new red 2017-07-19 21:27:14 -04:00
Timm Bäder
45c0439dd4 notebook: Fix css node ordering
Aaand all the unit tests pass again.
2017-07-19 21:27:14 -04:00
Timm Bäder
8dc5e13e8c iconview: Remove bin_window 2017-07-19 21:27:14 -04:00
Timm Bäder
fb1d2719d9 entry: Fix node ordering
Fix the icon order
2017-07-19 21:27:14 -04:00
Timm Bäder
271749d4a6 testsuite: Update expected css node output 2017-07-19 21:27:14 -04:00
Timm Bäder
a9f10a2d56 paned: Remove assertion in get_child_property
Passing the third child (the pane separator) is possible and shouldn't
cause the process to abort.
2017-07-19 21:27:14 -04:00
Timm Bäder
51e25aaff4 main: Protect against non-GtkWindow toplevels 2017-07-19 21:27:14 -04:00
Timm Bäder
5fbe26f396 inspector: Use GtkWidget::pick when picking widgets 2017-07-19 21:27:14 -04:00
Timm Bäder
f9f6f3027d container: Remove get_children_clip
Unused.
2017-07-19 21:27:14 -04:00
Timm Bäder
27202ff6cb stack: Compute clip directly 2017-07-19 21:27:14 -04:00
Timm Bäder
c0f6a97eed buttonbox: Compute clip directly 2017-07-19 21:27:14 -04:00
Timm Bäder
7012950f9f modelbutton: Compute clip directly 2017-07-19 21:27:14 -04:00
Timm Bäder
8645dd1030 flowbox: Compute clip directly 2017-07-19 21:27:14 -04:00
Timm Bäder
f1813e8f88 spinbutton: Fix gesture state
We claimed the gesture previously to keep it from propagating to the
underlying entry, but now that the entry is in a box with the two
buttons, we can do this properly and restore the previous long-press
behavior.
2017-07-19 21:27:14 -04:00
Timm Bäder
333b52bc14 checkmenuitem: Fix indicator state
We need to remove the inconsistent and checked state first so we
actually remove it.
2017-07-19 21:27:14 -04:00
Timm Bäder
2d3f57a420 widget-factory: Show the status bar by default
Since the action is also active by default.
2017-07-19 21:27:14 -04:00
Timm Bäder
1bffccd583 testnotebookdnd: quit when the toplevel gets closed 2017-07-19 21:27:14 -04:00
Timm Bäder
bc4c32505a menu: Popup at window coordinates if widget is given
Since widget allocations are now relative to the parent's origin, we
need to pass the window allocation here.
2017-07-19 21:27:14 -04:00
Timm Bäder
8dd29d755c window: Don't use allocated size in snapshot
Those are the wrong values.
2017-07-19 21:27:14 -04:00
Timm Bäder
bda2f4f582 popover: Create subsurface on wayland 2017-07-19 21:27:14 -04:00
Timm Bäder
2cbaa998db widget: Fix drawing invalidation with windowed widgets
E.g. popovers. Find the parent of the given widget with the window and
invalidate the given region in that window.
2017-07-19 21:27:14 -04:00
Timm Bäder
bc807789ba popover: "Fix" child allocation
This is still wrong but will be fixed in the future.
2017-07-19 21:27:14 -04:00
Timm Bäder
79797cd162 window: Stop wrapping popovers in another window
GtkPopover is already a windowed widget.
2017-07-19 21:27:14 -04:00
Timm Bäder
c2abb698be Replace a few get_content_allocation calls with get_content_size
The position of the content allocation is almost never relevant since
it's 0/0 for measure, size_allocate and snapshot.
2017-07-19 21:27:14 -04:00
Timm Bäder
e36ddfec17 Remove all widget style property code 2017-07-19 21:27:14 -04:00
Timm Bäder
cc60046ae9 treeviewaccessible: Don't rely on nonexistent style properties
The expander-size style property has been gone for a long time.
2017-07-19 21:27:14 -04:00
Timm Bäder
7b9b116ad6 adwaita: Remove style properties
They don't exist anymore.
2017-07-19 21:27:14 -04:00
Timm Bäder
07063d82aa notebook: Remove style properties
Hardcode the default values until someone comes up with a proposal for a
better way.
2017-07-19 21:27:14 -04:00
Timm Bäder
61dd8f92b8 calendar: Remove style properties
Hardcode the default values until someone comes and fixes the actual
widget.
2017-07-19 21:27:14 -04:00
Timm Bäder
a826ee37ca widget: Remove _set_simple_clip
Unused.
2017-07-19 21:27:14 -04:00
Timm Bäder
1535cab936 spinner: Use get_content_size 2017-07-19 21:27:14 -04:00
Timm Bäder
6b9d10039d pathbar: Compute widget clip directly
Instead of relying on gtk_widge_set_simple_clip
2017-07-19 21:27:14 -04:00
Timm Bäder
f40c61fb40 toolitem: Remove size_allocate implementation
A GtkToolItem is a GtkBin and that already does exactly what this
implementation did.
2017-07-19 21:27:14 -04:00
Timm Bäder
1bad3e1f28 widget: Transform clips into right coordinate space
The values passed to gtk_widget_set_clip are relative to the widget's
origin, but we need the values to be relative to priv->allocation.
2017-07-19 21:27:14 -04:00
Timm Bäder
e501bc6028 paned: Draw handle separator at the right location 2017-07-19 21:27:14 -04:00
Timm Bäder
5228e018b6 paned: Make sure we set the correct clips
They are still too big, i.e. clipped-off children enlarge the paned's
clip but at least redrawing works and smaller clips are just an
optimization.
2017-07-19 21:27:14 -04:00
Timm Bäder
24abbac114 switch: Remove in_switch flag
It's pretty simple and less code to just check whether the gesture
coords are inside the widget at the one place where we actually used the
flag.
2017-07-19 21:27:14 -04:00
Timm Bäder
63ba8fa355 widget: Consider opacity when drawing toplevels
This used to work in gtk3 and is used e.g. in the inspector when using
wayland.
2017-07-19 21:27:14 -04:00
Timm Bäder
63158fd3ff switch: Fix handle dragging with padding applied
We only move the handle inside the content allocation, so we need to use
the content width when calculating the new handle_pos.
2017-07-19 21:27:14 -04:00
Timm Bäder
a73d3418bc layout: Remove bin_window 2017-07-19 21:27:14 -04:00
Timm Bäder
8123ea8f3f fixed: Remove window 2017-07-19 21:27:14 -04:00
Timm Bäder
a4d2da76b3 button: Fix in_button checks
The gesture coords are relative to the button's origin, so use
gtk_widget_get_own_allocation to check if the coords are inside the
button.
2017-07-19 21:27:14 -04:00
Timm Bäder
12fdb19d63 expander: Fix pressed_in_title check
gesture coords are relative to the expander widget, the title allocation
is relative to the box child.
2017-07-19 21:27:14 -04:00
Timm Bäder
b5aa1982c9 Remove GtkCssGadget 2017-07-19 21:27:14 -04:00
Timm Bäder
7b5c12c7dc iconhelper: Inherit from GObject
Nothing is using any gadget API on iconhelpers anymore.
2017-07-19 21:27:14 -04:00
Timm Bäder
70d90a9923 spinbutton: Remove unused import 2017-07-19 21:27:14 -04:00
Timm Bäder
3077198de0 scrolledwindow: Fix indicator hiding
Only hiding the indicator if the widget is not mapped won't work.
2017-07-19 21:27:14 -04:00
Timm Bäder
ac4660b4c4 checkmenuitem: Fix indicator allocation
base point is the menu item's content allocation now.
2017-07-19 21:27:14 -04:00
Timm Bäder
1c5eec92fe range: Fix slider allocation 2017-07-19 21:27:14 -04:00
Timm Bäder
b17d998eb5 widget: Add new allocation accessors 2017-07-19 21:27:14 -04:00
Timm Bäder
15cacf485a Remove GtkCssCustomGadget
Unused.
2017-07-19 21:27:14 -04:00
Timm Bäder
078e599ac5 entry: Replace progress gadget with a progressbar 2017-07-19 21:27:14 -04:00
Timm Bäder
c56bad4be5 scrollbar: notify when setting the orientation 2017-07-19 21:27:14 -04:00
Timm Bäder
58ed506c59 GtkAccelLabel: Add use-underline property 2017-07-19 21:27:14 -04:00
Timm Bäder
a0ebad70cd spinbutton: Fix property notification 2017-07-19 21:27:14 -04:00
Timm Bäder
b497b066b0 cssprovider test: Remove style property test case
It's getting harder and harder to find a dummy style property to use
here, so remove the test case since style properties should be going
away soon anyway.
2017-07-19 21:27:14 -04:00
Timm Bäder
4d74129c61 entry: Use images for icons 2017-07-19 21:27:14 -04:00
Timm Bäder
00d720d8a4 image: Add private _get_definition 2017-07-19 21:27:14 -04:00
Timm Bäder
25034b6f87 label: Fix layout snapshot coordinates
No need to convert anything to "window coordinates" anymore.
2017-07-19 21:27:14 -04:00
Timm Bäder
9e43d267bd scrolledwindow: Fix scrollbar allocations
Use the content size everywhere. Fixes scrollbar positions with padding
and/or css borders applied to the scrolledwindow.
2017-07-19 21:27:14 -04:00
Timm Bäder
3a20bc5e9a scrolledwindow: Fix on_scrollbar check
The event widget is always the toplevel window, so use the event target
and check the GtkScrollbar ancestor.
2017-07-19 21:27:14 -04:00
Timm Bäder
30f516ff1f range: Use a gizmo as slider
No need for this to be a GtkIcon.
2017-07-19 21:27:14 -04:00
Timm Bäder
3f429eb197 entry: get_layout_location coords are already content relative 2017-07-19 21:27:14 -04:00
Timm Bäder
225306a21e image: Fold gtk_image_reset into only caller 2017-07-19 21:27:14 -04:00
Timm Bäder
360b075164 widget: Avoid some type checks in snapshot_child 2017-07-19 21:27:13 -04:00
Timm Bäder
f50bbb10df menu: Remove bin_window and view_window 2017-07-19 21:27:13 -04:00
Timm Bäder
e2ce407f2c modelmenuitem: Fix type checking assertions
GtkAccelLabel is not a GtkLabel anymore
2017-07-19 21:27:13 -04:00
Timm Bäder
34f6f9bfe6 iconview: Stop drawing a background
GtkWidget is doing that automatically now.
2017-07-19 21:27:13 -04:00
Timm Bäder
99b00b4d9c sizerequest: Assert that min_size >= 0
This should generally be true, so remove the checks from gtkbox.c and
move it into gtksizerequest.c
2017-07-19 21:27:13 -04:00
Timm Bäder
ab1e8502e7 revealer: Fix DOWN and RIGHT transition types
Since we lost the bin_window, we now have to allocate the child widget
at a negative position when using these transition types.
2017-07-19 21:27:13 -04:00
Timm Bäder
ec1984bd93 revealer: Request child size for NONE transition type
Previously, we would request a size of 0×0 when the transition type was
NONE and the child un-revealed, making the revealer in this case a
gtk_widget_set_visible replacement. Instead, to the exact same thing we
do in the CROSSFADE case and request the child size instead. This also
keeps the revealer from under allocating the child when the transition
type is set to NONE.
2017-07-19 21:27:13 -04:00
Timm Bäder
9e50447253 stack: Remove bin_window 2017-07-19 21:27:13 -04:00
Timm Bäder
12d2679aac revealer: Remove bin_window 2017-07-19 21:27:13 -04:00
Timm Bäder
5688b8a663 toolitemgroup: Remove child window 2017-07-19 21:27:13 -04:00
Timm Bäder
9350a0f85b popover: Remove useless if case
rect is not nullable, so stop checking if it is NULL and instead add a
g_return_val_if_fail guard.
2017-07-19 21:27:13 -04:00
Timm Bäder
2b06986c38 widget: "fix" event and invalidation coordinates 2017-07-19 21:27:13 -04:00
Timm Bäder
ee8a8c49e2 testwidgetfocus: Drop SPACING constant in favor for CSS
This makes it easier to test various other properties of widgets.
2017-07-19 21:27:13 -04:00
Timm Bäder
b8cc22a552 window: Remove dead code
This case can never happen since GtkWindow instances never have a
parent.
2017-07-19 21:27:13 -04:00
Timm Bäder
dc93903cd3 image: Fix snapshot position 2017-07-19 21:27:13 -04:00
Timm Bäder
2687a9d132 entry: Fix text position 2017-07-19 21:27:13 -04:00
Timm Bäder
241a009938 widget: Adapt translate_coordinates to coordinate changes 2017-07-19 21:27:13 -04:00
Timm Bäder
e3bd1e10e8 scrolledwindow: fix scrollbar allocation 2017-07-19 21:27:13 -04:00
Timm Bäder
fa97b270f1 paned: Remove useless queue_resize calls
This is done by gtk_widget_unparent nowadays
2017-07-19 21:27:13 -04:00
Timm Bäder
4a4897a9b6 paned: Reimplement handle dragging 2017-07-19 21:27:13 -04:00
Timm Bäder
d3e88ed5a6 icon: Stop offset'ing in snapshot
The snapshot is not offset to the content allocation when ->snapshot is
called.
2017-07-19 21:27:13 -04:00
Timm Bäder
d3beea2c3d frame: Fix child allocation
Don't add the parent's allocation from gtk_widget_get_allocation
2017-07-19 21:27:13 -04:00
Timm Bäder
bccaeb0e2d widget: Make allocations parent-content-allocation relative 2017-07-19 21:27:13 -04:00
Timm Bäder
ec6184c2af widget: Remove queue_draw_child vfunc 2017-07-19 21:27:13 -04:00
Timm Bäder
c462105d78 viewport: Remove bin_window 2017-07-19 21:27:13 -04:00
Timm Bäder
58320c02ea scrolledwindow: Properly remove scrollbars
Instead of keeping an extra ref, then unparent+destroy+unref, don't keep
an extra ref and just unparent the scrollbar when appropriate.
2017-07-19 21:27:13 -04:00
Timm Bäder
357e0db4c9 listbox: Remove manual prelight row management
This works automatically now.
2017-07-19 21:27:13 -04:00
Timm Bäder
5aeb25f460 switch: Remove manual PRELIGHT code
This works automatically now
2017-07-19 21:27:13 -04:00
Timm Bäder
c2717a887d listbox: Remove view_window 2017-07-19 21:27:13 -04:00
Timm Bäder
b9f70b473c scrollbar: Add new API to gtk4-sections.txt
and update the css node docs
2017-07-19 21:27:13 -04:00
Timm Bäder
0a70ec2d36 bin: Drop priv pointer 2017-07-19 21:27:13 -04:00
Timm Bäder
cc7038b740 filechooserwidget: Fix save widgets
Now that GtkFileChooserWidget is not a GtkBox anymore, we can't just
gtk_box_pack_start child widgets to it.
2017-07-19 21:27:13 -04:00
Timm Bäder
24f79bbae4 Remove some unneeded includes 2017-07-19 21:27:13 -04:00
Timm Bäder
cb8031fde3 inspector: Allow picking children of GtkWidget classes 2017-07-19 21:27:13 -04:00
Timm Bäder
34af3d3940 accellabel: Inherit from GtkWidget
Use a box and 2 labels.
2017-07-19 21:27:13 -04:00
Timm Bäder
01cdcec3ea textview: Use ::snapshot 2017-07-19 21:27:13 -04:00
Timm Bäder
35670a1ee6 testtooltips: Add static tooltip
Just a widget class emulating the tooltip look by calling itself
"tooltip" in the css node tree and adding the .background style class.
2017-07-19 21:27:13 -04:00
Timm Bäder
ae5d3a20a8 tooltipwindow: Remove unused define 2017-07-19 21:27:13 -04:00
Timm Bäder
665c9aba31 listbox: Remove rows directly when binding model
Instead of hopping through 7 different functions to do that, just
remove all rows directly. This also mean we'll only remove rows and not
other children that've been added like placeholders.
2017-07-19 21:27:13 -04:00
Timm Bäder
a9f9ef3f53 box: Use widget children list in count_expand_children
It's still less dereferencing than the previous code.
2017-07-19 21:27:13 -04:00
Timm Bäder
3babd184c0 scale: Fix css node ordering and expected results
Add :dir(ltr) where expected, i.e. everywhere we now have a widget but
had a gadget before.
Also, fix the expected output to expect mark subnodes in the order
specified in the GtkScale does, i.e.

├── mark
    ├── [label]
    ╰── indicator

for marks at the top of the scale and

├── mark
    ├── indicator
    ╰── [label]

For marks at the bottom of the scale.
2017-07-19 21:27:13 -04:00
Timm Bäder
121cf9c78c spinbutton: Add docs for new public API 2017-07-19 21:27:13 -04:00
Timm Bäder
73f5f45456 widget: Draw widget clips with GEOMETRY debugging 2017-07-19 21:27:13 -04:00
Timm Bäder
3e555e1646 image: Offset rendering to the content allocation 2017-07-19 21:27:13 -04:00
Timm Bäder
90c8a3f920 widget: Bring back layout debugging 2017-07-19 21:27:13 -04:00
Timm Bäder
ac1d3cb396 paned: Replace handle gadget with widget 2017-07-19 21:27:13 -04:00
Timm Bäder
ec51c63313 widget: Bring resize and baseline debug rendering back 2017-07-19 21:27:13 -04:00
Timm Bäder
790c153b2c range: Fix click detection in slider trace
The x/y/ coordinates are relative to the range allocation, so take that
into account.
2017-07-19 21:27:13 -04:00
Timm Bäder
2ac8ebe9f7 treeview: default to width_changed = TRUE
Checking the given GtkAllocation against the current allocation insize
::size-allocate doesn't really work anymore. They are only different if
the content allocation (the one passed) and the widget allocation (the
current one) are different, so e.g. when the widget has padding >0
applied.
2017-07-19 21:27:13 -04:00
Timm Bäder
70a58fd83a icon: Render at content position
Since we get offset automatically to the widget allocation before
->snapshot is called, we still have to offset the difference to the
position of the content allocation.
2017-07-19 21:27:13 -04:00
Timm Bäder
071c205c92 switch: Use a gizmo as slider
The button was jut a stop-gap solution before GtkGizmo existed.
2017-07-19 21:27:13 -04:00
Timm Bäder
c0a1793d59 testheightforwidth: Remove GtkBox fill/expand usage 2017-07-19 21:27:13 -04:00
Timm Bäder
b344267e6c button: Don't care about sizing if no child is set
We don't need to care in this case since the default values should
always be assumed to be 0, and setting a baseline of 0 is just wrong
when orientation == HORIZONTAL, it should be -1 (or unset).
2017-07-19 21:27:13 -04:00
Timm Bäder
0bab8b8e0e Remove GtkBoxGadget
Now unused
2017-07-19 21:27:13 -04:00
Timm Bäder
4f0140fa6c Remove GtkBuiltinIcon
Now unused.
2017-07-19 21:27:13 -04:00
Timm Bäder
efd7b38abc checkbutton: stop using gadgets 2017-07-19 21:27:13 -04:00
Timm Bäder
495fba41db modelbutton: Use GtkIcon as indicator 2017-07-19 21:27:13 -04:00
Timm Bäder
ed38b1c365 icon: Add _set_css_name back 2017-07-19 21:27:13 -04:00
Timm Bäder
d5167eb61c colorswatch: Replace IconHelper with GtkImage 2017-07-19 21:27:13 -04:00
Timm Bäder
dd713e0ae2 widget: Consider css margins when setting clip
This is optional for positive margins as they just increase the widget
allocation. However, with negative css margins, the allocation is
smaller than the clip.

This fixes scale sliders leaving a small trail behind.
2017-07-19 21:27:13 -04:00
Timm Bäder
a3b9adaa68 adwaita: Fix typo
marks_lenght -> marks_length
2017-07-19 21:27:13 -04:00
Timm Bäder
f1c1e52eea container: GtkActionBar is not a special container anymore 2017-07-19 21:27:13 -04:00
Timm Bäder
2d29183aa8 progressbar: Apply style classes when setting direction
We might have to change .top to .left etc. when changing the direction
of the progressbar.
2017-07-19 21:27:13 -04:00
Timm Bäder
fe9833a2f8 css nodes: Fix expander test case
Vertical box subnode.
2017-07-19 21:27:13 -04:00
Timm Bäder
f4bfb0a07a css nodes: Fix entries test case
Spinbuttons now have a subnode box and the undershoot nodes belong to
the entry node.
2017-07-19 21:27:13 -04:00
Timm Bäder
218e0b9929 spinbutton: Use 0 as default for (max-)width-chars
This mimics the old spinbutton size request better.
2017-07-19 21:27:13 -04:00
Timm Bäder
b3f45cf1fe range: Emit value-changed when setting the adjustment
After all, the value kind of just changed.
2017-07-19 21:27:13 -04:00
Timm Bäder
5204fd5ea1 scale: Replace all gadgets with widgets 2017-07-19 21:27:13 -04:00
Timm Bäder
7448d137f3 scale: Remove draw_value vfunc
Unused.
2017-07-19 21:27:13 -04:00
Timm Bäder
af9d0cdffb range: Return trough allocation from _get_range_rect 2017-07-19 21:27:13 -04:00
Timm Bäder
6f2145be00 notebook: Replace all gadgets with widgets 2017-07-19 21:27:13 -04:00
Timm Bäder
07cbbc6fa9 container: Propagate child properties if parent != container
This can happen when e.g. GtkNotebook adds the child page widgets not
directly inside the notebook, but inside the inner GtkStack.
2017-07-19 21:27:12 -04:00
Timm Bäder
2bf1c09f65 adwaita: Fix notebook theming
the header and the stack nodes are now inside a box node.
2017-07-19 21:27:12 -04:00
Timm Bäder
11207505e3 gizmo: Unparent all child widgets in finalize 2017-07-19 21:27:12 -04:00
Timm Bäder
017dfc132d gizmo: Chain up in snapshot if no snapshot func given
I.e. when gizmo users just want to draw child widgets anyway and don't
do any custom drawing, they can simply pass NULL.
2017-07-19 21:27:12 -04:00
Timm Bäder
0c0a402433 notebook: Replace tab gadget with GtkGizmo 2017-07-19 21:27:12 -04:00
Timm Bäder
8edf10103e notebook: Replace tabs gadget with GtkGizmo 2017-07-19 21:27:12 -04:00
Timm Bäder
195ca06c2c notebook: Replace arrow gadgets with GtkIcons 2017-07-19 21:27:12 -04:00
Timm Bäder
8b1b0f4efd icon: Add _set_image 2017-07-19 21:27:12 -04:00
Timm Bäder
7c77fd9e62 menu: Replace arrow gadgets with GtkIcons 2017-07-19 21:27:12 -04:00
Timm Bäder
fb78c3b7e8 checkmenuitem: Replace indicator gadget with GtkIcon 2017-07-19 21:27:12 -04:00
Timm Bäder
2876790cc3 icon: Only draw in content allocation 2017-07-19 21:27:12 -04:00
Timm Bäder
273aa2be61 menuitem: Replace arrow gadget with GtkIcon 2017-07-19 21:27:12 -04:00
Timm Bäder
753e915f87 scrollbar: Add accessor for wheel delta
Make the one in gtkrange.c static since it was only ever used from
GtkScrolledWindow.
2017-07-19 21:27:12 -04:00
Timm Bäder
706bc08b68 range: Draw the colorscale trough at 0,0 2017-07-19 21:27:12 -04:00
Timm Bäder
2e62072cbc range: Allocate the trough when the adjustment value changes
So it repositions the slider.
2017-07-19 21:27:12 -04:00
Timm Bäder
38ff761313 range: Fix mouse location tracking 2017-07-19 21:27:12 -04:00
Timm Bäder
afddfc2397 range: Snapshot slider in trough's snapshot impl 2017-07-19 21:27:12 -04:00
Timm Bäder
d1be5f2941 spinner: Remove gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
6e74975e41 range: make the slider a gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
c7c08cf9a1 icon: Remove gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
ba6ba94184 range: Use gizmos for highlight and fill gadgets 2017-07-19 21:27:12 -04:00
Timm Bäder
395185896f range: Use a gizmo as trough 2017-07-19 21:27:12 -04:00
Timm Bäder
90cc401f1a range: Remove contents gadget
It's not needed anymore since the range only has one child gadget: the
trough.
2017-07-19 21:27:12 -04:00
Timm Bäder
7e525ca63b range: Remove steppers
Add them back into the new scrollbars later
2017-07-19 21:27:12 -04:00
Timm Bäder
86a2156d17 scrolledwindow: Use scrollbar API on scrollbars 2017-07-19 21:27:12 -04:00
Timm Bäder
5049b35fc6 range: Make GtkRange a regular class 2017-07-19 21:27:12 -04:00
Timm Bäder
4dc5790058 scrollbar: Inherit from GtkWidget 2017-07-19 21:27:12 -04:00
Timm Bäder
55fc120134 calendar: Remove custom css background and border drawing 2017-07-19 21:27:12 -04:00
Timm Bäder
4d4b224a61 eventbox: Remove snapshot implementation 2017-07-19 21:27:12 -04:00
Timm Bäder
70613c9128 toolpalette: Port to snapshot() 2017-07-19 21:27:12 -04:00
Timm Bäder
7ddd497f69 toolitemgroup: Remove custom draw code
GtkWidget does it automatically now
2017-07-19 21:27:12 -04:00
Timm Bäder
a735dd44cb searchbar: Fix property documentation comments
They are properties of GtkSearchBar, not GtkEntry.
2017-07-19 21:27:12 -04:00
Timm Bäder
4823b9f2d7 searchbar: Remove manual snapshot code 2017-07-19 21:27:12 -04:00
Timm Bäder
2e4df25a1d menu: Stop drawing css background and border
GtkWidget does it now
2017-07-19 21:27:12 -04:00
Timm Bäder
1a1f9fd03c menu: Remove unnecessary queue_draw 2017-07-19 21:27:12 -04:00
Timm Bäder
c35a78110c menu: Stop looking at padding and margin manually 2017-07-19 21:27:12 -04:00
Timm Bäder
8d2d2ae07f button: Remove unused flag 2017-07-19 21:27:12 -04:00
Timm Bäder
720bb9eede checkbutton: Don't draw a focus ring
GtkWidget does it for us now.
2017-07-19 21:27:12 -04:00
Timm Bäder
df28f3d771 meson: Remove double gtkcssnode.c entry in source files 2017-07-19 21:27:12 -04:00
Timm Bäder
9ab43dfe9e spinbutton: Add accessors for (max-)width-chars 2017-07-19 21:27:12 -04:00
Timm Bäder
6aa9ca7b55 spinbutton: Fix activation 2017-07-19 21:27:12 -04:00
Timm Bäder
88550b5d55 inspector: Show the GdkWindow before grabbing
Gets rid of a critical when trying to inspect widgets.
2017-07-19 21:27:12 -04:00
Timm Bäder
2651fcbef9 widget: Special-case popover in snapshot
Just like we do it for GtkWindow.
2017-07-19 21:27:12 -04:00
Timm Bäder
1d4d5b2eb9 popover: Stop looking at padidng and border in measure
GtkWidget does it for us now
2017-07-19 21:27:12 -04:00
Timm Bäder
a5b25d452a boxgadget: Remove unused ComputeExpandFunc 2017-07-19 21:27:12 -04:00
Timm Bäder
0845246fb8 menuitem: Remove gadget
Now that GtkCheckMenuItem isn't using it anymore, we also don't need it.
2017-07-19 21:27:12 -04:00
Timm Bäder
022a3d76d9 checkmenuitem: Stop using the parent's gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
2234d100ad expander: Inherit from GtkContainer
This fixes the expansion not working. As a GtkBin, GtkExpander can only
have one child and if that's a GtkBox (and not the one added through
gtk_expander_add), things go wrong.
2017-07-19 21:27:12 -04:00
Timm Bäder
a2f7a076ac inspector: Fix list row alignment in general tab 2017-07-19 21:27:12 -04:00
Timm Bäder
8bf3b2d5e4 scrolledwindow: Remove useless function call
We never use the result.
2017-07-19 21:27:12 -04:00
Timm Bäder
5b51936676 scrolledwindow: Fix child widget positioning
Instead of relying on get_relative_allocation, just use the
scrolledwindow's content allocation we get passed to size-allocate.
2017-07-19 21:27:12 -04:00
Timm Bäder
cfd67eb4ec scrolledwindow: Remove last argument from allocate_child
We never use that when calling gtk_scrolled_window_allocate_child.
2017-07-19 21:27:12 -04:00
Timm Bäder
9e79684762 range: Remove gadget completely 2017-07-19 21:27:12 -04:00
Timm Bäder
2cedf1be9c widget: Remove gtk_widget_set_allocation 2017-07-19 21:27:12 -04:00
Timm Bäder
60e053f52a Remove calls to gtk_widget_set_allocation
gtk_widget_size_allocate_with_baselines does it automatically now.
2017-07-19 21:27:12 -04:00
Timm Bäder
cd6a8bff8f revealer: Stop calculating paddings ourselves
GtkWidget does it not for all widgets.
2017-07-19 21:27:12 -04:00
Timm Bäder
04fcb1f17f revealer: Don't add a clip node for CROSSFADE transitions
We don't need them there as we just change the opacity of the revealer.
2017-07-19 21:27:12 -04:00
Timm Bäder
c76804b1f2 cellview: Remove gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
1d782b8930 scale: Fix value position
by not using the range's gadget which is not allocated to any position
anymore.
2017-07-19 21:27:12 -04:00
Timm Bäder
a71edd2925 widget: Add private get_margin_allocation 2017-07-19 21:27:12 -04:00
Timm Bäder
2ba07901db buttonbox: Remove gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
dc4bdc2021 stack: Remove gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
ede6f2ab59 Slightly rework clip handling
always initialize clips to the (content) allocation, don't walk up the
widget hierarchy in gtk_widget_set_clip, implement
gtk_widget_size_allocate in GtkSeparator. This way we don't end up using
uninitialized clip values.

The entire clip handling is up for major rework since we can't and don't
want to force every single widget to call _set_clip in size-allocate
implementations.
2017-07-19 21:27:12 -04:00
Timm Bäder
28b18129b5 button: Remove gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
c3ffad1fb3 gtkscale: Properly initialize the clip 2017-07-19 21:27:12 -04:00
Timm Bäder
c87be0a27a widget: Don't set the allocation in size-allocate
If widgets chain up in their size-allocate implementation, they pass the
content allocation and not the widget allocation which will cause the
wrong allocation to be set.
2017-07-19 21:27:12 -04:00
Timm Bäder
bf118eca80 label: Don't chain up in size_allocate
It's unnecessary now.
2017-07-19 21:27:12 -04:00
Timm Bäder
671c5ac434 frame: Fix copy&paste bug in shadow-type handling
If the given shadow_type is none NONE, we have to remove the .flat style
class of course, not add it.
2017-07-19 21:27:12 -04:00
Timm Bäder
49476053e3 paned: Remove gadget 2017-07-19 21:27:12 -04:00
Timm Bäder
83b590cd78 combobox: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
ff6db012d9 widget: Add private get_border_allocation 2017-07-19 21:27:11 -04:00
Timm Bäder
5e3b866370 flowbox: Remove gadgets 2017-07-19 21:27:11 -04:00
Timm Bäder
3f5626a3f7 viewport: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
2e3211b0cb scrolledwindow: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
e37457adf9 box: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
5baaa76bac box: Remove gadget accessor 2017-07-19 21:27:11 -04:00
Timm Bäder
23ef6e4a3b actionbar: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
b749de8b8f buttonbox: Don't use the parent gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
bafa55349f separatortoolitem: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
fe6832fcc9 menubar: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
9fedd05051 fontchooserwidgets: Spinbuttons are no entries 2017-07-19 21:27:11 -04:00
Timm Bäder
46007df8a5 spinbutton demo: Spinbuttons are no Entries 2017-07-19 21:27:11 -04:00
Timm Bäder
f736b071b4 spinbutton: Add text property 2017-07-19 21:27:11 -04:00
Timm Bäder
37d6fd1ffa Entry: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
8a7843eaf2 toolbar: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
4c43a4d4c5 cellrendererspin: Include gtkentry.h
The symbols aren't in gtkspinbutton.h anymore.
2017-07-19 21:27:11 -04:00
Timm Bäder
c268ed832d flowbox: Initialize allocation 2017-07-19 21:27:11 -04:00
Timm Bäder
b60686e8f1 spinbuttonaccessible: Inherit from GtkWidgetAccessible 2017-07-19 21:27:11 -04:00
Timm Bäder
3a2ca91eae spinbutton: Remove call to GtkSpinButton API
The condition will never be true since spinbuttons aren't entries
anymore.
2017-07-19 21:27:11 -04:00
Timm Bäder
3c2d2545b2 spinbutton: Inherit from GtkWidget
Use a box, an entry and the current 2 buttons.
Remaining problems: Entry sizing and activation.
2017-07-19 21:27:11 -04:00
Timm Bäder
fc5c2f2030 modelbutton: Remove last gadget usages
And fix the clip calculation
2017-07-19 21:27:11 -04:00
Timm Bäder
5532b9a1b3 label: Fix clipping
We were using an uninitialized value here.
2017-07-19 21:27:11 -04:00
Timm Bäder
af7781ce0f widget-factory: Remove invisible-char usage for spin buttons 2017-07-19 21:27:11 -04:00
Timm Bäder
78b497bd7a frame: Remove empty finalize implementation 2017-07-19 21:27:11 -04:00
Timm Bäder
9c386b7d63 separator: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
aad7e2d509 label: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
82a4bcf824 spinner: Set clip 2017-07-19 21:27:11 -04:00
Timm Bäder
c6cc314905 frame: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
a1b3a26ba4 widget: Add private gtk_widget_get_content_allocation 2017-07-19 21:27:11 -04:00
Timm Bäder
8db3478bf5 stackcombo: Set clip 2017-07-19 21:27:11 -04:00
Timm Bäder
1269585804 modelbutton: Stop using the button's gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
2cd1a984cf set clip of more widgets 2017-07-19 21:27:11 -04:00
Timm Bäder
3094b341ed image: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
7f965a04ea colorswatch: Remove gadget usage 2017-07-19 21:27:11 -04:00
Timm Bäder
2305ba577d icon: Stop calling gtk_widget_set_allocation
The allocation passed to size-allocate is the content allocation so this
call doesn't make sense anymore.
2017-07-19 21:27:11 -04:00
Timm Bäder
6c484ca4f3 button: Remove gadget usage
Can't remove it entirely yet, since GtkCheckButton still uses it
2017-07-19 21:27:11 -04:00
Timm Bäder
aa5f90d9f5 fontbutton: Call the css node "fontbutton"
Otherwise the default looks like a button inside a button.
2017-07-19 21:27:11 -04:00
Timm Bäder
b9fb186f46 menuitem: Stop using gadget
Once again, we can't really delete it yet since other widgets use it...
2017-07-19 21:27:11 -04:00
Timm Bäder
b4e26e686d checkbutton: Don't use parent button's gadget
check buttons showing their indicator still use the internal boxgadget
and have therefore the wrong size, but this gets us closer.
2017-07-19 21:27:11 -04:00
Timm Bäder
b29b807c3c expander: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
d274387e39 gizmo: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
e2fc0ce06b progressbar: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
bb7b1c56ae range: Remove gadget usage 2017-07-19 21:27:11 -04:00
Timm Bäder
e8bedcbff8 grid: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
66b720fbb8 box: Remove gadget usage
Keep the gadget member in the private struct around for now so
GtkButtonBox doesn't break terribly.
2017-07-19 21:27:11 -04:00
Timm Bäder
4e0f569b26 widget: Union clip with allocation and box shadow size 2017-07-19 21:27:11 -04:00
Timm Bäder
a1b2dc6e05 switch: Remove gadget 2017-07-19 21:27:11 -04:00
Timm Bäder
4c6cb2d461 listbox: Remove gadgets 2017-07-19 21:27:11 -04:00
Timm Bäder
bcbcff5db9 widget: Pass content allocation to size-allocate vfunc 2017-07-19 21:27:11 -04:00
Timm Bäder
bced18b3c5 headerbar: Remove gadget
both drawing and sizing are done through GtkWidget now.
2017-07-19 21:27:11 -04:00
Timm Bäder
3a64ef42df sizerequest: Fix min size with widget margins 2017-07-19 21:27:11 -04:00
Timm Bäder
ba58c796b0 sizerequest: Stop checking orientation in query_size_for_orientation
Since we have ->measure now, we can implement this code more elegantly.
2017-07-19 21:27:11 -04:00
Timm Bäder
4d7768d5e8 sizerequest: Remove for_size parameter from push_recursion_check
It's not needed anymore after also fixing the warning message to not
mention the old get_preferred* functions.
2017-07-19 21:27:11 -04:00
Timm Bäder
b0c7a876a9 sizerequest: Make sure widget sizes stay positive
They can otherwise become negative, e.g. when large negative css
margins are applied.
2017-07-19 21:27:11 -04:00
Timm Bäder
6d34a19cdd sizerequest: Make size groups "work"
We have to query the css margin/border/padding values for all widgets
in the size group.
2017-07-19 21:27:11 -04:00
Timm Bäder
78bb0ed2cb sizerequest: Move css handling to gtk_widget_measure
We need to adjust the passed for_size to fit into the content allocation
of the widget.
That also means that we can't call gtk_widget_measure(widget) inside
gtk_widget_measure(widget) since now the for_size will be adjusted
twice.
2017-07-19 21:27:11 -04:00
Timm Bäder
5066308e86 sizerequest: Honor css min size 2017-07-19 21:27:11 -04:00
Timm Bäder
05a83b74b0 sizerequest: Fix indentation 2017-07-19 21:27:11 -04:00
Timm Bäder
52f8fd8242 scrolledwindow: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
dc9ac96b39 paned: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
25198eb00a separator: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
5504dc6684 stack: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
c804e8a4c5 combobox: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
8aefa09765 notebook: Fix crash when dragging a tab
gtk_gesture_get_last_event can return NULL, so guard against that.
2017-07-19 21:27:11 -04:00
Timm Bäder
c9d421eff3 toolbar: Remove css box rendering 2017-07-19 21:27:11 -04:00
Timm Bäder
2b0bfa5909 actionbar: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
74a51cb5b1 Remove now useless snapshot implementations 2017-07-19 21:27:11 -04:00
Timm Bäder
8761d4d609 widget: Add default snapshot implementation
gtk_widget_snapshot will snapshot the css box, the default snapshot
vfunc now gtk_widget_snapshot_child's all child widgets.
2017-07-19 21:27:11 -04:00
Timm Bäder
ef0ab1fb00 container: Remove snapshot and draw implementations 2017-07-19 21:27:11 -04:00
Timm Bäder
1425bfa95d bbox: Remove css box drawing
Whether we are in expand mode or not shouldn't really make a difference
for rendering anyway.
2017-07-19 21:27:11 -04:00
Timm Bäder
6e7f135f62 image: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
90537a5e04 frame: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
706b0722d4 switch: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
72c611f7b1 flowbox: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
d21e931b64 listbox: Remove css box drawing 2017-07-19 21:27:11 -04:00
Timm Bäder
a9b1c04c3f headerbar: Remove css box drawing 2017-07-19 21:27:10 -04:00
Timm Bäder
442d084a2a widget: Draw focus outline 2017-07-19 21:27:10 -04:00
Timm Bäder
2b5458ccfa progressbar: Remove css box drawing 2017-07-19 21:27:10 -04:00
Timm Bäder
06950bcf8a label: Remove css box drawing 2017-07-19 21:27:10 -04:00
Timm Bäder
5a575c3594 gtkgrid: Remove css box drawing 2017-07-19 21:27:10 -04:00
Timm Bäder
f73616ba47 gizmo: Remove css box drawing 2017-07-19 21:27:10 -04:00
Timm Bäder
7b7e85d618 box: Remove css box drawing 2017-07-19 21:27:10 -04:00
Timm Bäder
4b75b20c34 Widget: Disable css box drawing for GtkWindow
Until we know how we solve that.
2017-07-19 21:27:10 -04:00
Timm Bäder
ca94c680cc button: Remove css box drawing 2017-07-19 21:27:10 -04:00
Timm Bäder
7656bd9bc3 widget: Draw background and border for every widget 2017-07-19 21:27:10 -04:00
Matthias Clasen
6c7e8ecb1f Bump version 2017-07-19 21:18:57 -04:00
Matthias Clasen
29e8a07ddd Avoid compiler warnings
Initialize these variables, so gcc doesn't complain.
2017-07-19 20:45:52 -04:00
Matthias Clasen
de3b244fa1 3.91.1 2017-07-19 15:46:32 -04:00
Matthias Clasen
f0f5c67c9d a11y tests: Update expected results
The license urls in the about dialog changed.
2017-07-19 15:46:32 -04:00
Carlos Garnacho
b151b1ba9e testsuite: Adjust gestures tests to gtk4 event delivery
Events that get to gtk_main_do_event() have the toplevel GdkWindow
as event->any.window. Also, ensure that coordinates fall within
sensible places of the windows, since those might have shadows,
headerbars and whatnot on wayland.
2017-07-19 21:05:19 +02:00
Carlos Garnacho
9de7c9f595 gtkwindow: Free pointer foci on dispose
That means the whole hierarchy is getting destroyed, leaving those
behind incurs not only in a leak, but also on weak refs (and unintended
repick) to happen in the wrong moment.
2017-07-19 18:16:18 +02:00
Carlos Garnacho
4772fc2d42 gtkwindow: Do not leak GtkPointerFocus
gtk_window_add_pointer_focus() increments the refcount, which means
the caller should be dropping its own.
2017-07-19 18:16:18 +02:00
John Ralls
a72c735b74 Fix compile error in imquartz.c due to API change in GtkIMContext. 2017-07-18 18:44:21 -07:00
John Ralls
fb70bfb69b Fix MacOS compiler warnings. 2017-07-18 18:44:21 -07:00
John Ralls
ead480bc39 Copy gtk_clipboard_get_default implementation to gtkclipboard-quartz.c
Fixes bug 784323.
2017-07-18 18:44:21 -07:00
Philip Chimento
187e652adb quartz: Implement gtk_clipboard_get_selection
This function is trivial and can be copied from the X11 implementation.

https://bugzilla.gnome.org/show_bug.cgi?id=772281
2017-07-18 18:44:21 -07:00
Emmanuele Bassi
1b60361b4a meson: Add missing source file
The newly added gtkfilechoosererrorstack.c source needs to be included
in the Meson build as well as the Autotools one.
2017-07-18 22:50:57 +01:00
Piotr Drąg
f28c418ad5 Update POTFILES.in 2017-07-18 22:03:29 +02:00
Timm Bäder
3505e0d6e7 filechooserwidget: Add GtkFileChooserErrorStack
Showing all the different errors and warnings when renaming and creating
files/folders without potentially resizing popovers on every keystroke
requires us to know the size of the error messages beforehand, so pack
all of the possible error messages and warnings in labels and those into
a stack. This way we can also neatly crossfade transition between them.

https://bugzilla.gnome.org/show_bug.cgi?id=775636
2017-07-18 15:11:26 -04:00
Timm Bäder
20d47e2a6c filechooserwidget: Let the rename entry hexpand
This makes a difference with other locals where error messages are
longer than the standard width of entry+spacing+button.

https://bugzilla.gnome.org/show_bug.cgi?id=775636
2017-07-18 15:11:26 -04:00
Iñaki García Etxebarria
3830083213 Add nullable return annotation to gtk_text_mark_get_name
https://bugzilla.gnome.org/show_bug.cgi?id=781936
2017-07-18 15:10:31 -04:00
Iñaki García Etxebarria
59a22b3d7e Add nullable return annotation to gtk_notebook_get_tab_label
https://bugzilla.gnome.org/show_bug.cgi?id=781935
2017-07-18 15:07:49 -04:00
Daniel Aleksandersen
eb3bc251d5 Update the URLs of known licenses to HTTPS
Use HTTPS by default for security/privacy. Avoids slow redirects.

https://bugzilla.gnome.org/show_bug.cgi?id=766517
2017-07-18 14:35:22 -04:00
Arun Raghavan
4b1853b32f gtkapplication: Mark gtk_application_get_active_window() as nullable
https://bugzilla.gnome.org/show_bug.cgi?id=784888
2017-07-18 14:03:59 -04:00
Piotr Drąg
cddce5a023 Update POTFILES.in 2017-07-18 19:43:09 +02:00
Matthias Clasen
d4b1cc3f56 Add gtkfilechoosernativequart.c to meson build
We have two build systems now, for good measure.
2017-07-18 13:35:21 -04:00
Tom Schoonjans
0e7d6bb71e GtkFileChooserNativeWin32: add support for get_filter and set_filter
https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:45 -04:00
Tom Schoonjans
2139b7642b testgtk.c: native file chooser filter changes
Set the filter before showing the dialog
Afterwards, fetch the last active filter and display its name.

https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:44 -04:00
Tom Schoonjans
f10bfcc638 GtkFileChooserNativeQuartz: add support for get_filter and set_filter
https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:44 -04:00
Tom Schoonjans
946166e080 GtkFileChooserNative: documentation updated
https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:44 -04:00
Tom Schoonjans
a4775f8e92 GtkFileChooserNativeQuartz: add support for filters
Includes:
* Simple glob patterns (*.ext, *.*,...)
* MIME types
* pixbuf formats

https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:44 -04:00
Tom Schoonjans
55d139bc46 GtkFileChooserNativeQuartz: add partial support for extra widget
When the extra widget is a GtkLabel, then its text will be displayed as
a message in the NSSavePanel or NSOpenPanel

https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:44 -04:00
Tom Schoonjans
44e90c4dd3 GtkFileChooserNativeQuartz: add support for GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
Which is via NSOpenPanel, not NSSavePanel...

https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:44 -04:00
Tom Schoonjans
ff2c5e3820 GtkFilechooserNative: add macOS support
Based on the Win32 implementation, as well as the macOS file chooser
from
https://github.com/GNOME/gedit/blob/master/gedit/gedit-file-chooser-dialog-osx.[ch]
Not fully tested yet, but working properly so far.
TODO: filter support, extra widget (label), documentation...

https://bugzilla.gnome.org/show_bug.cgi?id=784723
2017-07-18 13:30:44 -04:00
Emmanuele Bassi
a9a25e2e84 Drop gtk-doc trigraphs on GtkTextView enumeration
The glib-mkenums tool does not recognise these gtk-doc annotations.
2017-07-16 12:33:24 +01:00
Jordi Mas
34de998c38 Fixes to Catalan translation 2017-07-15 09:37:29 +02:00
Bastien Nocera
eb338feff9 image: Warn when attempting to load pixdata GResources
GdkPixdata is deprecated. Warn when the application tries to load
pixdata embedded resources. The application developer will have to
remove the "to-pixdata" keyword from the GResource definition file.

https://bugzilla.gnome.org/show_bug.cgi?id=781583
2017-07-12 14:54:02 +02:00
Emmanuele Bassi
ce861bc430 Use newer glib-genmarshal to simplify build rules
The glib-genmarshal tool from GLib 2.54 added various command line
arguments that allow us to remove a bunch of as hoc manipulations of
the generated marshaller source files. The marshal generator tool can
now include an header in the source, and undef the G_ENABLE_DEBUG
pre-processor symbol for us. It can also generate the prototypes of the
marshallers in the C source, and avoid a 'missing-prototypes' compiler
warning.
2017-07-11 11:47:38 +01:00
Yosef Or Boczko
013392b530 Updated Hebrew translation 2017-07-10 12:52:20 +03:00
Yosef Or Boczko
676a0123f6 Updated Hebrew translation 2017-07-10 12:50:11 +03:00
Matthias Clasen
d9e38198c7 Avoid a race in the print portal
Same as the previous commit; use the new predictable request
object path to connect to the Response signal early.
2017-07-07 12:03:55 -04:00
Matthias Clasen
388078ba88 Avoid a race in the file chooser portal
Use the new predictable request object path and connect
to the Response signal before issuing the portal call.
This avoids a race that is pretty unlikely to hit in
the filechooser case.
2017-07-07 12:03:55 -04:00
Daniel Boles
29ff3c072c label: Remove extra quote in code example 2017-07-07 08:15:05 +01:00
Daniel Boles
d04baeba37 GdkRGBA: Fix misspelt parameter names in docs 2017-07-06 14:03:08 +01:00
Daniel Boles
ede0f25d3b GdkRGBA: Fix typo precentage => percentage 2017-07-06 14:00:35 +01:00
Jason Gerecke
07f4139004 x11: Assign GDK_SOURCE_TABLET_PAD when necessary
Wacom tablets often have a "pad" device which houses multiple buttons. At
present, these devices are incorrectly marked as GDK_SOURCE_PEN which can
cause problems for some software.

https://bugzilla.gnome.org/show_bug.cgi?id=782040
2017-06-30 20:46:01 +02:00
Daniel Boles
d7b175a3fb css-overview: Don’t document deleted pseudoclasses
Commit b52966a318 stopped the parser from
handling various deprecated pseudoclasses, which were aliases of others,
but it did not update the documentation to reflect that they were gone.
2017-06-22 23:56:44 +01:00
Daniel Boles
6eb58fa67b css-overview: Fix typo “{with=>which} is disabled” 2017-06-22 20:40:06 +01:00
Baurzhan Muftakhidinov
303960eec6 Update Kazakh translation 2017-06-22 14:32:27 +00:00
Marek Cernocky
5da227664f Updated Czech translation 2017-06-20 14:33:39 +02:00
Daniel Mustieles
fd9beb2292 Updated Spanish translation 2017-06-19 17:36:06 +02:00
Carlos Garnacho
6781d2109d gdk: Set vid/pid on wayland tablets
This was missed so far... Use %.4x format, in order to behave just
the same than X11.
2017-06-16 19:38:04 +02:00
Will Thompson
176bc32950 headerbar: fix "widow" typo in docs 2017-06-15 15:53:18 +01:00
Kjartan Maraas
2e79d88377 Updated Norwegian bokmål translation 2017-06-14 07:48:33 +02:00
Debarshi Ray
2b48acbdf8 GtkActionHelper: Remove unnecessary NULL check
This NULL check has existed since commit 652f16dd98, when
GtkActionHelper was first introduced, but so has the assertion at the
top to ensure the validity of 'widget'.

https://bugzilla.gnome.org/show_bug.cgi?id=783587
2017-06-13 21:59:36 +02:00
Debarshi Ray
33b3985440 GtkActionHelper: Allow a NULL action-name to unset the previous GAction
https://bugzilla.gnome.org/show_bug.cgi?id=783587
2017-06-13 21:59:36 +02:00
Matthias Clasen
1e47b9ea67 file chooser: Don't pass NULL as title to the portal
This causes critical warnings.
2017-06-13 13:11:59 -04:00
Chun-wei Fan
d15712fc9b gtk/Makefile.am: Fix 'make dist'
We don't have gtkcenterboxprivate.h anymore, as it became a public
header...
2017-06-12 18:14:57 +08:00
Piotr Drąg
3f39dc20ae Update POTFILES.in 2017-06-11 16:57:47 +02:00
Matthias Clasen
77f34d01ad label: Provide a baseline in all cases
The label measuring code was only determining baselines
when the label was set to wrap, which does not seem right.
Non-wrapping labels have a meaningful baseline as well,
report it back.
2017-06-11 10:35:06 -04:00
Matthias Clasen
114f23cec7 center box: Take baseline-position fully into account
We need to take baseline-position into account during measure
as well.
2017-06-10 14:45:10 -04:00
Fabio Tomat
67bdaf8007 Update Friulian translation 2017-06-10 16:07:52 +00:00
Fabio Tomat
0e6735b83b Update Friulian translation 2017-06-10 13:23:50 +00:00
Matthias Clasen
f135b2527f center box: complete the baseline support
When there is no externally allocated baseline, we should
do the same thing that GtkBox does, and determine one from
the children that want baseline alignment.

This commit adds a GtkCenterBox::baseline-position property
with setters and getters.
2017-06-10 09:14:16 -04:00
Matthias Clasen
8316ec85f5 center box: Fix size allocation
This missing pair of parens was causing expanding children
to overlap.
2017-06-10 07:53:06 -04:00
Matthias Clasen
389535c572 center box: Drop a useless line
This is just a leftover that has no effect whatsoever.
2017-06-10 07:53:06 -04:00
Fabio Tomat
d890b93d2c Update Friulian translation 2017-06-10 09:58:18 +00:00
Fabio Tomat
572b90cbdd Update Friulian translation 2017-06-10 09:43:40 +00:00
Fabio Tomat
5f4c3077f0 Update Friulian translation 2017-06-09 07:51:06 +00:00
Fabio Tomat
d08781e205 Update Friulian translation 2017-06-08 22:39:28 +00:00
Robert Ancell
7b8ea9af55 icon-theme: Show filename attempted when icon fails to load 2017-06-09 09:24:02 +12:00
Robert Ancell
82a4e830a3 iconhelper: Show error if fail to load placeholder icon 2017-06-09 09:24:02 +12:00
Matthias Clasen
86ac88e0be Add some translator comments
These were requested in
https://bugzilla.gnome.org/show_bug.cgi?id=783552
2017-06-08 15:10:32 -04:00
Fabio Tomat
6decd3bcfa Update Friulian translation 2017-06-08 14:48:47 +00:00
Fabio Tomat
d901787577 Update Friulian translation 2017-06-08 11:44:09 +00:00
Felipe Borges
322ba75e45 printunixdialog: Update collate icon as entry changes
By relying on GtkSpinButton default activation behavior, the
collate icon doesn't get updated when a new number is typed
in the copies spin button.

https://bugzilla.gnome.org/show_bug.cgi?id=759308
2017-06-07 14:28:26 +02:00
Fabio Tomat
d84b63df02 Update Friulian translation 2017-06-07 10:35:28 +00:00
Fabio Tomat
62bfe20928 Update Friulian translation 2017-06-06 22:42:06 +00:00
Kjell Ahlstedt
1b697fd7c2 widget: Fix gtk_widget_insert_after/before() docs
Add beginning double asterisks and function names. Correct the parameter
names (next/previous_child -> next/previous_sibling). Make the documentation
of the two functions more similar.

https://bugzilla.gnome.org/show_bug.cgi?id=783445
2017-06-06 14:57:52 +02:00
Matthias Clasen
bffbfde10a Install gtkcenterbox.h 2017-06-05 21:09:30 -04:00
Chun-wei Fan
ac5f7d028f modules/input/gtkimcontextime.c: Move to set_client_widget
The imcontext internals have been changed to use set_client_widget
instead of set_client_window in order to remove API dependency on
GdkWindow.  Update the Windows IME support so that the code will
continue to build and work.

https://bugzilla.gnome.org/show_bug.cgi?id=773299
2017-06-06 00:17:40 +08:00
Chun-wei Fan
77e1d0c0c9 gdk/gdkvulkancontext.c: Fix 32-bit Windows builds
The callback function that is used by VkDebugReportCallbackCreateInfoEXT
is decorated with VKAPI_CALL (which is __stdcall on Windows).  This is
not detected on x64 Windows as __stdcall is not really meaningful on x64
Windows, and VKAPI_CALL expands to nothing on non-Windows.

As __stdcall functions are treated differently on 32-bit Windows, the
32-bit compiler does require that the function be declared as __stdcall
so that things will compile, link and run properly.

https://bugzilla.gnome.org/show_bug.cgi?id-773299
2017-06-06 00:06:35 +08:00
Fabio Tomat
85bba774ea Update Friulian translation 2017-06-05 13:04:26 +00:00
Nelson Benítez León
0973ac416a gtktextdisplay: remove unused code
In render_para() function, which is called for every text line that
needs to be drawn.

https://bugzilla.gnome.org/show_bug.cgi?id=783397
2017-06-05 17:47:55 +05:00
Matthias Clasen
5e69fe17ae center box: Add more documentation 2017-06-04 21:48:41 -04:00
Matthias Clasen
23f870d0cd Add a simple center box test
Just a simple use of this widget.
2017-06-04 21:40:20 -04:00
Matthias Clasen
c35604cfcb center box: add baseline support
This is copied more or less directly from GtkBoxGadget.
2017-06-04 21:40:20 -04:00
Matthias Clasen
f8737a6d8a center box : implement GtkOrientable
This is generally expected of containers where it makes sense.
2017-06-04 21:40:20 -04:00
Matthias Clasen
141e053e87 center box: support height-for-width
Implement request modes fully.
2017-06-04 21:21:00 -04:00
Matthias Clasen
42921750ff center box: Support expand property
We expand the center child first, but only as far
as we can keep it centered.
2017-06-04 21:21:00 -04:00
Matthias Clasen
60cd5b9b4c center box: implement GtkBuildable
Make it possible to fill the slots by using the
type attribute on child nodes. This is necessary
since GtkCenterBox does not derive from GtkContainer.
2017-06-04 21:21:00 -04:00
Matthias Clasen
b4cb05ace9 center box: implement natural size and rtl flipping
We prefer to give the center widget its natural size,
and we center it as long as possible.
2017-06-04 21:20:57 -04:00
Matthias Clasen
f8059f3040 center box: handle missing start or end widgets
Any slot may be unfilled, not just the center one.
2017-06-04 21:20:33 -04:00
Matthias Clasen
e936a35d66 Make GtkCenterBox public
It provides functionality that GtkBox used to have,
and is generally useful.
2017-06-04 21:20:27 -04:00
Fabio Tomat
e32f15be4f Update Friulian translation 2017-06-04 12:10:53 +00:00
Matthias Clasen
3aef221cc3 dist icon.list
Otherwise things will not work in a release tarball.
2017-06-02 22:30:45 -04:00
Matthias Clasen
ca95adbb4c icon-browser: Add a few icons
These have appeared recently.
2017-06-02 22:30:36 -04:00
Matthias Clasen
cc9feb5a07 icon browser: Make icons a bit larger
Use 48x48 in the list, instead of 32x32. We have the space.
2017-06-02 22:30:05 -04:00
Matthias Clasen
04fbef7f1e icon browser: Add a 'copy to clipboard' button
This makes it more obvious how to use the icon.
2017-06-02 22:29:21 -04:00
Matthias Clasen
7a3984ee62 icon browser: put icons as data
Instead of hardcoding all the add_icon calls,
read the icon list from a keyfile, for easier
extensibility.
2017-06-02 22:29:14 -04:00
Dan Torop
a23ad61a25 wayland: selectively cancel key repeat on key release
Under Wayland, when multiple keys are pressed and the user releases a
key, key repeat should continue unless the key released is the one
currently repeating.

In the case of:

- key1 press
- key1 repeat
- key2 press -> key1 repeat stopped
- key2 repeat
- key2 release

The behavior should be to cancel keyboard repeat, though key1 is still
held down. This is consistent with prior X11/XWayland behavior.

The following also must work:

- key1 press
- key2 press
- key2 release
- key2 press
- key1 release
- key2 should continue to repeat

The fix for bug #778019 should continue to work:

- key1 press
- key1 repeat
- key2 press -> key1 repeat stopped
- key1 release
- key2 should repeat

The choice to change the counter nkeys to the flag repeat_active
helps to solve the second test case.

https://bugzilla.gnome.org/show_bug.cgi?id=781285
2017-06-02 19:13:03 +02:00
Olivier Fourdan
24f9d29093 wayland: fix xdg_surface test in move/resize drag
begin_resize_drag() and begin_move_drag() check for xdg_surface being
not null, but those apply on xdg_toplevel so they should check for
xdg_toplevel being non-null instead.

https://bugzilla.gnome.org/show_bug.cgi?id=781945
2017-06-02 16:19:00 +02:00
Olivier Fourdan
08aade4b7c wayland: check parent surface for subsurface
When an event is received while a tooltip is showing, the GtkTooltip's
event handling code can end up calling gdk_window_set_transient_for()
from gtk_tooltip_set_last_window().

The Wayland GDK backend will try to automatically create a subsurface
in gdk_wayland_window_set_transient_for() but if the parent surface is
gone meanwhile, this will will cause a crash when trying to create a
subsurface from a parent with a null surface.

Checking for the parent is not sufficient, we ought to check for the
parent surface as well to avoid the crash.

https://bugzilla.gnome.org/show_bug.cgi?id=782283
2017-06-02 15:43:06 +02:00
Olivier Fourdan
a84fc38784 wayland: Do not map toplevel utility as popup
Applications can specify the type hint as utility even on toplevel
windows.

When that toplevel is also marked as a transient for another window,
GDK Wayland backend would translate that as an xdg_popup which is not
appropriate.

While utility temp windows should remain mapped as subsurfaces (such as
the ones used by treeviews), regular windows should not translate as
neither a subsurface nor an xdg_popup.

https://bugzilla.gnome.org/show_bug.cgi?id=781945
2017-06-02 15:15:45 +02:00
Christoph Reiter
a1dc9e4660 gtkfilechoosernativewin32: Fix support for non-ASCII paths
The code used SIGDN_URL to get an URL for the selected item, but Windows URLs
are a mix of unicode and percent encoded characters in the locale encoding
and not something GFile can understand. The result is a garbage file
path.

Instead use SIGDN_FILESYSPATH to get a real file path if available.

Also checks the return value of g_utf16_to_utf8 because file paths on
Windows can contain lone surrogates which would make the conversion fail.

https://bugzilla.gnome.org/show_bug.cgi?id=783347
2017-06-02 13:22:36 +02:00
Emmanuele Bassi
ee408d5f75 meson: Rebuild the SCSS-based themes if sassc is available
If we have sassc installed then we want to rebuild the themes that use
SCSS whenever one of their dependencies change.
2017-06-01 14:56:32 +01:00
Daniel Boles
6f71c543e8 Adwaita: Add missing rule for fullscreen headerbar
Another selector forces round corners for headerbars in a stack, and it
has higher priority than the selector covering the non-stack case from
commit 796f9b5bfb. Totem’s MainToolbar
happens to be in a stack, and we should maintain symmetry here anyway.

So, as window classes .maximized and .tiled are excluded from this other
selector, the newly handled .fullscreen case must be excluded here also.

https://bugzilla.gnome.org/show_bug.cgi?id=770513
2017-05-31 19:02:58 +01:00
Daniel Boles
513b56ce0f HighContrast: Regenerate CSS files with sassc 2017-05-31 18:47:57 +01:00
Daniel Boles
dcdd31e6f3 HighContrast: Update parse-sass.sh; remove Gemfile
Make parse-sass.sh use sassc instead of the old Ruby method.
2017-05-31 18:46:57 +01:00
Daniel Boles
796f9b5bfb themes: Square corners on fullscreen win headerbar
Totem uses a fullscreen window with a headerbar at the top, and without
this change, that headerbar has rounded corners, which look different
from a maximised window and let video content show through beneath.

https://bugzilla.gnome.org/show_bug.cgi?id=770513
2017-05-31 08:16:51 +01:00
Daniel Boles
fc96fce462 HighContrast: Restore files to regenerate CSS
I think parse-sass.sh needs updated to match what Adwaita does now, but
for now, this is sufficient to let us regenerate HighContrast again.
2017-05-31 08:16:35 +01:00
Rico Tzschichholz
a4e80efee7 gdk/gtk: Fix Since tags for 3.92 symbols
In addition to 406db15066
2017-05-30 15:10:25 +02:00
Debarshi Ray
385a46b5c0 wayland: Don't warn if the display is lost, skip exit handlers
There is no need to have every application log a warning when the
Wayland display server goes away, and we are using _exit instead of
exit elsewhere.

This is also what the X11 backend does (see gdk_x_io_error).

https://bugzilla.gnome.org/show_bug.cgi?id=745289
2017-05-30 09:15:57 +02:00
Daniel Boles
406db15066 gdk/gtk: Fix more AVAILABLE_IN annotations to 3_92 2017-05-28 14:20:19 +01:00
Daniel Boles
b6e13847d5 gdkevents.h: Fix version annotations on new funcs 2017-05-27 15:25:35 +01:00
Carlos Garnacho
b894c35008 gtk: Make GtkPointerFocus refcounted
In order to make it really sure the GtkPointerFocus is valid while being
removed from a GtkWindow.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
690eb8ede6 gtkwidget: Lookup the event target when cancelling GdkEventSequences
We were getting the toplevel most often here, so the gestures weren't
properly cleaned up.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
0d7fe2ec09 gtk: Check implicit grab status before sending crossing events
As we now refrain from sending the crossing events if there's an
implicit grab, those events must be sent on button release when
the implicit grab is broken.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
f5fde52d61 gtk: Refactor crossing event synthesization into a separate function
This is now called outside update_pointer_focus_state() with the events
that actually matter (i.e. pointer ones, so no sequence == NULL checks)
2017-05-25 16:25:59 +02:00
Carlos Garnacho
e892e20841 gtk: Rework pointer cursor selection
Check the grab widget (both explicit and implicit) and check for a cursor
from the target widget up to this grab widget. If the target widget is
outside the grab widget, only the grab wigdet's cursor will be checked.

This also means that we have to ensure the cursor is updated on button
releases, as an implicit grab being deactivated must trigger a cursor
lookup from the target widget.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ace686dba9 gtktreeview: Fix invalidation coordinates
We must account for the widget allocation now that there is no view_window.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
9f2e7edc3b gtkiconview: Fix invalidation coordinates
We must account for the widget allocation now that there is no view_window.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
f8bc56dd55 gtkgesture: Consume button release/touch end events if gesture was claimed
In these situations we must perform the "is it claimed" check before removing
the (touch)point, as doing so when the gesture is empty will be too late if
the gesture actually claimed input.
2017-05-25 16:25:59 +02:00
Timm Bäder
8371b6b857 main: Automatically (un)set PRELIGHT state on widgets 2017-05-25 16:25:59 +02:00
Timm Bäder
f6e0850ff7 Gesture: Remove window property completely
These are just leftovers, it's already gone from public API and the
_{set,get}_property implementations.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
b62b33c1d9 gtk: Fix event delivery on GTK_PHASE_TARGET controllers
Look up the event target, not the "event widget" which is based on the
event window, and thus points to the toplevel.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
3a15c8241e gdk: Remove synthetic crossing event emission due to geometry changes
This just applied to child windows, but now GDK should just take care of
toplevels, which shall get crossing events from the windowing when the right
conditions apply.

Removing this code fixes confused crossing state in widgets and messed up
window_under_pointer tracking (Which now is meant to be toplevels) when any
of the remaining child GdkWindows trigger these crossing events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
61dd925b32 gdk: Ensure to implicitly deactivate grabs when an impl window is hidden
For some reason this wasn't done on windows with an impl, but it totally should.
Probably hidden by grabs in menus and somesuch being done on a child window.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ee894903c7 gtkpopover: Use event coordinates right away to detect clicks outside.
There's no need anymore to translate coordinates, the event already contains
popover-relative ones.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
47e505781e gtkwindow: Implement ::pick to extend picking to popovers.
This makes interaction possible with popovers again.
2017-05-25 16:25:59 +02:00
Timm Bäder
eef33d34d4 widget: Make sure we're not calling _get_parent on NULL
We already issue the first _get_parent call before even entering that
loop, so make sure `parent` is not NULL. This happens when event_widget
is already a toplevel, and this change fixes row-dragging in treeviews.
2017-05-25 16:25:59 +02:00
Timm Bäder
34fdc51392 Constify GdkEvent parameters in gtk_get_event_widget and _event_target 2017-05-25 16:25:59 +02:00
Timm Bäder
19174d8d94 flowbox: Fix motion notify handler
Same story as in GtkListBox.
2017-05-25 16:25:59 +02:00
Timm Bäder
2ad2ecad44 flowbox: Fix child item selection 2017-05-25 16:25:59 +02:00
Timm Bäder
dd836fff35 flowbox: Fix child item allocation 2017-05-25 16:25:59 +02:00
Timm Bäder
030b96cb49 scrolledwindow: Avoid critical when removing source
Make sure indicator->conceil_timer is actually set before trying to
remove it.
2017-05-25 16:25:59 +02:00
Timm Bäder
084b356d1e testlist: Fix custom css 2017-05-25 16:25:59 +02:00
Timm Bäder
e54d8a6114 scrolledwindow: Calculate indicator coords relative to scrolledwindow
The event coordinates we get are relative to the scrolledwindow
coordinates.
2017-05-25 16:25:59 +02:00
Timm Bäder
782477188a scrolledwindow: Stop checking event->detail in leave-notify
This is obsolete and resulted in sometimes stuck .hovering style classes
on scrollbars.
2017-05-25 16:25:59 +02:00
Timm Bäder
5ae9ca79e4 linkbutton: Fix hand cursor when hovering
Use the new gtk_widget_set_cursor instead of setting it on the
GdkWindow.
2017-05-25 16:25:59 +02:00
Timm Bäder
3e44a3920a listbox: Fix row hovering
Drop the in_widget flag since motion events the listbox receives are
always inside the listbox. Also drop the manual coordinate translation
code using GdkWindows.
2017-05-25 16:25:59 +02:00
Timm Bäder
a0016758a8 widget: Copy event in gtk_widget_event and _captured_event
To ensure that we never translate the coordinates to widget coordinates
twice.
2017-05-25 16:25:59 +02:00
Timm Bäder
c83b8d17ff meson: Add gtkpointerfocus.c to sources 2017-05-25 16:25:59 +02:00
Timm Bäder
f5e8d7a4e2 window: Hide titlebox when undecorated
We don't draw or size-allocate the titlebar when the window is
fullscreen or undecorated, so reflect this by setting it to
!child_visible. This can happen when changing the value of the decorated
property while the window is shown.
2017-05-25 16:25:59 +02:00
Timm Bäder
81cdc8713c combobox: Only react to UP/DOWN scroll events
The old else block scrolled down for everything except GDK_SCROLL_UP
scroll events, e.g. for smooth scroll events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
40ab7e1c95 gtkmenu*: Simplify event handling
Instead of delegating on the parent shell of a menu item/shell on a variety
of situations, Simplify event handling so:
1) Menu item selection is handled entirely on GtkMenuItem through crossing
   events.
2) The deepmost menu shell handles clicks inside and outside of it.

This avoids the rather hard to follow gtk_widget_event() calls going on all
throughout the handling of crossing and button events, and makes menus work
again.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
33c5f3c193 gtkmain: Add API to get the target of a GdkEvent
This can be used on grabbing situations to determine the target of
the event. This mainly matters for GtkMenu.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
da56fae5df gtkmain: Ensure there is a current event handling crossing events
The "current event" will be the real one that is triggering the crossing
notifications, not the synthesized events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
03a63204c1 gtkmain: Ignore GDK_CROSSING_GRAB/UNGRAB crossing events for picking purposes
Especially with owner_events=TRUE, this doesn't mean anything for picking, as
events will be reported as usual inside the application.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
65de0ebea3 gdk: Make it possible to attach user data to GdkEvents
As event->any.window is the toplevel, this is not useful anymore to
determine the window/widget that is the target for this event. Add
helper functions to attach user data to GdkEvents so the target
widget can be stored on the gtk/ side.

These calls should be made private with the rest of GdkEvent related
API.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
5483b9db2d gtkmain: Avoid doubly propagation of enter/leave events from windowing
Crossing events are already generated when picking the new pointer position,
so we don't have to propagate the windowing crossing event as-is.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
f9924b7e3e gtknotebook: Drop drag_window
It is not necessary anymore to implement tab DnD, since we just render
it on top.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
2c7102b557 gtkiconview: Remove view GdkWindow
It's not necessary anymore for clipping nor receiving events. So just
remove it. The event handling code was expecting events in bin_window
coordinates, and have been updated to relying on widget-relative coords.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
2f6c4ef68d gtkviewport: Remove view window
It is not really necessary for clipping nor receiving events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
547370651b gtkrevealer: Remove view window
It's not necessary anymore for either clipping or event delivery
2017-05-25 16:25:59 +02:00
Carlos Garnacho
94094611bc gtkpaned: Remove per-child windows
Those are no longer necessary for clipping nor receiving events, so just
remove them.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ae43ca7e49 gtklayout: Remove widget window
It can be entirely replaced by a clip allocation on the widget.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
fe40abc636 gtkoverlay: Remove per-child windows
They are no longer necessary to do child positioning nor input
handling.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
e2c38ddc22 gtkwidget: Add private set_pass_through() call
We could eventually support pointer-event in CSS here, in the mean
time add this call to replace the GdkWindow API.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
6c47938b00 gtktreeview: Remove header window
It is no longer necessary to overlay the column headers above the
treeview.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
cfd5a76ece gtktreeview: Remove widget window
It can be entirely replaced by setting a proper clip rectangle.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ea4ee876ec gtkstack: Remove view window
This widget already sets a clip area, so the view window can be safely
removed.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
e342f90a99 gtktoolpalette: Remove child window
This is not necessary for rendering anymore, as the clip is set by the
parent scrolledwindow. It's not necessary either for receiving input
events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
57d7c34d03 gtkflowbox: Remove child window
This widget correctly sets up a clip, so it is not necessary neither
for rendering nor for receiving input events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
a595f92b7b gtkwidget: Visually update cursors inside widget when changing cursor 2017-05-25 16:25:59 +02:00
Carlos Garnacho
fa04bf6238 gtkmain: Use window-internal API to update pointer cursors 2017-05-25 16:25:59 +02:00
Carlos Garnacho
599344d428 gtkwindow: Add private API to update pointer cursors 2017-05-25 16:25:59 +02:00
Carlos Garnacho
87c7ca910c gtkscrolledwindows: Remove child windows
Both for the view (compensated by widget clip) and the scrollbar
indicators (just not needed anymore).
2017-05-25 16:25:59 +02:00
Carlos Garnacho
8731ca6ca5 gtkexpander: Remove event window
Detect presses/releases inside the label area instead.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
1858f310aa gtkwindow: Implement window resizing sans-GdkWindow
We can just replace window comparisons with coordinate matching, the
cursor corresponding to edges is now set in a capture-phase motion
handler, as cursors aren't set on GdkWindows anymore.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
d9d0c56eb7 gtktoolitem: Remove gtk_tool_item_set_use_drag_window()
This API call is not necessary anymore, since it's no longer necessary
to receive events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
072a13d0b7 gtkswitch: Remove event window
It's not necessary anymore to receive input events. The pan gesture has
been set on the capture phase as the child widgets may capture during
bubbling.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ef1e900a53 gtkmenuitem: Remove input window
It's not necessary anymore to receive events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ee13d44622 gtkglarea: Remove input window
It's not necessary to receive events anymore.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
bee6148399 gtkseparatortoolitem: Remove event window
It's not necessary. It wasn't either before, as this widget handles no
events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
de3e20107a gtkcolorswatch: Remove input window
It's not necessary to receive events anymore.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
8402174d6b gtkcolorplane: Remove event window
It is not necessary anymore to receive events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
c14e6a5119 gtkrange: Remove event window
This is not necessary anymore to receive input events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
28b1c9cc3d gtkpathbar: Remove event window
This is not necessary anymore to receive scroll events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
b7e6bb2241 gtktoolbar: Remove input window
This is not necessary to receive events anymore.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
d6023e9d45 label: Remove selection window
It's no longer needed to receive events while the label is selectable.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
3dd8a4191a gtknotebook: Remove event window on top of tabs
No longer needed.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
95bf1379c0 gtkwindow: Ignore implicit grabs going away if there is no focus
There should be no circumstances where an implicit grab is requested but
no focus exists, there's however circumstances (like windowing grabs taking
input to a different window) where we might get implicit grabs being undone
when then new window didn't create a focus for the pointer itself.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
b7fee9f9d2 gtkwindow: Revoke implicit grabs when activating an explicit one
Only if they fall outside the grab widget, in that case the widget holding
the implicit grab won't be receiving events anymore, so we can just undo
it.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
eaa17b2548 gtkbutton: Make windowless
It is no longer necessary to receive events, so it's relatively straightforward
now to drop.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
a72404dd5a gtk: Mass delete all GtkWidget event mask API
We now rely on toplevels receiving and forwarding all the events
the windowing should be able to handle. Event masks are no longer a
way to determine whether an event is deliverable ot a widget.

Events will always be delivered in the three captured/target/bubbled
phases, widgets can now just attach GtkEventControllers and let those
handle the events.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
ef4f0e5336 gtkwidget: Make gtk_widget_event() Accept pointing events in root coordinates
This function will, at the last minute, ensure the event contains the right
widget-relative coordinates for the widget the event is being emitted to.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
02932bc406 gtkgesture: Drop GdkWindow checks
Those are now needless and wrong, as we get guarantees that handled
events will contain widget-relative coordinates. A side effect is
that these events are very possibly not explicitly sent to the
GdkWindow that implementations expect, any extra checks performed
through gtk_gesture_set_window() will be wrong, so the function has
been dropped entirely.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
2c9678c38f gtkexpander: Drop usage of gtk_gesture_set_window()
It's now meaningless since the gesture will receive the event despite
the input only window.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
f5e02f3a2a gtkcolorplane: Drop usage of gtk_gesture_set_window()
It's now meaningless since the widget will receive the event despite
the input window.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
99e200aa98 gtknotebook: Fix coordinate translation to happen on widget-relative coordinates
This makes notebooks happy again after changing event coordinates to always come in
the widget coordinate system.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
b01a9a6440 gtktextview: Drop GdkWindow checks on events
These are now wrong and prevent the code from running correctly.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
b20f04d18d gtktreeview: Drop gtk_gesture_set_window() API
It is now meaningless and wrong, since GdkWindows aren't used anymore
to determine the event target.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
ca07c11172 gtktextview: Set "text" pointer cursor
This is no longer set through the Gdkwindow, so use private GtkWidget
API.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
322ee63e0c gtkentry: Remove text_area window
And refurbish cursor management to be set on the GtkWidget. The
input window is not needed anymore to receive events either.

This is no longer set through the GdkWindow, so use the private
GtkWidget API.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
7c16bb93b5 gtkwidget: Add private cursor setter/getter
This should be eventually replaced by CSS cursors, but at the moment
it must be handled on the gtk/ side.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
d39afa6011 imcontext: Remove API dependency on GdkWindow
There is now a set_client_widget() to hint the IM about positioning
and whatnot.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
5836beee78 gtkbutton: Handle crossing events without the event window
The event shall no longer be "directed" to the event window, but the
widget. Getting a enter/leave event is enough now to know whether the
pointer is inside or outside the widget.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
23d2126729 gtkpointerfocus: Add methods to handle implicit grabs on widgets
Just a basic setter/getter, plus a method to obtain the right logical target
in the presence or absence of these.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
3dfab962fa gtk: Implement per-focus implicit grabs
Unlike GTK+ grabs which are global to all/one device, the implicit grab
is per focus, which means each may have implicit grabs on different or
the same widget.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
79e267a330 gtk: Implement cursor updates
As we don't obey GdkWindow cursors anymore, someone must set those.
Use the private Gtkwidget API at the moment.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
8f24df1c19 gtk: Update GtkPointerFocus targets on mapping/sensitivity changes
Those are situations that must cause foci on these widgets to repick
themselves.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
f57f48d61f gdkwindow: Drop csw-side event translation
Now that gtk_main_do_event() is able to handle pointing events in toplevel
coordinates, forward all of these as is. Just minimal handling is still done
on the gdk side for GDK grab accounting, and toplevel tracking for each
pointer.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
e25fcf983a gtk: Handle events with coordinates in toplevel-relative ones
Implement target finding per-pointer/touchpoint through GtkPointerFocus and
_gtk_toplevel_pick(). Focus changes are handled through the emission of
crossing events between the old target and the new one.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
17aa0ca76e gtkwindow: Add management functions for GtkPointerFocus instances
Each toplevel will keep its own tracking of the current ongoing foci,
add the plumbing that will allow to create/update/remove those as they
come and go.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
ba92dceab2 gtk: Introduce GtkPointerFocus
These objects (tied to a toplevel) track the focus of a pointer/touchpoint.
The info in these basically consists of current toplevel coordinates and the
current target widget.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
f50875f8d0 gtkwidget: Expose gtk_widget_common_ancestor()
This function will be useful in other places, such as determining the
widgets that must receive crossing events after pointer picking points
to another widget.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
799428aaea gdk: Add gdk_event_set_coords() method
A helper function basically for gtk+, so coordinates can be translated
in place depending on the widget it's being delivered to.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
53c297436d gtk: Add private _gtk_toplevel_pick() method
This function returns both the widget at the given toplevel coordinates,
and the translated x/y in widget relative coordinates.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
9c97bf0c02 GtkWidget: Add ::pick vmethod
The default implementation iterates through all children, so should suffice
for most widgets.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
fee289cd06 gdk: Add gdk_rectangle_contains_point() call
A little helper function for a somewhat common operation.
2017-05-25 16:25:58 +02:00
Debarshi Ray
28f8a27d65 wayland: Don't abort when preparing the source if connection is lost
Aborting the application makes it look like an application bug, when
it is the expected thing to do when the Wayland display server goes
way. eg., when the user logs out. The log level is also demoted to
avoid a storm of warnings in the log from all applications whenever
this happens.

This is also what the X11 backend does (see gdk_x_io_error).

https://bugzilla.gnome.org/show_bug.cgi?id=783047
2017-05-25 11:49:37 +02:00
Matthias Clasen
853cba6b1a 3.91.0 2017-05-22 21:42:18 -04:00
Matthias Clasen
ca098bb42a Update a11y test output 2017-05-22 21:42:18 -04:00
Matthias Clasen
c05b317b1e Fix the docs build
gtk-doc behavior changed, it seems, and these options now
cause the build to break.
2017-05-22 17:35:58 -04:00
Robert Ancell
4047a2f53e docs: Fix copy-paste error in gtk_file_chooser_get_extra_widget() doc comment 2017-05-20 13:07:05 +12:00
Lapo Calamandrei
251fe5e664 Adwaita: Avoid accindental border on last treeview header
The :last-child selector supposed to reset the border was
overridden by the :hover selector. This is fixed by moving the
:last-child selector after the overriding one.
Thanks to Sebastian Keller for spotting.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=779078.
2017-05-17 18:14:21 +02:00
Robert Ancell
9981f46e0b EntryBuffer: Don't generate changed events when input is truncated 2017-05-17 09:04:21 +12:00
Ignacio Casal Quinteiro
ed6aa0e6e0 meson: remove duplicated G_ENABLE_DEBUG 2017-05-16 22:50:00 +02:00
Daniel Boles
ce1098598d Frame: Don’t advise adding .flat class in code
https://bugzilla.gnome.org/show_bug.cgi?id=779653#c33
and this is closer to what gtk-3-22 says anyway.
2017-05-14 11:53:25 +01:00
Daniel Boles
322d9ca550 widget-factory: Use :relief=none, not class .flat
The rest of the ui file follows that convention.
2017-05-13 21:50:22 +01:00
Daniel Boles
8ddadecb57 gtk-demo: ui: Replace leftover uses of Box:expand
commit 5729ea7744 skipped these
2017-05-13 18:39:28 +01:00
Daniel Boles
9e6b59c5f4 demo/toolpalette: Restore ToolItemGroup child prop
…erties clobbered by commit c92b7d4224.
That and its counterpart were for removing :expand and :fill child props
from GtkBox, but they ended up catching these for GtkToolItemGroup too.

While GtkToolItemGroup still has these, we may as well keep demoing them
2017-05-13 18:39:13 +01:00
Lapo Calamandrei
5e8463842a Adwaita: regenerate the css 2017-05-11 15:26:48 +02:00
Lapo Calamandrei
3a1946b076 Adwaita: restyle entry-tag
Fix the sizing and spacing, blue tags for the bright variant,
similar to what gnome-documents was shipping, and inverted gray
tags for the dark variant, not vanishing on hover.
2017-05-11 15:26:20 +02:00
Daniel Boles
9546673d33 testsuite/scrolledwindow: Try non-overlay/non-auto
It was only testing the default configuration, where overlay scrolling
is on and both scrollbars use POLICY_AUTOMATIC. We should also test the
other 3 configurations that are available by including non-overlay
scrollbars and/or those that use POLICY_ALWAYS.

https://bugzilla.gnome.org/show_bug.cgi?id=778853
2017-05-10 22:29:01 +01:00
Daniel Boles
a96c586450 ScrolledWindow: Don’t req size for autohidden bars
POLICY_AUTOMATIC means scrollbars are only shown when needed, i.e. when
the size of the window is not large enough to show the entire child. So
when measuring the preferred size, such scrollbars should be ignored.

But measure() added size for *any* non-overlay scrollbar of the opposite
orientation, e.g. for horizontal size, it added the width of vscrollbar.
So we requested for child + bar, & having enough for child meant that the
policy hid the bar, leaving extra space empty below/right of the child.

Fix this by only adding size for such bars if they use POLICY_ALWAYS.

https://bugzilla.gnome.org/show_bug.cgi?id=778853
2017-05-10 22:29:01 +01:00
Daniel Boles
1a95c259d7 ScrolledWindow: Optimise and clean up measure()
• Only calculate the specified dimension – rather than measuring both &
   discarding the other (which will often be recalculated right after)
 • Only measure a given child scrollbar if it may be visible, not always
 • Move variables into narrowest scopes & otherwise improve readability

https://bugzilla.gnome.org/show_bug.cgi?id=778853
2017-05-10 22:29:01 +01:00
Carlos Garnacho
546433a4b7 gtkclipboard: Fix typo
The standard atom is UTF8_STRING.
2017-05-10 20:36:34 +02:00
Daniel Boles
91f2a310ab testsuite/gtk/scrolledwindow: Fix a copy-paste-o
It measured horizontal size when it needs height, making the test fail.
2017-05-10 19:12:16 +01:00
Emmanuele Bassi
daccf61dcf meson: Use buildtype to determine the debugging flags
Meson has a `--buildtype` option which allows us to avoid defining an ad
hoc `--enable-debug=yes|no|minimum` option ourselves.
2017-05-10 12:03:01 +01:00
Emmanuele Bassi
7ec9c36891 meson: Drop unnecessary link_with
The `declare_dependency()` for GIR does not need a `link_with` argument.
2017-05-10 11:37:40 +01:00
Emmanuele Bassi
0226163269 meson: Build the reftests suite
It does not pass, but at least we can check it.
2017-05-10 11:37:40 +01:00
Emmanuele Bassi
29bc0b1911 meson: Use libexecdir option 2017-05-10 11:37:40 +01:00
Chun-wei Fan
9f763cc34b win32/replace.py: Fix replacing items in files with UTF-8 content
Some files that this script will process might have UTF-8 items in
there, which can cause problems on Python 3.x as it is more strict and
careful on unicode issues.  Fix this by:

-Doing what we did before on Python 2.x
-Opening the file with encoding='utf-8' on Python 3.x
2017-05-09 18:35:31 -07:00
Jonas Ådahl
477556aac2 GtkWindow: Don't double free export user data
The user data passed when exporting a Wayland window was supposed to be
freed using the destroy_func, as is commonly done. This was previously
broken, as the user data was just NULL:ed when exported, and only
actually destroyed when unexporting before having exported.

While e016d9a5db fixed this, it introduced
a regression, as GtkWindow was nice enough to free the memory anyway
after having received the exported handle, causing it now to double
free.

https://bugzilla.gnome.org/show_bug.cgi?id=782109
2017-05-09 23:23:11 +08:00
Lapo Calamandrei
28d8fdca02 Adwaita: regenerate the css 2017-05-09 13:39:05 +02:00
Lapo Calamandrei
ebcf17debd Adwaita: add a comment
Add a comment pointing to the related bug for dropdown menu
margin.
2017-05-09 13:38:03 +02:00
Lapo Calamandrei
e9ee313be2 Revert "Adwaita: remove unneeded margin on dropdown menu"
This reverts commit af76e138f9.
The margin was actually related to:
https://bugzilla.gnome.org/show_bug.cgi?id=591258
2017-05-09 13:34:49 +02:00
Lapo Calamandrei
78d4854d10 Adwaita: regenerate css 2017-05-09 12:48:12 +02:00
Lapo Calamandrei
af76e138f9 Adwaita: remove unneeded margin on dropdown menu
That margin was probably a left over to workaround some placement
issue on dropdowns which doesn't exist anymore.
2017-05-09 12:48:12 +02:00
Jonas Ådahl
71adc74f27 GdkWaylandWindow: Unexport when finalizing
The application might not have exported, and it'll be too late for it
at this point anyway, so lets be helpful and not leak it.

https://bugzilla.gnome.org/show_bug.cgi?id=782109
2017-05-09 11:59:06 +08:00
Olof-Joachim Frahm
621d1bb4ec Make sure to remove tooltip timeout.
Otherwise in GC-ed environments the `g_source_remove` call during
disposal might be called on an already removed source, which results in
unnecessary console output.

https://bugzilla.gnome.org/show_bug.cgi?id=778301
2017-05-08 18:05:21 -04:00
Jakub Steiner
dee666f515 style entry-tags
https://bugzilla.gnome.org/show_bug.cgi?id=781214
2017-05-08 17:55:03 -04:00
Jonas Ådahl
5c74afb2f1 wayland: Remove self assignment
Don't assign the value of a variable to itself. It was added just for
clarity, but it makes coverity complain, so remove it.

https://bugzilla.gnome.org/show_bug.cgi?id=780301
2017-05-08 17:42:31 -04:00
Jonas Ådahl
9f9aaea319 wayland: Use correct enum type and values
Use the gravity enum values when converting to gravity. It doesn't fix
anything, since the enum values were identical, but it makes a coverity
warning go away.

https://bugzilla.gnome.org/show_bug.cgi?id=780301
2017-05-08 17:42:31 -04:00
Matthias Clasen
95e313a283 file filter: Be save against NULL
g_content_type_from_mime_type may return NULL, deal with that.

https://bugzilla.gnome.org/show_bug.cgi?id=782180
2017-05-08 16:35:53 -04:00
Matthias Clasen
c4a5f6a601 Revert "GdkWaylandWindow: Unexport when finalizing"
This reverts commit 251e216052.
2017-05-08 15:59:23 -04:00
Jonas Ådahl
251e216052 GdkWaylandWindow: Unexport when finalizing
The application might not have exported, and it'll be too late for it
at this point anyway, so lets be helpful and not leak it.

https://bugzilla.gnome.org/show_bug.cgi?id=782109
2017-05-08 15:41:11 -04:00
Jonas Ådahl
6d7749898d GdkWaylandWindow: Clear export user data when used
It was only cleared when unexported, but we could just as well clear it
when its used too.

https://bugzilla.gnome.org/show_bug.cgi?id=782109
2017-05-08 15:41:11 -04:00
Michael Catanzaro
cfd15c95b0 menubutton: Remove prelight state when button is deactivated
If the button is deactivated, it should not appear to be hovered
anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=781992
2017-05-08 16:03:33 +02:00
Balázs Úr
00387c24ca Update Hungarian translation 2017-05-05 18:56:59 +00:00
Christoph Reiter
004aba44df gtkdnd: restore drag window movement for the unmanaged case
5bb12474d9 removed the dnd window movement code to let
the gdk backends handle the window movement instead. While this
works for X11/wayland the win32 backend still uses the unmanaged
interface and expects the window movement to be handled on the gtk
side. This restores the functionality in case the dnd is unmanaged.

This fixes the drag window on Windows being stuck in the top left
corner instead of following the drag position.

https://bugzilla.gnome.org/show_bug.cgi?id=781737
2017-05-05 17:42:39 +02:00
Matej Urbančič
c0efc9ede9 Updated Slovenian translation 2017-05-05 13:25:51 +02:00
Emmanuele Bassi
db2c80d9db meson: Generate man pages for the installed tools 2017-05-05 11:35:31 +01:00
Emmanuele Bassi
777906e26c meson: Silence the introspection scanner
We want the warnings, but not every single message.
2017-05-05 11:17:02 +01:00
Olof-Joachim Frahm
1681d4ad77 Move style change for popover creation.
Creating with `gtk_popover_new_from_model` should be exactly the same as
if via `gtk_popover_new` plus `gtk_popover_bind_model`.

Also remove the style if the model is unbound at any point.
2017-05-05 11:37:20 +02:00
Mohammed Sadiq
00cd92ea71 linkbutton: Fix memory leak
strings returned by gtk_widget_get_tooltip_text() and
gtk_widget_get_tooltip_markup() has to be freed when no longer
required.

https://bugzilla.gnome.org/show_bug.cgi?id=782202
2017-05-05 11:18:25 +02:00
Timm Bäder
3d21128dbb Remove gtk_widget_get_preferred_*
They are unnecessary now that we have gtk_widget_measure.
2017-05-05 11:18:25 +02:00
Timm Bäder
1a7a089e2c window: Stop using gtk_widget_get_preferred* 2017-05-05 11:18:24 +02:00
Timm Bäder
8b2c71703e widget: Remove useless assignment
We don't use adjusted_allocation after this line.
2017-05-05 11:18:05 +02:00
Timm Bäder
91932ffbc7 button: Remove baseline_align value
It's unused.
2017-05-05 11:18:05 +02:00
Matthias Clasen
7625e40e82 clipboard: Try the mimetype first
Try text/plain;charset=utf-8 first, before falling back to
X11-isms like UTF8_TEXT. This makes things work on Wayland
compositors that don't carry a heavy X11 legacy around.

https://bugzilla.gnome.org/show_bug.cgi?id=781814
2017-05-03 18:50:21 -04:00
Tim-Philipp Müller
88900814cd meson: simplify cups version check in printbackends
Using cc.compute_int() instead of cc.get_define() for now
as there seems to be some issue with get_define() (#1726).
2017-05-03 18:40:56 +01:00
Lapo Calamandrei
77a0fc92c8 Adwaita: regenerate css using sassc 2017-05-03 17:43:45 +02:00
Lapo Calamandrei
9be18363e7 Adwaita: add more space between check/radio and label in popovers
See https://bugzilla.gnome.org/show_bug.cgi?id=779570 for details.
2017-05-03 17:39:21 +02:00
Lapo Calamandrei
96fc66d327 Adwaita: add a sassc based parse-sass.sh script 2017-05-03 17:31:50 +02:00
Emmanuele Bassi
0dad501d16 meson: Remove G_LOG_USE_STRUCTURED from target C flags
The G_LOG_USE_STRUCTURED symbol is defined in the project flags, so we
don't need to add it again in the per-target flags.
2017-05-03 16:22:52 +01:00
Ernestas Kulik
fee3f9afa1 meson: depend on glib >= 2.53.1
The code uses g_object_new_with_properties(), which is only available in
versions 2.53.1 and up.

https://bugzilla.gnome.org/show_bug.cgi?id=782123
2017-05-03 16:14:58 +01:00
Emmanuele Bassi
fb6f9e10da build: Use appropriate linker flag for the builder test
The `-export-dynamic` flag is a libtool-specific flag; since we're not
using libtool with Meson, we should instruct the C compiler to use the
appropriate linker flag instead.
2017-05-03 16:11:17 +01:00
Emmanuele Bassi
c05fcdbba0 window: Remove property definition
Commit 92b0d2e8ea removed the
hide-titlebar-when-maximized property handlers, but it still installed
the GParamSpec into the GtkWindow class.
2017-05-03 15:58:49 +01:00
Emmanuele Bassi
69ec6234a4 Specify more options to sassc
We should use the compact style, to minimize the whitespace; and we
should omit the source map URL comment as well.
2017-05-03 15:47:45 +01:00
Emmanuele Bassi
3b9233910f build: De-duplicate options to sassc
If we want to change the list of options we use with sassc, not having
to copy-paste them in multiple rules would be a good start.
2017-05-03 15:47:45 +01:00
Emmanuele Bassi
bc0a08eced testsuite: Remove unused function
Silence a compiler warning.
2017-05-03 15:21:20 +01:00
Emmanuele Bassi
3ba514d31f build: Port the a11y test suite to Meson
Copy the location of the test data and binaries from the autotools
build, even though it's not really correct; currently we install the
test data under libexecdir, but it should live under datadir, and we
should use `G_TEST_DIST` to figure it out.

The `state` subdirectory is missing.
2017-05-03 15:15:17 +01:00
Emmanuele Bassi
a54b6be606 build: Add common settings for tests
We are going to reuse them in the various parts of the test suite.
2017-05-03 15:10:58 +01:00
Emmanuele Bassi
8acf5a8174 build: Update autotools for API reference changes 2017-05-03 15:10:58 +01:00
Emmanuele Bassi
15c4d7121c build: Add Meson-related files to the autotools dist
This way, a tarball generated via autotools will also allow building
GTK+ via Meson.
2017-05-03 15:10:58 +01:00
Emmanuele Bassi
9b7148cdbd build: Use link_whole for GDK backends
When linking libgdk4 to each backend's static library, we want to use
the whole-archive support.
2017-05-03 15:10:58 +01:00
Emmanuele Bassi
d09ccaaf35 build: Define G_LOG_USE_STRUCTURED in GDK
We want to use the new structured logging support in GLib.
2017-05-03 15:10:58 +01:00
Emmanuele Bassi
9e8ba70d69 build: Add common flags to GDK backends
The common compiler and linker flags control, among other things, the
default visibility of symbols; without them, we leak symbols that ought
to be private.
2017-05-03 15:10:58 +01:00
Emmanuele Bassi
efd2ce2be5 build: Fix the introspection build
GSK has various enumeration types that are currently not used; while
they may go away, currently they are built and introspected. If we want
the introspection machinery to work, and still use static libraries to
build GDK and GSK into the GTK shared library, then we need to reference
the get_type() function of these enumeration types somewhere, to avoid
the linker discarding it, and thus breaking the build.

As luck would have it, we have an autogenerated bit of C that refers to
all the get_type() functions in the library; if we add the GSK types to
it, then we get the reference we're looking for, and the build succeeds.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
ea32f4c020 build: Depend on Meson 0.40 at least 2017-05-03 15:10:57 +01:00
Emmanuele Bassi
c984c3b55e build: Initial attempt at fixing the docs build
We need to reference the types file directly, because it won't be copied
into the builddir by Meson — except for GTK, which needs to generate its
own types file using configure_file().
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
91dee46497 build: Use get_pkgconfig_variable()
There's no need to run pkg-config ourselves.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
17518ef89b build: Improve consistency of the "coding" style
We're mixing a lot of styles in the Meson build files. This is an
attempt at making everything slightly more consistent in terms of
whitespace and indentation.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
1afd415583 build: Clean up print backends Meson rules 2017-05-03 15:10:57 +01:00
Emmanuele Bassi
6dd35248d5 build: Put the xkbcommon required version into a variable
We use it in two places.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
6728f45aa0 build: Ensure that Vulkan shaders are rebuilt if glslc is found
If glslc is found, rebuild the shaders from GLSL to SPIR-V; otherwise,
we're just going to use the built files we have committed in the source
repository.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
c1965150c7 build: Add post-install script
When building GTK+ straight from the repository without any assistance
from packaging tools, we need to trigger system-wide updates, like the
icon theme cache update, or the schema compilation.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
561f41d112 build: Clean up Wayland protocol code generation
We can build the name of the input and output files for the Wayland
protocols we use from the protocol name, stability, and version. This is
similar to how the autotools build does it, except much more clear and
without shelling out twice to sed just to resolve the Makefile rule.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
6b4b3f2f6c build: Add Meson options for quartz/win32 backends 2017-05-03 15:10:57 +01:00
Emmanuele Bassi
99d353003e build: Disable introspection generation
Currently gobject-introspection is badly borked with Meson.

This will need to be reverted.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
d35d82fb35 build: Rename GSK resource generator script
Maintain the naming convention, since we have similar scripts for GDK
and GTK already.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
ba87e857e2 build: Generate the API references (WIP)
Still a work in progress.
2017-05-03 15:10:57 +01:00
Emmanuele Bassi
28dcb50231 build: Add the appropriate inclusion paths for libgtk 2017-05-03 15:10:57 +01:00
Emmanuele Bassi
81341c042b build: Disable deprecation warnings for input methods 2017-05-03 15:10:57 +01:00
Emmanuele Bassi
f942aa53e2 docs: Rename files to match type and version
The main GDK API reference index is XML, not SGML.

The overrides file is for GDK 4.x, not 3.x.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
5e2eaa5dbc build: Add introspection generation
Currently, no platform-specific introspection is generated; there will
be a follow-up commit.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
e18d9a85ca build: Use the common linker flags in GDK and GSK
Instead of hard-coding `-Bsymbolic`.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
482f34006e build: Use the appropriate linker flags
We need to check if the linker flags we use are available, depending on
the platform, and we need to ensure that the shared library is
versioned appropriately.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
47bcf66af8 build: Bump version and C standard
GTK+ 4.0 uses C99.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
c97ef81a10 build: Add missing symbol visibility flags
GTK symbols are not visible by default, and only the ones annotated with
_GDK_EXTERN (and wrapper macros) are exported. We need to define
_GDK_EXTERN during the configuration, depending on the platform and
compiler we use.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
68039b610b build: Add compiler warnings and errors
We don't want to build buggy code.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
ede1f7002f build: Depend on graphene-gobject-1.0
We use the GObject types with Graphene, so we need to check that the
library has been built with them.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
3f4cc06ee3 build: Some whitespace cleanups 2017-05-03 15:10:56 +01:00
Emmanuele Bassi
007d9a5e19 build: Generate the appropriate GLib versioning checks
The autotools build checks the version of GLib we are depending on in
order to generate the appropriate GLIB_VERSION values for the
min-required/max-allowed defines.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
8582f80391 build: Add the appropriate paths in the configuration header
Instead of injecting them into the C compiler arguments.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
898bbb4626 build: Use the appropriate quoting
There's no need for string concatenation.
2017-05-03 15:10:56 +01:00
Emmanuele Bassi
9105227b56 build: Do not mix private and public GDK headers
The type generation script inside gtk/ will use the `gdk_headers`
variable, and that must not contain private headers.
2017-05-03 15:10:56 +01:00
Tim-Philipp Müller
e1dc4f7ae1 meson: gdk: fix static library names
Fix double lib prefix in filenames (liblibgdk-xyz.a)
2017-05-03 15:10:56 +01:00
Tim-Philipp Müller
e850973956 meson: build input modules
We have to work around some ordering problems here. We still
manage to keep most of the guts in modules/input/meson.build,
so it's not too ugly overall.

(The autotools build solves this with a 'make -C ../../input/modules'
inside gtk/Makefile, but that's not something we can or want to do.)
2017-05-03 15:10:56 +01:00
Tim-Philipp Müller
1c14e93e69 meson: check for xinerama 2017-05-03 15:10:56 +01:00
Tim-Philipp Müller
25cdd19bb0 meson: fix XIAllowTouchEvents check
Need to link against dep/lib to check for function in it. Also
misc fixes to surrounding xi-related checks.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
2f3c975058 meson: remove duplicate libm variable
Only need one of libm and mlib
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
5d71390a75 meson: check for more missing config.h defines
Lots of them are unused and can be removed. For others we
add a check.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
361e5d0b74 meson: simplify function checks
Because we can. We don't need to specify the right header anymore
to check for functions.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
4e9403df7f meson: simplify header checks
Remove workaround for gcc bug (Meson does that now), and
construct the right config.h defines for the headers on
the fly instead of listing them in the build file, which
is more error prone.
2017-05-03 15:10:55 +01:00
Matthias Clasen
f12c011e43 Set glib min/max versions 2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
69f075202d meson: fix GETTEXT_PACKAGE 2017-05-03 15:10:55 +01:00
Matthias Clasen
fc11fb7fda Don't require glslc for vulkan
The compiled shaders are checked into git.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
412c2225b1 meson: move colord checks into cups printbackend
Which is the only user of it. Also add option to enable/disable.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
d38db4dcdd meson: gtk: set GTK_PRINT_BACKENDS define properly 2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
a35e5f3135 meson: modules: add printbackends
The cups checks might not work properly everywhere yet,
since they don't use cups-config and parse the output yet.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
3a496afa0b meson: gtk: don't overwrite top-level cdata variable with local stuff
We need to set the global configuration data written into
config.h from the modules/printbackends meson file.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
cbfaebfa83 meson: add po and po-properties 2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
7cbf92505c meson: testsuites: tools: add meson build 2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
b95a5678f4 meson: testsuite: reftests: add build defs, but needs more work
Not sure how these are supposed to work yet, we can specify
arguments for running the tests uninstalled as well with test(),
if that helps in any way.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
bffbc6e1b9 meson: testsuite: gdk: use array for test definitions 2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
9bc24bf4d9 meson: testsuite: gtk: sync with Makefile and add some missing bits
Also use an array. A few tests fail, needs investigation.
2017-05-03 15:10:55 +01:00
Tim-Philipp Müller
f67a9d58db meson: make sure gsk/gdk generated headers exist for libgtk_dep users
Add back dependencies on libgdk_dep and libsk_dep which are declared
dependencies. We removed this before because these declarations had
link_with: lines that dragged in the static libgdk.a and libgsk.a libs
which are linked into libgtk-4.so anyway and thus shouldn't be used
when linking internal exes/tools against libgtk-4. Remove the static
libs from the declared dependencies and have libgtk link those in
explicitly, so that the declared deps now just provide all the built
dependencies and include dirs and such for declared libgtk_dep users
such as the internal exes/tools, which want all the generated gsk/gdk/gtk
headers to exist before attempting to compile anything against the
gtk+ headers.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
48e2b77369 meson: generate .pc files 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
3ca1418178 meson: gtk: update build file and sync to Makefile 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
98e633f658 meson: gtk: use gnome.mkenums() and gnome.genmarshal() 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
07ffb19c42 meson: gdk, gsk: fix install path of generated files 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
d12ab27c8e meson: gtk: remove internal static libs from declared gtk dependency
gdk and gsk are no longer separate libs but part of gtk now, so any
Gtk+ user should just link to gtk, there's no need to additionally
link against all those static helper libs that go into the gtk lib.

This means we need to specifically add confinc to include_directories
in more places to make sure the right config.h (i.e. ours) gets
included and not a subproject's like graphene's config.h.

Not dragging in static libs also fixes the issue of all executables
having to be relinked for any and all changes. With this change
it's super-fast now and can be skipped for most changes that don't
touch the external ABI.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
7738688c00 meson: gtk: use array for installed tools definition 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
bdfcfdec57 meson: gtk: install headers 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
c7d3fe5e26 meson: gdk: add quartz backend skeleton
Won't even build yet, just put basic bits in place.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
442185388b meson: gdk: win32: add skeleton bits for win32 backend
Won't even build, configure bits still missing.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
cbb6a62496 meson: gdk: wayland: generate private wayland headers first
gdkprivate-wayland.h includes generated wayland client protocol
headers and is included from gdkdisplaymanager.c, so we need to
generate those client protocol headers first also when building
main gdk itself.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
152a25d099 meson: gdk: add Mir backend bits
Completely untested, might not even build.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
e001d95538 meson: gdk: build individual backends as static libs
This is how it's done in the autotools build. Also avoids problems
with multiple source files having the same name (gdkeventsource.c).

Also move broadway backend code into broadway subdir.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
d4881df0d8 meson: gdk: wayland: move wayland bits into wayland subdir 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
4b969b1b40 meson: gdk: wayland: use array for protocol file generation 2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
22d7b825fb meson: gdk: move x11 bits into x11 subdirectory
Also install headers.
2017-05-03 15:10:54 +01:00
Tim-Philipp Müller
b947e88fbf meson: gdk: update and sync with Makefiles
Also create gdk.gresource.xml at build-time.
2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
7966ab6001 meson: demos: disable add_install_script() calls that don't work right yet
Errors out. Might really wants a script and not a binary.
2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
a0c207614a meson: gsk: install public headers 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
7b6b3c7786 meson: gsk: use gnome.mkenums() to generate enum types 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
fed7d22df7 meson: gsk: generate gsk.resources.xml 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
95979f4d2f meson: add vulkan bits 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
3ac88fa6b6 meson: examples: update
Mostly style changes. Don't create resource source files
with spaces in them, that's tempting our luck.
2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
d276cd47a5 meson: tests: make tests find resources from the source dir
Should probably also do this in the autotools build, since
the same problem exists there as well if we use srcdir != builddir.
2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
08153c3854 meson: tests: update and sync with Makefiles 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
b6722b0a36 meson: demos: update and sync up with Makefiles 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
b8a017b081 meson: use add_project_arguments() instead of add_global_arguments()
So Gtk+ can be used as a subproject.
2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
d6a824476d meson: gtk-demo: update and sync up with Makefile.am 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
37d5938561 meson: update list of sources for changes in git master 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
a23ce5c11c meson: fix checks for maths and X11 funcs that need the right deps 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
917a6b0912 meson: work around meson/gcc bug detecting linux/* headers 2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
a223294605 meson: set _GNU_SOURCE project wide
Easier, also means we don't have to define it for
checks. that will only succeed with it defind.
2017-05-03 15:10:53 +01:00
Tim-Philipp Müller
e675675b78 meson: testsuite: gdk: need to dep on gtk
Almost all of these tests include gtk/gtk.h so we need
to dep on libgtk not just libgdk. Otherwise compilation
fails because graphene.h include can't be found.
2017-05-03 15:10:52 +01:00
Tim-Philipp Müller
75fd87ce61 meson: gtk: generate gtk.gresource.xml 2017-05-03 15:10:52 +01:00
Tim-Philipp Müller
aa52cbeb11 meson: gtk: add missing source file 2017-05-03 15:10:52 +01:00
Tim-Philipp Müller
154ca1d1e4 meson: make sure gdk/gdkenumtypes.h is generated for users of libgtk_dep
Add libgdk_dep as dependency to the libgtk_dep declare_dependency(), so
that the generated gdk includes are generated before anything is built
that tries to include gtk headers (such as various tests that don't depend
on gdk directly).
2017-05-03 15:10:52 +01:00
Tim-Philipp Müller
55bbe0612e Rename generated gtktypefuncs.c to gtktypefuncs.inc
This is needed for the Meson port, a file name .c that's included
and shouldn't be compiled into an object is difficult to manage
otherwise. And it's not actually a valid .c file anyway.
2017-05-03 15:10:52 +01:00
Tim-Philipp Müller
b08a9bac6f meson: add graphene subproject that can be used as fallback 2017-05-03 15:10:52 +01:00
Timm Bäder
4fcca9945f meson: update build files 2017-05-03 15:10:52 +01:00
Timm Bäder
409ed21594 meson: Sort input files by name 2017-05-03 15:10:52 +01:00
Timm Bäder
6dd6660c68 meson: Conditionally check for dependencies 2017-05-03 15:10:52 +01:00
Timm Bäder
02a250147f meson: Check for more libraries 2017-05-03 15:10:52 +01:00
Timm Bäder
bfabaa0bd6 meson: build some more tests 2017-05-03 15:10:52 +01:00
Timm Bäder
09ad2f9d31 meson: build tests/visuals 2017-05-03 15:10:52 +01:00
Timm Bäder
0748c415da meson: Build gtk utils 2017-05-03 15:10:52 +01:00
Timm Bäder
092f6d5c43 meson: Install libgtk and libgdk 2017-05-03 15:10:52 +01:00
Timm Bäder
d353924c3d gtk/meson: Read dirs from options 2017-05-03 15:10:52 +01:00
Timm Bäder
8ae847e4fc Build examples 2017-05-03 15:10:52 +01:00
Timm Bäder
8bf141b364 meson: Build all tests in tests/ 2017-05-03 15:10:52 +01:00
Timm Bäder
d2ecd6e3c6 meson: Also check for sincos 2017-05-03 15:10:51 +01:00
Timm Bäder
fe29dbd9cc meson.build: Add more required versions
...build tests/ and testsuite/, properly define gtk_version, etc.
2017-05-03 15:10:51 +01:00
Tim-Philipp Müller
1125e4d77c meson: figure out wayland-protocols pkgdatadir via pkg-config
Instead of hardcoding the location.
2017-05-03 15:10:51 +01:00
Timm Bäder
abe80bb7c4 meson: Use -Bsymbolic 2017-05-03 15:10:51 +01:00
Timm Bäder
5116b2b612 meson: Require gtkmarshal_h before we build gtk 2017-05-03 15:10:51 +01:00
Timm Bäder
9e0c74b513 meson: Disable broadway build 2017-05-03 15:10:51 +01:00
Timm Bäder
2144b776b2 meson: Generate demos.h for gtk3-demo 2017-05-03 15:10:51 +01:00
Timm Bäder
fe42d645ad meson: Build gtk3-demo 2017-05-03 15:10:51 +01:00
Timm Bäder
81ffccf79f meson: build gtk/ again 2017-05-03 15:10:51 +01:00
Timm Bäder
294ebd70b3 build: Generate wayland protocol files 2017-05-03 15:10:51 +01:00
Timm Bäder
41d019851c wayland: Include generated sources from builddir, not srcdir 2017-05-03 15:10:51 +01:00
Timm Bäder
c9016fb8a3 gentypefuncs.py: Use python3 2017-05-03 15:10:51 +01:00
Tim-Philipp Müller
0f7f4225de meson: replace gentypefuncs.d with python script 2017-05-03 15:10:51 +01:00
Timm Bäder
88a2a571d5 gtk major version 2017-05-03 15:10:51 +01:00
Timm Bäder
3f62b935e5 meson: Use xrandr 2017-05-03 15:10:51 +01:00
Timm Bäder
df965304d4 meson: make gtk buildable
x11 only
2017-05-03 15:10:51 +01:00
Timm Bäder
082cf3553d meson: Build gtk marshallers
And fix libgtk_dep/libgdk_dep to link_with the shared lib
2017-05-03 15:10:50 +01:00
Timm Bäder
1e8a606403 meson: Add unit test files 2017-05-03 15:10:50 +01:00
Timm Bäder
3b0709b6e5 gtk: Generate gresources file 2017-05-03 15:10:50 +01:00
Timm Bäder
7fff2901aa meson: Add options for x/wayland/broadway backends 2017-05-03 15:10:50 +01:00
Timm Bäder
5475768d32 Meson build v2 2017-05-03 15:10:50 +01:00
Emmanuele Bassi
7a90e06a3c Add Meson build files
Original work by: Jussi Pakkanen <jpakkane@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=769881
2017-05-03 15:10:50 +01:00
Emmanuele Bassi
35c26d00d7 gsk: Include the private header
Both gskprivate.c and gskvulkanrenderer.c call `gsk_ensure_resources`
but fail in clude `gskprivate.h`, where the function is declared.
2017-05-03 15:00:12 +01:00
Emmanuele Bassi
71ad17cae1 Remove gdkkeysyms-compat.h
The compatibility header was needed after GTK+ 3.0 renamed the key
symbols from `GDK_*` to `GDK_KEY_*` to avoid collisions.
2017-05-03 14:54:37 +01:00
Timm Bäder
a9fdf49ed4 examples/drawing: Don't call gtk_main_quit
This is a GtkApplication so it will do the right thing when closing the
window.
2017-05-03 14:53:34 +01:00
Timm Bäder
5c79d65717 fallback-c89: Include config.h
It holds all the HAVE_<func> definitions.
2017-05-03 14:47:14 +01:00
Emmanuele Bassi
98b1075764 gdk: Remove GdkX11DisplayManager from the build
We don't instantiate it, and we don't use it any more.
2017-05-03 14:15:57 +01:00
Matthias Clasen
caacab13e9 Remove the gdk backend API too
The GTK+ level API for this is already gone.
2017-05-02 16:17:33 -04:00
Daniel Boles
e0a741c8ee Scale: Improve documentation of set_has_origin()
Properly format the property name, and avoid saying scale so many times.
2017-05-02 12:39:04 +01:00
Daniel Boles
4d88dc44b6 Scale: Explain how to round value when !draw-value
Scale:digits is (now, again) ineffective if Scale:draw-value is FALSE.
To get rounding in that case, the base Range:round-digits must be used.
2017-05-02 12:39:04 +01:00
Emmanuele Bassi
73878e29fd Recover assets rendering script
It was unintentionally removed by commit f6cbd076.
2017-05-02 12:37:36 +01:00
Timm Bäder
2c174319ea widget-factory: Fix listbox row alignment 2017-05-01 21:21:40 +02:00
Timm Bäder
5c4934cfc0 Chain up in size-allocate implementations
Otherwise we're not setting an allocation at all.
2017-05-01 21:21:40 +02:00
Matthias Clasen
92b0d2e8ea Remove GtkWindow::hide-titlebar-when-maximized
This was only every implemented under X11, and with CSD,
this is clearly in the application realm. We should not
pretend that we can support it on the toolkit level.

https://bugzilla.gnome.org/show_bug.cgi?id=775061
2017-05-01 13:26:46 -04:00
Timm Bäder
c405fe23bf widget: remove double assignment
We never read the value we assign here.
2017-04-30 20:22:42 +02:00
Timm Bäder
9c347c3012 placesview: Remove duplicate GtkMountOperation assignment
we assign a new mount operation a few lines later again.
2017-04-30 20:22:34 +02:00
Timm Bäder
6ae0aef840 levelbar: Don't allocate 0 blocks
Could result in a division by zero later on and doesn't make a lot of
sense anyway.
2017-04-30 20:22:25 +02:00
Timm Bäder
b950b775fa gtksettings: Remove unnecessary deprecation guards
Nothing between them is deprecated.
2017-04-30 19:48:39 +02:00
Timm Bäder
1b36c325eb widget: Fold queue_resize_on_widget into its only caller 2017-04-30 18:38:10 +02:00
Kukuh Syafaat
596317c25b Update Indonesian translation 2017-04-29 02:08:22 +00:00
Emmanuele Bassi
2a4f07ed9f wayland: Annotate the log_handler function
The log_handler() internal function is a candidate for the GCC format
attribute for printf-like functions.
2017-04-28 23:12:26 +01:00
Emmanuele Bassi
739588cc3c wayland: Add declaration of private get_type() function 2017-04-28 23:03:14 +01:00
Emmanuele Bassi
278e54b88d gdk: Make more private functions static
These symbols are not exported and are local to their compilation unit.
2017-04-28 23:03:10 +01:00
Emmanuele Bassi
7619c9c739 wayland: Mark private function as static 2017-04-28 22:47:29 +01:00
Emmanuele Bassi
82800fae52 wayland: Mark private function as static
The selection_lookup_offer_by_atom() function is private to the file and
not used elsewhere.
2017-04-28 22:21:19 +01:00
Emmanuele Bassi
4724a89022 build: Don't include the marshallers header file
We used to inject the inclusion of the generated header file into the
generated body of the marshallers source code in order to avoid compiler
warnings about missing prototypes. The glib-genmarshal utility has been
fixed in GLib to include the prototype in the generated source, so now
we're going to trip -Werror=redundant-decls.
2017-04-28 21:50:41 +01:00
Timm Bäder
bb1deaafa4 migration guide: Extend GtkBox child property section
Mention the removed expand and fill child properties as well.
2017-04-28 17:14:10 +02:00
Olivier Fourdan
502e0a3a9e wayland: make key event log more explicit
With Wayland, GDK_DEBUG=events would log key events but not explicitly
state whether the event is a key press or release, or if it's
originating from a key repeat.

Add some more verbosity to make sure these informations are logged on
key delivery when GDK_DEBUG is set.

https://bugzilla.gnome.org/show_bug.cgi?id=781767
2017-04-28 13:09:39 +02:00
Timm Bäder
bbe5385541 frame: Properly initialize clip
GtkCssGadget initializes the content clip to {0, 0, 0, 0}, so we can't
just union the child clip with it.
2017-04-28 11:27:09 +02:00
Timm Bäder
70aeeab355 grid: Remove unnecessary NULL checks
The minimum and natural pointers passed to measure are never NULL and
that's the only place where we call gtk_grid_get_size_for_size.
2017-04-28 11:27:09 +02:00
Timm Bäder
79de641e9b GtkGestureMultiPress: Remove superfluous NULL check
The rect parameter in gtk_gesture_multi_press_set_area is annotated as
nullable and the code handles the rect==NULL case, but the
g_return_if_fail kept that case from ever happening.
2017-04-28 11:27:09 +02:00
Timm Bäder
80fe1dfe02 label: Remove dead ternary operator 2017-04-28 11:27:09 +02:00
Timm Bäder
2a0a87049e headerbar: Compute clip directly 2017-04-28 11:27:09 +02:00
Timm Bäder
179b8b0cbc Fix gdk_rectangle_union calls
Turns out that the destination is the last parameter, not the first one.
This fixes the flickering in the first page of the widget-factory when
using the expander on page 2.
2017-04-28 11:27:09 +02:00
Timm Bäder
b97b8b6ec1 button: Compute clip directly 2017-04-28 11:27:08 +02:00
Timm Bäder
a50dc94381 filechooserwidget: Remove always-false error case
_gtk_search_engine_new never returns NULL, it always returns a valid
GObject with at least the simple search engine initialized.
2017-04-28 11:27:08 +02:00
Timm Bäder
03bfdce406 sidebarrow: Remove useless size group
Nice try, but size groups don't work with invisible widgets anyway.
Invisible widgets request 0×0.
2017-04-28 11:27:08 +02:00
Florian Müllner
5527732763 gdk: Relicense translate_wm_button_layout_to_gtk()
It is generally a good idea to license individual files under the
same terms as the project license (in particular when the mismatch
boils down to having copied the wrong license header), so relicense
the code under the LGPL.

https://bugzilla.gnome.org/show_bug.cgi?id=781422
2017-04-27 21:05:12 +02:00
Piotr Drąg
69fe6207ff Update Polish translation 2017-04-26 19:44:06 +02:00
Emmanuele Bassi
fca3f93114 gsk: Mark finalize() implementation as static 2017-04-26 17:28:14 +01:00
Emmanuele Bassi
9442ef055d gsk: Mark internal symbol as static
Nothing uses this function outside of GskVulkaneRenderPass.
2017-04-26 17:27:24 +01:00
Emmanuele Bassi
c71aeff9b2 gsk: Mark internal symbols as static
These symbols are not used anywhere outside of GskVulkanImage.
2017-04-26 17:25:24 +01:00
Emmanuele Bassi
7ae5b516ac gsk: Mark private symbol as static
The ellipsis_contains_point() function is not used anywhere else.
2017-04-26 17:25:24 +01:00
Stas Solovey
ed2aaafa2c Update Russian translation
(cherry picked from commit edf00914e5)
2017-04-26 14:44:56 +00:00
Daniel Boles
8308ce1e61 Scale: Fix documentation of digits per last revert
Revert doc changes that were for the behavioural change just reverted.

Add a clarifying note that, under the original behaviour, :digits only
rounds the Adjustment if :draw-value is TRUE at the time of the change.

https://bugzilla.gnome.org/show_bug.cgi?id=781605
https://bugzilla.gnome.org/show_bug.cgi?id=358970
2017-04-26 12:32:07 +01:00
Matthias Clasen
197355e15a Revert "Scale: Always sync ::digits to Range::round-digits"
This reverts commit 4a6bd134bd.

This change in behavior broke various things.

https://bugzilla.gnome.org/show_bug.cgi?id=781605
2017-04-26 07:30:19 -04:00
Timm Bäder
dfcde113e8 GskRoundedRect: Include private header file
So we don't have implementations without previous prototypes.
2017-04-26 11:07:40 +02:00
Timm Bäder
0105bf82c0 GskRenderNode: Fix set_scaling_filters function name
The implementation sed _filters while the prototype used _filter.
2017-04-26 11:06:55 +02:00
Timm Bäder
6c7f1d8885 GskRenderNode: add missing prototype 2017-04-26 11:06:32 +02:00
Timm Bäder
57b8a136bf reftests: Remove reference to deleted files 2017-04-25 20:55:56 +02:00
Timm Bäder
6364231571 testdnd2: Don't pass a toplevel to gtk_drag_set_icon_widget 2017-04-25 20:30:37 +02:00
Timm Bäder
db4b1d28f5 label: Remove angle property 2017-04-25 20:30:37 +02:00
Timm Bäder
cb80b32ee8 label: Move if statement where it makes sense
In the else branch of the if statement before this one, we're assigning
*smallest = *widest anyway, so this if statement is never true. Move it
to the if block before instead, where it can apply.
2017-04-25 20:30:37 +02:00
Timm Bäder
4e0f10955a label: Remove useless if statements
We never pass nullable pointers into get_size_for_allocation.
2017-04-25 20:30:37 +02:00
Timm Bäder
2fc92db25c label: Remove useless if statement
The if before this one already makes sure priv->wrap is TRUE.
2017-04-25 20:30:37 +02:00
Timm Bäder
6b12e3948e gtkmain: Fix code example
gtk_init doesn't take parameters anymore
2017-04-25 20:30:37 +02:00
Timm Bäder
29f7bde023 label: Don't use gtk_widget_set_simple_clip
The clip returned by gtk_css_gadget_allocate already includes the
box-shadow size and we manually care about the text-shadow size.
2017-04-25 20:30:37 +02:00
Timm Bäder
b01b5267bb frame: Compute clip directly 2017-04-25 20:30:37 +02:00
Timm Bäder
167fc2b659 listbox: Compute clips directly 2017-04-25 20:30:37 +02:00
Timm Bäder
fe429f8806 gtkwidget: Queue a resize on the parent when unparenting
gtk_widget_set_parent (via gtk_widget_reposition_after) will queue a
resize on the parent widget automatically when adding a child widget, so
unparent should do the same
2017-04-25 20:30:37 +02:00
Timm Bäder
7e1373a08c widget: Fix set_parent/unparent docs to not mention GtkContainer
They can both be used by non-container widgets these days.
2017-04-25 20:30:37 +02:00
Timm Bäder
74ef45bfbf grid: Compute clip directly
Instead of iterating over the children again in
gtk_container_get_children_clip
2017-04-25 20:30:37 +02:00
Timm Bäder
0938183ae6 container: Use gtk_container_forall less
Just iterate over the child widgets directly and produce a much nicer
stack trace when debugging.
2017-04-25 20:30:37 +02:00
Timm Bäder
927f2f5c06 box: Compute clips directly
Instead of using _gtk_widget_set_simple_clip *and*
gtk_container_get_children_clip
2017-04-25 20:30:37 +02:00
Timm Bäder
ec1e063cb2 testsuite: Add widget ordering test case 2017-04-25 20:30:37 +02:00
Timm Bäder
fb927d1993 box: Remove center child 2017-04-25 20:30:37 +02:00
Timm Bäder
f053a63d74 container: Remove include_internals parameter from forall
with include_internals=TRUE, this is the same as the (still private)
gtk_widget_forall, or just using the children/sibling accessors in a
loop.
2017-04-25 20:30:37 +02:00
Timm Bäder
066c1983ba actionbar: Add explicit center widget
The center widget in GtkBox was only introduced to use it in
GtkActionBar. However, the implementation there is much more complex
than it needs to be, so move the center widget into GtkActionBar instead
and later remove it from GtkBox.
2017-04-25 20:30:37 +02:00
Timm Bäder
c92b7d4224 box: Remove fill child property
GtkWidget:halign and GtkWidget:valign are sufficient
2017-04-25 20:30:37 +02:00
Timm Bäder
5729ea7744 box: Remove expand child property
GtkWidget already has hexpand/vexpand properties.
2017-04-25 20:30:37 +02:00
Timm Bäder
8f4c0bea65 expander: Use widgets for title box and arrow 2017-04-25 20:30:36 +02:00
Timm Bäder
efa9601a10 window: Make sure the decoration node stays at the beginning
Otherwise, the gtk_widget_set_parent call might add the widget node of
the child before the decoration node.
2017-04-25 20:30:36 +02:00
Timm Bäder
73c3579e78 levelbar: Use widgets for all blocks
This replaces all internal gadgets with widgets.

Remaining problem: "block" nodes have a min-width of 32px in Adwaita,
but when allocated in continuous mode, the levelbar doesn't care and
underallocates them.
2017-04-25 20:30:36 +02:00
Timm Bäder
68a5f6519c progressbar: Use widgets for all subgadgets
A GtkLabel for the possible text node and two GtkGizmos for the
trough/progress gadgets.
2017-04-25 20:30:36 +02:00
Timm Bäder
2be675b538 Add GtkGizmo
GtkGizmo is the easiest possible widget to implement. It does nothing
except give its creator a way to control measure/size-allocate/snapshot,
so it can be used in a variety of use cases.
2017-04-25 20:29:02 +02:00
Timm Bäder
ae1a606c8b overlay: Ensure proper child widget order
Make sure the main widget stays below all the overlay children.
2017-04-25 20:29:02 +02:00
Timm Bäder
9644bea2a5 treeview: insert the column button css node in the right place
Insert the css node before setting a parent widget on the column button,
so the gtk_widget_set_parent won't attempt to add the css node as child
of the parent widget css node.
2017-04-25 20:29:02 +02:00
Timm Bäder
ba363fbb71 widget: Add gtk_widget_insert_before/after
To insert a widget into the widget tree before or after a child widget
of the soon-to-be parent.
2017-04-25 20:29:02 +02:00
Timm Bäder
5852da22bf gdk: Add 3.92 version macros 2017-04-25 20:29:02 +02:00
Timm Bäder
2ab3da6741 Bump version to 3.91.0
So we can use GDK_AVAILABLE_IN_3_92 without getting warnings
2017-04-25 20:29:02 +02:00
Timm Bäder
5d94ee8584 listbox: Properly remove placeholders 2017-04-25 20:29:02 +02:00
Timm Bäder
4945e28f08 widget-factory: Add dummy listbox placeholder
It doesn't do anything and isn't visible anyway, but it tests that
adding and removing placeholders works
2017-04-25 20:29:02 +02:00
Daniel Boles
843cd7f22e ProgressBar: Update node summary per last commit
The node named "progress" is a child of the node named "trough".
2017-04-25 11:14:28 +01:00
Timm Bäder
d703cc882d progressbar: Fix position of text node in CSS docs
The text node has always been a child node of the progressbar node, not
the trough node, but the docs claimed otherwise.
2017-04-25 10:56:08 +01:00
Timm Bäder
a919f0c7f3 spinbutton: Add undershoot nodes to CSS docs 2017-04-24 16:24:32 +02:00
Timm Bäder
0acb404166 spinbutton: Remove an unused define 2017-04-24 16:24:20 +02:00
Timm Bäder
68383cfcd3 window: Expand CSS node docs 2017-04-24 16:24:12 +02:00
Timm Bäder
bd55396d39 filechooserbutton: Show/hide appropriate child 2017-04-24 15:58:01 +02:00
Timm Bäder
ccdc50e540 paned: Fix typo 2017-04-24 15:16:15 +02:00
Timm Bäder
cc00fee386 testboxcss: Fix custom CSS
remove engine: parameter and add units to values
2017-04-24 15:16:08 +02:00
Timm Bäder
d5c6692104 gtk4-sections: Add missing GtkWidget child/sibling accessors 2017-04-24 14:15:57 +02:00
Timm Bäder
911d71ae7a levelbar: Remove unused define 2017-04-24 14:15:28 +02:00
Matthias Clasen
d0f36a1793 testlist3: Handle dropping a row onto itself
Instead of spewing criticals, we should handle this
gracefully by doing nothing.
2017-04-22 21:39:48 -04:00
Carlos Soriano
72d13535b7 gtkplacesview.ui: Remove translatable from server label helper
Translating it seems pointless if we can use a non-translatable example
such as gnome.org instead of foo.example.com.

This will help to make changes in here without breaking string freeze.

https://bugzilla.gnome.org/show_bug.cgi?id=781622
2017-04-22 21:53:45 +02:00
Matthias Clasen
2fed741b40 Fix the build 2017-04-22 11:30:33 -04:00
Matthias Clasen
8644e5f34d Refine the listbox dnd example
Add a drag handle, and demonstrate broken offsets.
2017-04-22 08:08:43 -04:00
Carlos Soriano
73d13fbdac gtkplacesview: Fix unmounted open in tab/window
We were send the "open-location" signal without mounting first the
location if necessary, making the open in tab/window context menu not
work for those.

This patch makes sure we mount the location before emitting the signal.

https://bugzilla.gnome.org/show_bug.cgi?id=771269
2017-04-22 11:54:23 +02:00
Matthias Clasen
2e7db0d662 Fix a typo 2017-04-21 18:28:56 -04:00
Matthias Clasen
ff8cca77a2 Implement dnd for list box rows in an example
This shows very basic DND of list box rows.
2017-04-21 18:28:47 -04:00
John Ralls
139b669196 Replace NSScreen:userSpaceScaleFactor, deprecated since MacOS X 10.7.
userSpaceScaleFactor is not compatible with high-resolution (aka HiDPI)
displays.
2017-04-11 16:10:51 -07:00
Georges Basile Stavracas Neto
400db31ad3 placesview: fix testsuite
Because the network monitor can perfectly be NULL,
the tests were failing on that for GtkPlacesView
always tries to disconnect this handler.

Fix that by only disconnecting the handler when
the network monitor exists.

https://bugzilla.gnome.org/show_bug.cgi?id=781195
2017-04-11 16:50:33 -03:00
Georges Basile Stavracas Neto
767927aef3 places-view: monitor network
GtkPlacesView exposes local access points and network
shares transparently by using the 'network:///' URI,
which is handled by GIO.

Currently, however, it doesn't monitor the network
for new available points, such as computers that just
join the network. It may happen too that the backend
won't find all the networks before the network enumeration
finishes.

Fix that by keeping a file monitor inspecting the network
uri, and update the places list when that happens.

https://bugzilla.gnome.org/show_bug.cgi?id=781162
2017-04-10 19:36:02 -03:00
gogo
529b8f8197 Update Croatian translation 2017-04-10 21:29:53 +00:00
gogo
7176ab1e86 Update Croatian translation 2017-04-10 21:01:06 +00:00
gogo
313bb76558 Update Croatian translation
(cherry picked from commit 6e87915b05)
2017-04-10 20:43:23 +00:00
gogo
95d21ffc83 Update Croatian translation
(cherry picked from commit 4f3ff05943)
2017-04-10 20:39:28 +00:00
Tom Tryfonidis
79f817286e Update Greek translation 2017-04-08 16:36:31 +00:00
Alberts Muktupāvels
acf50005ab gtkheaderbar: add style classes to all title buttons
Commit b187773053 added CSS style
classes for minimize, maximize and close buttons. Add similar classes
also to icon and menu buttons.

https://bugzilla.gnome.org/show_bug.cgi?id=780944
2017-04-06 15:34:49 +03:00
Matthias Clasen
7860e2d5cd flowbox: don’t try to focus or draw NULL widgets
Rubberbanding over an empty area results in warnings, due to the code
trying to focus and queue a null pointer for drawing.

https://bugzilla.gnome.org/show_bug.cgi?id=780734
2017-04-05 20:15:32 -04:00
Jeremy Bicha
fc70267158 docs: Use https for more links
https://bugzilla.gnome.org/show_bug.cgi?id=780878
2017-04-03 16:02:22 -04:00
Jeremy Bicha
183e5bb8a4 docs: Point links to correct versions
https://bugzilla.gnome.org/show_bug.cgi?id=780878
2017-04-03 16:02:22 -04:00
William Hua
8b271e7b8c mir: clean up an ugly function 2017-04-03 13:29:06 -04:00
Emmanuele Bassi
c9a5d51539 Use the newly added g_object_new_with_properties()
Instead of the deprecated g_object_newv().

This requires some internal surgery to create our own vector of names
and values, but it does not functionally change anything.
2017-04-02 17:29:38 +01:00
Emmanuele Bassi
5e9f77670b Bump up the required version of GLib
GLib 2.53 deprecated g_object_newv() and GParameter. If we want to stop
using those types without resorting to pretty convoluted pre-processor
dancing, we will need to bump up the dependency inside GTK+.
2017-04-02 17:29:38 +01:00
Emmanuele Bassi
4471f274b9 Ignore deprecation warnings for g_object_newv()
GLib has deprecated GParameter and g_object_newv(); until we switch to
the new g_object_new_with_properties() API, and bump GLib required
version, we should simply ignore the compiler warnings.
2017-04-02 17:29:38 +01:00
Timm Bäder
3d2c81c8f1 filechooserwidget: Remove useless gtk_widget_show call 2017-04-02 18:24:17 +02:00
Timm Bäder
7dc8489c8c stack combo: Inherit from GtkWidget 2017-04-02 08:16:54 +02:00
Tom Schoonjans
98d9a05a0c quartz: code cleanup
removed unused static functions, unused class variables and a large
comment section that was copied over from gdkdisplay-x11.h

https://bugzilla.gnome.org/show_bug.cgi?id=779184
2017-04-01 16:45:37 -04:00
Tom Schoonjans
758d26738a quartz: add support for Gtk+4
The addition of GdkMonitor broke the quartz backend. This patch restores
that support by adding a new class GdkQuartzMonitor, and by modifying
the existing classes GdkQuartzDisplay and GdkQuartzScreen where
necessary.

It should be noted that this patch is essentially a refactor as no new
functionality that will impact the user has been added or removed.

https://bugzilla.gnome.org/show_bug.cgi?id=779184
2017-04-01 16:45:37 -04:00
Matthias Clasen
d779d0cb32 Avoid a compiler warning 2017-04-01 12:19:23 -04:00
Emmanuele Bassi
bee29ea6c8 build: Fix sassc detection 2017-04-01 16:39:21 +01:00
Emmanuele Bassi
f6cbd076dd Rebuild CSS on all SCSS file changes
Adwaita and HighContrast CSS should be rebuild every time one of their
dependent files change, not just the main entry point.

https://bugzilla.gnome.org/show_bug.cgi?id=780041
2017-04-01 16:19:54 +01:00
William Hua
94db94a78b mir: set application name when creating connection 2017-04-01 11:05:27 -04:00
Emmanuele Bassi
99c79d6769 Optionally depend on sassc to generate the theme CSS
Instead of using Ruby/Sass to generate the CSS from SCSS files, we can
use the faster and more lightweight libsass/sassc binary.

We can keep the CSS files in Git to make it easier to dist GTK+, but we
can add rules to ensure they get rebuilt if the source SCSS changes.

https://bugzilla.gnome.org/show_bug.cgi?id=780041
2017-04-01 15:36:27 +01:00
Timm Bäder
d55249c6f1 gsk: Add color shaders to resources 2017-04-01 16:16:03 +02:00
Timm Bäder
98a78b0d61 dnd: Remove unnecessary non-toplevel GtkWindow in set_icon_surface
Instead of creating a GtkWindow, connecting to ::draw and drawing the
surface in there, then adding that window to another GtkWindow... just
use a GtkImage. This also gets rid of a bunch of utility functions used
only in gtk_drag_set_icon_surface.
2017-04-01 08:40:34 +02:00
William Hua
8985643966 mir: remove keymap and input device state warnings 2017-03-31 17:36:47 -04:00
William Hua
c638fb952c mir: re-write settings implementation 2017-03-31 15:27:53 -04:00
953 changed files with 169216 additions and 151112 deletions

40
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,40 @@
If you want to hack on the GTK+ project, you'll need to have the development
tools appropriate for your operating system, including:
- Python (2.7 or 3.x)
- Meson
- Ninja
- Gettext (19.7 or newer)
- a C99 compatible compiler
Up-to-date instructions about developing GNOME applications and libraries
can be found here:
https://developer.gnome.org
Information about using git with GNOME can be found here:
https://wiki.gnome.org/Git
In order to get Git GTK+ installed on your system, you need to have the
required versions of all the GTK+ dependencies; typically, this means a
recent version of GLib, Cairo, Pango, and ATK.
**Note**: if you plan to push changes to back to the master repository and
have a GNOME account, you want to use the following instead:
```sh
$ git clone ssh://<username>@git.gnome.org/git/gtk+
```
To compile the Git version of GTK+ on your system, you will need to
configure your build using Meson:
```sh
$ meson _builddir .
```
For information about submitting patches and pushing changes to Git, see the
`README.md` and `README.commits` files. In particular, don't, under any
circumstances, push anything to Git before reading and understanding
`README.commmits`.

64
HACKING
View File

@@ -1,64 +0,0 @@
If you want to hack on the GTK+ project, you'll need to have
the following packages installed:
- GNU autoconf 2.62
- GNU automake 1.11
- GNU libtool 2.2
- indent (GNU indent 1.9.1 is known good)
- GNU gettext 10.40
These should be available by ftp from ftp.gnu.org or any of the
fine GNU mirrors. Beta software can be found at alpha.gnu.org.
Up-to-date instructions about developing GNOME applications and libraries
can be found here:
http://library.gnome.org/devel/
Information about using git with GNOME can be found here:
https://wiki.gnome.org/Git
In order to get GIT GTK+ installed on your system, you need to have
the most recent GIT versions of GLib, Pango, and ATK installed as well.
The installation process of these libraries is similar to that of GTK+,
but needs to be fulfilled prior to installation of GTK+.
If at all possible, please use GIT to get the latest development version of
gtk+ and glib. You can do the following to get glib and gtk+ from GIT:
$ git clone git://git.gnome.org/glib
$ git clone git://git.gnome.org/pango
$ git clone git://git.gnome.org/atk
$ git clone git://git.gnome.org/gtk+
Note: if you plan to push changes to back to the master repository and
have a gnome account, you want to use the following instead:
$ git clone ssh://<username>@git.gnome.org/git/gtk+
To compile the GIT version of GTK+ on your system, you will need to take
several steps to setup the tree for compilation. You can do all these
steps at once by running:
gtk+$ ./autogen.sh
Basically this does the following for you:
gtk+$ aclocal; automake; autoconf
The above commands create the `configure' script. Now you
run the `configure' script in `gtk+/' to create all Makefiles.
More information about that in `INSTALL'.
Before running `autogen.sh' or `configure', make sure you have libtool
in your path.
Note that autogen.sh runs configure for you. If you wish to pass
options like `--prefix=/usr' to `configure' you can give those options
to `autogen.sh' and they will be passed on to `configure'.
For information about submitting patches and pushing changes
to GIT, see the `README' and `README.commits' files. In particular,
don't, under any circumstances, push anything to GIT before
reading and understanding `README.commmits'.

View File

@@ -1,42 +0,0 @@
Prerequisites
=============
GTK+ requires the following packages:
- The GLib, Pango, GdkPixbuf, ATK and cairo libraries, available at
the same location as GTK+. GTK+ @GTK_VERSION@ requires at least
GLib @GLIB_REQUIRED_VERSION@, Pango @PANGO_REQUIRED_VERSION@,
GdkPixbuf @GDK_PIXBUF_REQUIRED_VERSION@, ATK @ATK_REQUIRED_VERSION@
and cairo @CAIRO_REQUIRED_VERSION@.
- libepoxy, for cross-platform OpenGL support.
It can be found here: https://github.com/anholt/libepoxy
- Each GDK backend has its own backend-specific requirements. For
the X11 backend, X11 R6 and XInput version 2 (as well as a number
of other extensions) are required. The Wayland backend requires
(obviously) the Wayland libraries.
- gobject-introspection @INTROSPECTION_REQUIRED_VERSION@ or newer.
Simple install procedure
========================
% tar xf gtk+-@GTK_VERSION@.tar.xz # unpack the sources
% cd gtk+-@GTK_VERSION@ # change to the toplevel directory
% ./configure # run the `configure' script
% make # build GTK+
[ Become root if necessary ]
% make install # install GTK+
The Details
===========
Complete information about installing GTK+ and related libraries
can be found in the file:
docs/reference/gtk/html/gtk-building.html
Or online at:
http://library.gnome.org/devel/gtk/stable/gtk-building.html

View File

@@ -1,12 +0,0 @@
Matthias Clasen
E-mail: mclasen@redhat.com
Userid: matthiasc
Tim Janik
E-mail: timj@gtk.org
Userid: timj
Note that a lot of people are contributing to GTK+, and some parts of it
are technically maintained by other people. The people listed above are
meant as contacts for administrative questions such as cvs accounts. Other
questions are best directed to the mailing list gtk-devel-list@gnome.org.

View File

@@ -1,97 +0,0 @@
## Makefile.am for GTK+
include $(top_srcdir)/Makefile.decl
SRC_SUBDIRS = gdk gsk gtk modules demos tests testsuite examples
SUBDIRS = po po-properties $(SRC_SUBDIRS) docs win32
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
EXTRA_DIST += \
autogen.sh \
HACKING \
README \
README.in \
INSTALL \
INSTALL.in \
NEWS.pre-1-0 \
README.commits \
README.win32 \
config.h.win32 \
makefile.msc \
gtk-zip.sh.in \
sanitize-la.sh \
po/README.translators \
po/po2tbl.sed.in \
make-pot
MAINTAINERCLEANFILES = \
$(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \
$(GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL) \
$(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \
$(srcdir)/m4/gtk-doc.m4 \
$(srcdir)/INSTALL \
$(srcdir)/README \
$(srcdir)/gtk-doc.make \
$(srcdir)/ChangeLog
## Copy .pc files to target-specific names
gtk+-x11-4.0.pc gtk+-win32-4.0.pc gtk+-quartz-4.0.pc gtk+-broadway-4.0.pc gtk+-wayland-4.0.pc gtk+-mir-4.0.pc: gtk+-4.0.pc
rm -f $@ && \
cp gtk+-4.0.pc $@
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = gtk+-4.0.pc gail-4.0.pc
pkgconfig_DATA += ${GDK_BACKENDS:%=gtk+-%-4.0.pc}
if OS_UNIX
pkgconfig_DATA += gtk+-unix-print-4.0.pc
endif
DISTCLEANFILES = \
gtk+-unix-print-4.0.pc \
gtk+-4.0.pc \
gtk+-x11-4.0.pc \
gtk+-win32-4.0.pc \
gtk+-quartz-4.0.pc \
gtk+-broadway-4.0.pc \
gtk+-wayland-4.0.pc \
gtk+-mir-4.0.pc \
gail-4.0.pc \
config.lt
distclean-local:
if test "$(srcdir)" = "."; then :; else \
rm -f ChangeLog; \
fi
ChangeLog:
$(AM_V_GEN) if test -d "$(srcdir)/.git"; then \
(GIT_DIR=$(top_srcdir)/.git $(top_builddir)/build-aux/missing git log GTK_2_16_0^^.. --stat) | fmt --split-only > $@.tmp \
&& mv -f $@.tmp $@ \
|| ($(RM) $@.tmp; \
echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
(test -f $@ || echo git-log is required to generate this file >> $@)); \
else \
test -f $@ || \
(echo A git checkout and git-log is required to generate ChangeLog >&2 && \
echo A git checkout and git-log is required to generate this file >> $@); \
fi
.PHONY: ChangeLog
uninstall-local:
rm -f $(DESTDIR)$(pkgconfigdir)/gtk+-4.0.pc
AM_DISTCHECK_CONFIGURE_FLAGS = \
--enable-gtk-doc \
--disable-doc-cross-references \
--enable-man \
--disable-maintainer-mode \
--enable-introspection \
--enable-installed-tests
GITIGNORE_TRANSLATION_DIRS = po-properties
GITIGNOREFILES = po-properties/gtk40-properties.pot
-include $(top_srcdir)/git.mk

View File

@@ -1,96 +0,0 @@
# GTK+ - The GIMP Toolkit
GTESTER = gtester -k # in $PATH for non-GLIB packages
GTESTER_REPORT = gtester-report # in $PATH for non-GLIB packages
# initialize variables for unconditional += appending
EXTRA_DIST =
TEST_PROGS =
### testing rules
# Xvfb based test rules
XVFB = Xvfb -ac -noreset -screen 0 1024x768x16
XIDS = 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 \
491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 \
991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 \
1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 \
9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 \
9995 9996 9997 9998 9999
if USE_X11
SKIP_GDKTARGET = \
false
else
SKIP_GDKTARGET = \
echo "Gtk+Tests:INFO: Skipping GUI tests for non-X11 target."
endif
if PLATFORM_WIN32
no_undefined = -no-undefined
endif
XVFB_START = \
${XVFB} -help 2>/dev/null 1>&2 \
&& XID=`for id in $(XIDS) ; do test -e /tmp/.X$$id-lock || { echo $$id; exit 0; }; done; exit 1` \
&& { ${XVFB} :$$XID -nolisten tcp -auth /dev/null >/dev/null 2>&1 & \
trap "kill -15 $$! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } \
|| { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; } \
&& DISPLAY=:$$XID && export DISPLAY
# call as: $(XVFB_START) && someprogram
# test: run all tests in cwd and subdirs
test: test-cwd test-recurse
# test-cwd: run tests in cwd
test-cwd: ${TEST_PROGS}
@$(SKIP_GDKTARGET) || test -z "${TEST_PROGS}" || { \
$(XVFB_START) && { set -e; $(TESTS_ENVIRONMENT) G_TEST_SRCDIR="${abs_srcdir}" G_TEST_BUILDDIR="${abs_builddir}" ${GTESTER} --verbose ${TEST_PROGS}; }; \
}
# test-recurse: run tests in subdirs
test-recurse:
@ for subdir in $(SUBDIRS) ; do \
test "$$subdir" = "." -o "$$subdir" = "po" -o "$$subdir" = "po-properties" || \
( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) test ) || exit $? ; \
done
# test-report: run tests in subdirs and generate report
# perf-report: run tests in subdirs with -m perf and generate report
# full-report: like test-report: with -m perf and -m slow
test-report perf-report full-report: ${TEST_PROGS}
@ ignore_logdir=true ; \
if test -z "$$GTESTER_LOGDIR" ; then \
GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
ignore_logdir=false ; \
fi ; \
for subdir in $(SUBDIRS) ; do \
test "$$subdir" = "." -o "$$subdir" = "po" -o "$$subdir" = "po-properties" || \
( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
done ; \
$(SKIP_GDKTARGET) || test -z "${TEST_PROGS}" || { \
case $@ in \
test-report) test_options="-k";; \
perf-report) test_options="-k -m=perf";; \
full-report) test_options="-k -m=perf -m=slow";; \
esac ; \
$(XVFB_START) && { \
set -e; \
if test -z "$$GTESTER_LOGDIR" ; then \
G_TEST_SRCDIR="${abs_srcdir}" G_TEST_BUILDDIR="${abs_builddir}" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
elif test -n "${TEST_PROGS}" ; then \
G_TEST_SRCDIR="${abs_srcdir}" G_TEST_BUILDDIR="${abs_builddir}" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
fi ; \
}; \
}; \
$$ignore_logdir || { \
echo '<?xml version="1.0"?>' > $@.xml ; \
echo '<report-collection>' >> $@.xml ; \
for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
done ; \
echo >> $@.xml ; \
echo '</report-collection>' >> $@.xml ; \
rm -rf "$$GTESTER_LOGDIR"/ ; \
${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
}
.PHONY: test test-cwd test-recurse test-report perf-report full-report
# run make test-cwd as part of make check
check-local: test-cwd

160
NEWS
View File

@@ -1,3 +1,163 @@
Overview of Changes in GTK+ 3.91.2
==================================
* All widgets are drawing CSS backgrounds and borders
* All gadgets have been replaced by widgets
* GtkSpinButton no longer derives from GtkEntry
* GtkScrollbar no longer derives from GtkRange
* GtkAccelLabel no longer derives from GtkLabel
* All remaining style properties have been removed
* A new 'widget bowl' demo has been added in gtk4-demo
* GtkEventBox has been removed. It is no longer needed
* Add support for entering emoji by name using Ctrl-Shift-e
* Wayland:
- Support Wacom tablet wheel scrolling
- Support the shortcut inhibitor protocol
* Bugs fixed:
776903 Label with hyperlinks cannot be opened with touch on wayland
776909 gtk_adjustment_clamp_page: Conditional jump or move depends on unin...
777333 In a GNOME Wayland session, gnome-terminal windows cannot be moved ...
777515 gtk3-icon-browser doesn't list document-edit-symbolic icon
778188 TE crashes on multiple repeated BELL chars
780938 No icon tooltip shown in GtkEntry
781246 Return value of gtk_widget_get_parent_window should be marked (nullable)
783343 wayland: RFC - add shortcut inhibitor support
783906 gtk_accelerator_get_label broken
784016 Crash in gnome-terminal due to calling a GdkDisplayClass vfunc on a ...
784624 process-stop-symbolic hardcoded as app menu fallback
785280 GtkCenterBox: No G_BEGIN_DECLS and G_END_DECLS in gtkcenterbox.h
785318 GtkActionBar: g_object_class_install_properties() is not called
785375 Cursors for Wacom tablets are not always updated correctly under Wayland
785423 Missing nullable annotation for gtk_bin_get_child
785672 Entry: Setting icon tooltip to empty disables tooltip on whole widget
785793 gsk_color_matrix_node_draw leaking cairo_pattern_t
* Translation updates:
Croatian
Czech
Friulian
Indonesian
Punjabi
Slovenian
Spanish
Overview of Changes in GTK+ 3.91.1
==================================
* Redo event delivery and focus handling and grabs, and stop using
subwindows for widgets. API changes due to this include:
- a new GtkWidget::pick vfunc
- drop event mask apis
- drop windows from gestures
* The prelight state is now automatically set on widgets
* New widget: GtkCenterBox. This widget provides the center child
functionality that used to be part of GtkBox
* Wayland
- Improve the key repeat implementation
- Set vid/pid on tablet devices
* OS X:
- Add native file chooser support
* Bugs fixed:
745289 wayland: do not use g_error() on connection errors
759308 Instant apply in printing dialog (number of copies)
766517 GtkAboutDialog should use https:// license URLs
770513 MainToolbar in full-screen mode has rounded corners, which show video pix...
772281 Quartz backend: gtk_clipboard_get_selection not implemented
773299 Ensure GTK+-4.x builds and works on Windows (MSVC in particular)
775636 "New folder" creation popover warnings about trailing spaces flashes in...
781285 Key repeat cancel under Wayland should depend on which key is repeating
781583 gtk_image_new_from_resource does not work
781935 Add nullable return annotation to gtk_notebook_get_tab_label
781945 SIGSEGV dragging window on Wayland when toplevel window set_transient_for...
782040 Wacom pen calibration application responds to mouse input
782283 Wayland: Crash when dismissing a menu when a tooltip is visible
783047 Many apps crash in gdk_event_source_prepare when logging out of GNOME
783347 gtkfilechoosernativewin32: Fix support for non-ASCII paths
783397 Remove unused code in gtktextdisplay.c
783445 Incomplete documentation of gtk_widget_insert_after/before()
783587 Crash when NULL is passed to GtkActionHelper to unset action-name
784323 Quartz backend: gtk_clipboard_get_default not implemented
784723 macOS: native file chooser dialog
784888 gtkapplication: Mark gtk_application_get_active_window() as nullable
* Translation updates:
Catalan
Czech
Friulian
Hebrew
Kazakh
Norwegian bokmål
Spanish
Overview of Changes in GTK+ 3.91.0
==================================
* Initial support for OS X has been merged
* Initial support for building with meson has been added
* New API:
- gtk_widget_insert_before/after
* Removed API:
- GtkBox has lost its expand and fill child properties, use
the general align property for it
- GtkLabel has lost its angle property, it will be replaced by general
widget transformation support in the future
- GtkWindow has lost its hide-titlebar-when-maximized property
- GtkBox has lost its center child support
- The compat keysym definitions have been removed
* Bugs fixed:
769881 Preliminary Meson build files
771269 Open in new tab / window doesn't work on unmounted file systems
778301 GtkTooltip doesn't clear source ID in all circumstances
778853 propagate-natural-width/height request too much with !overlay-scrolling...
779078 Adwaita: last treeview header button adds border on hover
779184 Gtk+4 (3.89.4) with Quartz backend: all apps segfault
780041 Optionally depend on sassc to generate the theme CSS
780301 wayland: Fix harmless clang warnings
780734 flowbox: dont try to focus or draw NULL widgets
780878 docs: Point links to correct versions
780944 Please add a specific CSS class for appmenu button in GtkHeaderBar
781162 Make GtkPlacesView monitor network
781195 Fix testsuite for GtkPlacesView
781214 define entry-tag in Adwaita.
781422 translate_wm_button_layout_to_gtk() is licensed under the GPL
781622 gtkplacesview.ui: Update helper label to include IPv6 addresses
781737 Drag icon is always postioned in the top left corner
781767 Wayland: increase key delivery verbosity
781992 GtkMenuButton with no popover retains prelight state when no longer sel...
782109 wayland: memory leak when exporting handle
782202 linkbutton: Fix memory leak
* Translation updates:
Croatian
Greek
Hungarian
Indonesian
Polish
Russian
Slovenian
Overview of Changes in GTK+ 3.90.0
==================================

View File

@@ -1,82 +0,0 @@
General Information
===================
This is GTK+ version @GTK_VERSION@. GTK+ is a multi-platform toolkit for
creating graphical user interfaces. Offering a complete set of widgets,
GTK+ is suitable for projects ranging from small one-off projects to
complete application suites.
GTK+ is free software and part of the GNU Project. However, the
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
developers, including those developing proprietary software, without any
license fees or royalties.
The official download locations are:
ftp://ftp.gtk.org/pub/gtk
http://download.gnome.org/sources/gtk+
The official web site is:
http://www.gtk.org/
Information about mailing lists can be found at
http://www.gtk.org/mailing-lists.php
Installation
============
See the file 'INSTALL'
How to report bugs
==================
Bugs should be reported to the GNOME bug tracking system.
(http://bugzilla.gnome.org, product glib.) You will need
to create an account for yourself.
In the bug report please include:
* Information about your system. For instance:
- What operating system and version
- For Linux, what version of the C library
And anything else you think is relevant.
* How to reproduce the bug.
If you can reproduce it with one of the test programs that are built
in the tests/ subdirectory, that will be most convenient. Otherwise,
please include a short test program that exhibits the behavior.
As a last resort, you can also provide a pointer to a larger piece
of software that can be downloaded.
* If the bug was a crash, the exact text that was printed out
when the crash occurred.
* Further information such as stack traces may be useful, but
is not necessary.
Patches
=======
Patches should also be submitted to bugzilla.gnome.org. If the
patch fixes an existing bug, add the patch as an attachment
to that bug report.
Otherwise, enter a new bug report that describes the patch,
and attach the patch to that bug report.
Patches should be in unified diff form. (The -up option to GNU diff)
Even better are git-formatted patches. (Use git format-patch)
Release notes
=============
Release notes for releases of GTK+ 3.x are part of the migration
guide in the GTK+ documentation. See
https://developer.gnome.org/gtk3/unstable/gtk-migrating-2-to-3.html

170
README.md Normal file
View File

@@ -0,0 +1,170 @@
GTK+ — The GTK toolkit
======================
General information
-------------------
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Offering a complete set of widgets, GTK+ is suitable for projects ranging
from small one-off projects to complete application suites.
GTK+ is free software and part of the GNU Project. However, the
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
developers, including those developing proprietary software, without any
license fees or royalties.
The official download location
- https://download.gnome.org/sources/gtk+
The official web site
- https://www.gtk.org
The official developers blog
- https://blog.gtk.org
Information about mailing lists can be found at
- http://www.gtk.org/mailing-lists.php
Building and installing
-----------------------
In order to build GTK+ you will need:
- a C99 compatible compiler
- Python 3
- [Meson](http://mesonbuild.com)
- [Ninja](https://ninja-build.org)
You will also need various dependencies, based on the platform you are
building for:
- [GLib](https://download.gnome.org/sources/glib)
- [GdkPixbuf](https://download.gnome.org/sources/gdk-pixbuf)
- [GObject-Introspection](https://download.gnome.org/sources/gobject-introspection)
- [Cairo](https://www.cairographics.org)
- [Pango](https://download.gnome.org/sources/pango)
- [Epoxy](https://github.com/anholt/libepoxy)
- [Graphene](https://github.com/ebassi/graphene)
- [ATK](https://download.gnome.org/sources/atk)
- [Xkb-common](https://github.com/xkbcommon/libxkbcommon)
If you are building the X11 backend, you will also need:
- Xlib, and the following X extensions:
- xrandr
- xrender
- xi
- xext
- xfixes (optional)
- xcursor (optional)
- xdamage (optional)
- xcomposite (optional)
- [atk-bridge-2.0](https://download.gnome.org/sources/at-spi2-atk)
If you are building the Wayland backend, you will also need:
- Wayland-client
- Wayland-protocols
- Wayland-cursor
- Wayland-EGL
Once you have all the necessary dependencies, you can build GTK+ by using
Meson:
```sh
$ meson _build .
$ cd _build
$ ninja
```
You can run the test suite using:
```sh
$ meson test
```
And, finally, you can install GTK+ using:
```
$ sudo ninja install
```
Complete information about installing GTK+ and related libraries
can be found in the file:
```
docs/reference/gtk/html/gtk-building.html
```
Or [online](https://developer.gnome.org/gtk4/stable/gtk-building.html)
How to report bugs
------------------
Bugs should be reported to the GNOME [bug tracking system](https://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b).
You will need an account for yourself.
In the bug report please include:
* Information about your system. For instance:
- which version of GTK+ you are using
- what operating system and version
- for Linux, which distribution
- if you built GTK+, the list of options used to configure the build
And anything else you think is relevant.
* How to reproduce the bug.
If you can reproduce it with one of the test programs that are built
in the tests/ subdirectory, that will be most convenient. Otherwise,
please include a short test program that exhibits the behavior.
As a last resort, you can also provide a pointer to a larger piece
of software that can be downloaded.
* If the bug was a crash, the exact text that was printed out
when the crash occurred.
* Further information such as stack traces may be useful, but
is not necessary.
Contributing
------------
Patches should also be submitted to the bug tracking system. If the patch
fixes an existing bug, add the patch as an attachment to that bug report;
otherwise, enter a new bug report that describes the patch, and attach the
patch to that bug report.
Patches should be in Git-formatted form. You should use `git format-patch`
to generate them. We recommend using [git-bz](http://git.fishsoup.net/man/git-bz.html).
For more information on the recommended workflow, please read
[this wiki page](https://wiki.gnome.org/Git/WorkingWithPatches).
Please, follow the `CODING_STYLE` document in order to conform to GTK+'s
coding style when submitting a code contribution.
Release notes
-------------
The release notes for GTK+ are part of the migration guide in the API
reference. See:
- [3.x release notes](https://developer.gnome.org/gtk3/unstable/gtk-migrating-2-to-3.html)
- [4.x release notes](https://developer.gnome.org/gtk4/unstable/gtk-migrating-3-to-4.html)
Licensing terms
---------------
GTK+ is released under the terms of the GNU Lesser General Public License,
version 2.1 or, at your option, any later version, as published by the Free
Software Foundation.
Please, see the `COPYING` file for further information.

View File

@@ -1,206 +0,0 @@
The Win32 backend in GTK+ is not as stable or correct as the X11 one.
For prebuilt runtime and developer packages see
http://ftp.gnome.org/pub/gnome/binaries/win32/
Building GTK+ on Win32
======================
First you obviously need developer packages for the compile-time
dependencies: GDK-Pixbuf, Pango, atk, glib, gettext-runtime, libiconv at least.
See http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies .
For people compiling GTK+ with Visual C++ 2005 or later, it is
recommended that the same compiler is used for at least GDK-Pixbuf,
Pango, atk and glib so that crashes and errors caused by different CRTs
can be avoided. The VS 2008 project files and/or VS Makefiles are
either already available or will be available in the next stable release.
Unfortunately compiling with Microsoft's compilers versions 2003 or earlier
is not supported as compiling the latest stable GLib (which *is* required for
building this GTK+ release) requires features from newer compilers
and/or Platform SDKs
After installing the dependencies, there are two ways to build GTK+
for win32.
1) GNU tools, ./configure && make install
-----------------------------------------
This requires you have mingw and MSYS.
Use the configure script, and the resulting Makefiles (which use
libtool and gcc to do the compilation). I use this myself, but it can
be hard to setup correctly.
The full script I run to build GTK+ 2.16 unpacked from a source
distribution is as below. This is from bulding GTK+ 2.16.5. I don't
use any script like this to build the development branch, as I don't
distribute any binaries from development branches.
# This is a shell script that calls functions and scripts from
# tml@iki.fi's personal work env<6E>ronment. It is not expected to be
# usable unmodified by others, and is included only for reference.
MOD=gtk+
VER=2.16.5
REV=1
ARCH=win32
THIS=${MOD}_${VER}-${REV}_${ARCH}
RUNZIP=${MOD}_${VER}-${REV}_${ARCH}.zip
DEVZIP=${MOD}-dev_${VER}-${REV}_${ARCH}.zip
HEX=`echo $THIS | md5sum | cut -d' ' -f1`
TARGET=c:/devel/target/$HEX
usedev
usemsvs6
(
set -x
DEPS=`latest --arch=${ARCH} glib atk cairo pango libpng zlib libtiff jpeg`
PROXY_LIBINTL=`latest --arch=${ARCH} proxy-libintl`
PKG_CONFIG_PATH=
for D in $DEPS; do
PATH=/devel/dist/${ARCH}/$D/bin:$PATH
[ -d /devel/dist/${ARCH}/$D/lib/pkgconfig ] && PKG_CONFIG_PATH=/devel/dist/${ARCH}/$D/lib/pkgconfig:$PKG_CONFIG_PATH
done
LIBPNG=`latest --arch=${ARCH} libpng`
ZLIB=`latest --arch=${ARCH} zlib`
LIBTIFF=`latest --arch=${ARCH} libtiff`
JPEG=`latest --arch=${ARCH} jpeg`
patch -p0 <<'EOF'
EOF
lt_cv_deplibs_check_method='pass_all' \
CC='gcc -mtune=pentium3 -mthreads' \
CPPFLAGS="-I/devel/dist/${ARCH}/${LIBPNG}/include \
-I/devel/dist/${ARCH}/${ZLIB}/include \
-I/devel/dist/${ARCH}/${LIBTIFF}/include \
-I/devel/dist/${ARCH}/${JPEG}/include \
-I/devel/dist/${ARCH}/${PROXY_LIBINTL}/include" \
LDFLAGS="-L/devel/dist/${ARCH}/${LIBPNG}/lib \
-L/devel/dist/${ARCH}/${ZLIB}/lib \
-L/devel/dist/${ARCH}/${LIBTIFF}/lib \
-L/devel/dist/${ARCH}/${JPEG}/lib \
-L/devel/dist/${ARCH}/${PROXY_LIBINTL}/lib -Wl,--exclude-libs=libintl.a \
-Wl,--enable-auto-image-base" \
LIBS=-lintl \
CFLAGS=-O2 \
./configure \
--enable-win32-backend \
--disable-gdiplus \
--with-included-immodules \
--without-libjasper \
--enable-debug=yes \
--enable-explicit-deps=no \
--disable-gtk-doc \
--disable-static \
--prefix=$TARGET &&
libtoolcacheize &&
rm gtk/gtk.def &&
(PATH="$PWD/gdk-pixbuf/.libs:/devel/target/$HEX/bin:$PATH" make -j3 install || (rm .libtool-cache* && PATH="/devel/target/$HEX/bin:$PATH" make -j3 install)) &&
PATH="/devel/target/$HEX/bin:$PATH" gdk-pixbuf-query-loaders >/devel/target/$HEX/etc/gtk-2.0/gdk-pixbuf.loaders &&
grep -v -E 'Automatically generated|Created by|LoaderDir =' <$TARGET/etc/gtk-2.0/gdk-pixbuf.loaders >$TARGET/etc/gtk-2.0/gdk-pixbuf.loaders.temp &&
mv $TARGET/etc/gtk-2.0/gdk-pixbuf.loaders.temp $TARGET/etc/gtk-2.0/gdk-pixbuf.loaders &&
grep -v -E 'Automatically generated|Created by|ModulesPath =' <$TARGET/etc/gtk-2.0/gtk.immodules >$TARGET/etc/gtk-2.0/gtk.immodules.temp &&
mv $TARGET/etc/gtk-2.0/gtk.immodules.temp $TARGET/etc/gtk-2.0/gtk.immodules &&
./gtk-zip.sh &&
mv /tmp/${MOD}-${VER}.zip /tmp/$RUNZIP &&
mv /tmp/${MOD}-dev-${VER}.zip /tmp/$DEVZIP
) 2>&1 | tee /devel/src/tml/packaging/$THIS.log
(cd /devel && zip /tmp/$DEVZIP src/tml/packaging/$THIS.{sh,log}) &&
manifestify /tmp/$RUNZIP /tmp/$DEVZIP
You should not just copy the above blindly. There are some things in
the script that are very specific to *my* build setup on *my* current
machine. For instance the "latest" command, the "usedev" and
"usemsvs6" shell functions, the /devel/dist folder. The above script
is really just meant for reference, to give an idea. You really need
to understand what things like PKG_CONFIG_PATH are and set them up
properly after installing the dependencies before building GTK+.
As you see above, after running configure, one can just say "make
install", like on Unix. A post-build fix is needed, running
gdk-pixbuf-query-loaders once more to get a correct gdk-pixbuf.loaders
file.
For a 64-bit build you need to remove the gtk/gtk.def file and let it
be regenerated by the makefilery. This is because the 64-bit GTK dll
has a slightly different list of exported function names. This is on
purpose and not a bug. The API is the same at the source level, and
the same #defines of some function names to actually have a _utf8
suffix is used (just to keep the header simpler). But the
corresponding non-suffixed function to maintain ABI stability are not
needed in the 64-bit case (because there are no older EXEs around that
would require such for ABI stability).
2) Microsoft's tools
--------------------
Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
makefile.msc in gdk and gtk. Be prepared to manually edit various
makefile.msc files, and the makefile snippets in build/win32.
There are also VS 2008/2010 solution and project files to build GTK+, which
are maintained by Chun-wei Fan. They should build GTK+ out of the box,
provided that the afore-mentioned dependencies are installed. They will
build GDK with the Win32 backend, GTK+ itself (with GAIL/a11y built in),
the GAIL-Util library and the gtk-demo program.
Please refer to the following GNOME Live! page for a more detailed ouline
on the process of building the GTK+ stack and its dependencies with Visual
C++:
https://wiki.gnome.org/Projects/GTK+/Win32/MSVCCompilationOfGTKStack
Alternative 1 also generates Microsoft import libraries (.lib), if you
have lib.exe available. It might also work for cross-compilation from
Unix.
I (Tor) use method 1 myself. Hans Breuer has been taking care of the MSVC
makefiles. At times, we disagree a bit about various issues, and for
instance the makefile.msc files might not produce identically named
DLLs and import libraries as the "autoconfiscated" makefiles and
libtool do. If this bothers you, you will have to fix the makefiles.
Using GTK+ on Win32
===================
To use GTK+ on Win32, you also need either one of the above mentioned
compilers. Other compilers might work, but don't count on it. Look for
prebuilt developer packages (DLLs, import libraries, headers) on the
above website.
Multi-threaded use of GTK+ on Win32
===================================
Multi-threaded GTK+ programs might work on Windows in special simple
cases, but not in general. Sorry. If you have all GTK+ and GDK calls
in the same thread, it might work. Otherwise, probably not at
all. Possible ways to fix this are being investigated.
Wintab
======
The tablet support uses the Wintab API. The Wintab development kit is
no longer required. The wintab.h header file is bundled with GTK+
sources. Unfortunately it seems that only Wacom tablets come with
support for the Wintab API nowadays.
--Tor Lillqvist <tml@iki.fi>, <tml@novell.com>
--Updated by Fan, Chun-wei <fanc999@yahoo.com.tw>

View File

@@ -1,79 +0,0 @@
# autoconf 2.13 / 2.50 compatibility macro
# GLIB_AC_DIVERT_BEFORE_HELP(STUFF)
# ---------------------------------
# Put STUFF early enough so that they are available for $ac_help expansion.
# Handle both classic (<= v2.13) and modern autoconf
AC_DEFUN([GLIB_AC_DIVERT_BEFORE_HELP],
[ifdef([m4_divert_text], [m4_divert_text([NOTICE],[$1])],
[ifdef([AC_DIVERT], [AC_DIVERT([NOTICE],[$1])],
[AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
$1
AC_DIVERT_POP()])])])
# GTK_ADD_LIB(VAR,LIBNAME)
# ---------------------------------
# Helper macro to add a -lBlah to a variable, avoiding repeats
# Note that this needs to be quoted when used in an enclosing macro
AC_DEFUN([GTK_ADD_LIB],
[ case "$$1 " in
*-l$2[[\ \ ]]*) ;;
*) $1="-l$2 $$1" ;;
esac
])
# Checks the location of the XML Catalog
# Usage:
# JH_PATH_XML_CATALOG([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# Defines XMLCATALOG and XML_CATALOG_FILE substitutions
AC_DEFUN([JH_PATH_XML_CATALOG],
[
# check for the presence of the XML catalog
AC_ARG_WITH([xml-catalog],
AC_HELP_STRING([--with-xml-catalog=CATALOG],
[path to xml catalog to use]),,
[with_xml_catalog=/etc/xml/catalog])
jh_found_xmlcatalog=true
XML_CATALOG_FILE="$with_xml_catalog"
AC_SUBST([XML_CATALOG_FILE])
AC_MSG_CHECKING([for XML catalog ($XML_CATALOG_FILE)])
if test -f "$XML_CATALOG_FILE"; then
AC_MSG_RESULT([found])
else
jh_found_xmlcatalog=false
AC_MSG_RESULT([not found])
fi
# check for the xmlcatalog program
AC_PATH_PROG(XMLCATALOG, xmlcatalog, no)
if test "x$XMLCATALOG" = xno; then
jh_found_xmlcatalog=false
fi
if $jh_found_xmlcatalog; then
ifelse([$1],,[:],[$1])
else
ifelse([$2],,[AC_MSG_ERROR([could not find XML catalog])],[$2])
fi
])
# Checks if a particular URI appears in the XML catalog
# Usage:
# JH_CHECK_XML_CATALOG(URI, [FRIENDLY-NAME], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
AC_DEFUN([JH_CHECK_XML_CATALOG],
[
AC_REQUIRE([JH_PATH_XML_CATALOG],[JH_PATH_XML_CATALOG(,[:])])dnl
AC_MSG_CHECKING([for ifelse([$2],,[$1],[$2]) in XML catalog])
if $jh_found_xmlcatalog && \
AC_RUN_LOG([$XMLCATALOG --noout "$XML_CATALOG_FILE" "$1" >&2]); then
AC_MSG_RESULT([found])
ifelse([$3],,,[$3
])dnl
else
AC_MSG_RESULT([not found])
ifelse([$4],,
[AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],
[$4])
fi
])

View File

@@ -1,46 +0,0 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
test -n "$srcdir" || srcdir=`dirname "$0"`
test -n "$srcdir" || srcdir=.
olddir=`pwd`
cd "$srcdir"
mkdir -p m4
GTKDOCIZE=`which gtkdocize`
if test -z $GTKDOCIZE; then
echo "*** No GTK-Doc found, please install it ***"
exit 1
else
gtkdocize || exit $?
fi
PKGCONFIG=`which pkg-config`
if test -z "$PKGCONFIG"; then
echo "*** pkg-config not found, please install it ***"
exit 1
fi
pkg-config --print-errors gobject-introspection-1.0
if [ $? != 0 ]; then
echo "You probably need to install 'libgirepository1.0-dev'"
exit 1
fi
# README and INSTALL are required by automake, but may be deleted by clean
# up rules. to get automake to work, simply touch these here, they will be
# regenerated from their corresponding *.in files by ./configure anyway.
touch README INSTALL
AUTORECONF=`which autoreconf`
if test -z $AUTORECONF; then
echo "*** No autoreconf found, please install it ***"
exit 1
else
autoreconf --force --install --verbose || exit $?
fi
cd "$olddir"
test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"

21
build-aux/meson/post-install.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
gtk_api_version=$1
gtk_abi_version=$2
gtk_libdir=$3
gtk_datadir=$4
# Package managers set this so we don't need to run
if [ -z "$DESTDIR" ]; then
echo Compiling GSettings schemas...
glib-compile-schemas ${gtk_datadir}/glib-2.0/schemas
echo Updating desktop database...
update-desktop-database -q ${gtk_datadir}/applications
echo Updating icon cache...
gtk-update-icon-cache -q -t -f ${gtk_datadir}/icons/hicolor
echo Updating input method modules cache...
gtk4-query-immodules > ${gtk_libdir}/gtk-${gtk_api_version}/${gtk_abi_version}/immodules.cache
fi

291
config.h.meson Normal file
View File

@@ -0,0 +1,291 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* always defined to indicate that i18n is enabled */
#define ENABLE_NLS 1
/* The prefix for our gettext translation domains. */
#mesondefine GETTEXT_PACKAGE
/* Disable deprecation warnings from glib */
#mesondefine GLIB_DISABLE_DEPRECATION_WARNINGS
/* Define the location where the catalogs will be installed */
#mesondefine GTK_LOCALEDIR
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#mesondefine HAVE_BIND_TEXTDOMAIN_CODESET
/* Have the cloudproviders library */
#mesondefine HAVE_CLOUDPROVIDERS
/* define if we have colord */
#mesondefine HAVE_COLORD
/* Define to 1 if you have the <crt_externs.h> header file. */
#mesondefine HAVE_CRT_EXTERNS_H
/* Define to 1 if CUPS 1.6 API is available */
#mesondefine HAVE_CUPS_API_1_6
/* Define to 1 if you have the `dcgettext' function. */
#mesondefine HAVE_DCGETTEXT
/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
*/
#mesondefine HAVE_DECL_ISINF
/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
*/
#mesondefine HAVE_DECL_ISNAN
/* Define to 1 if you have the <dlfcn.h> header file. */
#mesondefine HAVE_DLFCN_H
/* Define to 1 if you have the <ftw.h> header file. */
#mesondefine HAVE_FTW_H
/* Define to 1 if you have the `getpagesize' function. */
#mesondefine HAVE_GETPAGESIZE
/* Define to 1 if you have the `getresuid' function. */
#mesondefine HAVE_GETRESUID
/* Define if gio-unix is available */
#mesondefine HAVE_GIO_UNIX
/* Define to 1 if you have the `httpGetAuthString' function. */
#mesondefine HAVE_HTTPGETAUTHSTRING
/* Define if cups http_t authstring field is accessible */
#mesondefine HAVE_HTTP_AUTHSTRING
/* Define to 1 if you have the <inttypes.h> header file. */
#mesondefine HAVE_INTTYPES_H
/* Define to 1 if the system has the type `IPrintDialogCallback'. */
#mesondefine HAVE_IPRINTDIALOGCALLBACK
/* Define to 1 if you have the <locale.h> header file. */
#mesondefine HAVE_LOCALE_H
/* Define to 1 if you have the `lstat' function. */
#mesondefine HAVE_LSTAT
/* Define to 1 if you have the `mallinfo' function. */
#mesondefine HAVE_MALLINFO
/* Define to 1 if you have the <memory.h> header file. */
#mesondefine HAVE_MEMORY_H
/* Define to 1 if you have the `mkstemp' function. */
#mesondefine HAVE_MKSTEMP
/* Define to 1 if you have a working `mmap' system call. */
#mesondefine HAVE_MMAP
/* Define to 1 if you have the `nearbyint' function. */
#mesondefine HAVE_NEARBYINT
/* Define to 1 if you have the `posix_fallocate' function. */
#mesondefine HAVE_POSIX_FALLOCATE
/* Have the Xrandr extension library */
#mesondefine HAVE_RANDR
/* Have the Xrandr 1.5 extension library */
#mesondefine HAVE_RANDR15
/* Define to 1 if you have the `rint' function. */
#mesondefine HAVE_RINT
/* Define to 1 if you have the `round' function. */
#mesondefine HAVE_ROUND
/* Define to 1 if you have the `sincos' function. */
#mesondefine HAVE_SINCOS
/* Define to 1 if you have the `log2` function */
#mesondefine HAVE_LOG2
/* Define to 1 if you ahve the `exp2` function */
#mesondefine HAVE_EXP2
/* Define to 1 if you have the <stdint.h> header file. */
#mesondefine HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#mesondefine HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#mesondefine HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#mesondefine HAVE_STRING_H
/* Define to 1 if you have the <sys/mman.h> header file. */
#mesondefine HAVE_SYS_MMAN_H
/* Define to 1 if you have the <sys/param.h> header file. */
#mesondefine HAVE_SYS_PARAM_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#mesondefine HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#mesondefine HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#mesondefine HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#mesondefine HAVE_UNISTD_H
/* Have the XCOMPOSITE X extension */
#mesondefine HAVE_XCOMPOSITE
/* Have the Xcursor library */
#mesondefine HAVE_XCURSOR
/* Have the XDAMAGE X extension */
#mesondefine HAVE_XDAMAGE
/* Have the XFIXES X extension */
#mesondefine HAVE_XFIXES
/* Define to 1 if XFree Xinerama is available */
#mesondefine HAVE_XFREE_XINERAMA
/* Have XGenericEvent */
#mesondefine HAVE_XGENERICEVENTS
/* Define to use XKB extension */
#mesondefine HAVE_XKB
/* Have the SYNC extension library */
#mesondefine HAVE_XSYNC
/* Define to 1 if you have the `_lock_file' function */
#mesondefine HAVE__LOCK_FILE
/* Define to 1 if you have the `flockfile' function */
#mesondefine HAVE_FLOCKFILE
/* Define if _NL_MEASUREMENT_MEASUREMENT is available */
#mesondefine HAVE__NL_MEASUREMENT_MEASUREMENT
/* Define if _NL_PAPER_HEIGHT is available */
#mesondefine HAVE__NL_PAPER_HEIGHT
/* Define if _NL_PAPER_WIDTH is available */
#mesondefine HAVE__NL_PAPER_WIDTH
/* Define if _NL_TIME_FIRST_WEEKDAY is available */
#mesondefine HAVE__NL_TIME_FIRST_WEEKDAY
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#mesondefine LT_OBJDIR
/* Define if <X11/extensions/XIproto.h> needed for xReply */
#mesondefine NEED_XIPROTO_H_FOR_XREPLY
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#mesondefine NO_MINUS_C_MINUS_O
/* Define to the address where bug reports for this package should be sent. */
#mesondefine PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#mesondefine PACKAGE_NAME
/* Define to the full name and version of this package. */
#mesondefine PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#mesondefine PACKAGE_TARNAME
/* Define to the home page for this package. */
#mesondefine PACKAGE_URL
/* Define to the version of this package. */
#mesondefine PACKAGE_VERSION
/* Use NSBundle functions to determine load paths for libraries, translations,
etc. */
#mesondefine QUARTZ_RELOCATION
/* Define to 1 if you have the ANSI C header files. */
#mesondefine STDC_HEADERS
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
/* Enable threading extensions on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
/* Enable general extensions on Solaris. */
#ifndef __EXTENSIONS__
# undef __EXTENSIONS__
#endif
/* Define to 1 if XInput 2.0 is available */
#mesondefine XINPUT_2
/* Define to 1 if XInput 2.2 is available */
#mesondefine XINPUT_2_2
/* Define to 1 if the X Window System is missing or not being used. */
#mesondefine X_DISPLAY_MISSING
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
#mesondefine _FILE_OFFSET_BITS
/* defines how to decorate public symbols while building */
#mesondefine _GDK_EXTERN
/* Define for large files, on AIX-style hosts. */
#mesondefine _LARGE_FILES
/* Define to 1 if on MINIX. */
#mesondefine _MINIX
/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
#mesondefine _POSIX_1_SOURCE
/* Define to 1 if you need to in order for `stat' and other things to work. */
#mesondefine _POSIX_SOURCE
/* Define to `int' if <sys/types.h> doesn't define. */
#mesondefine gid_t
/* Define to `int' if <sys/types.h> doesn't define. */
#mesondefine uid_t
/* Define to 1 if linux/memfd.h exists */
#mesondefine HAVE_LINUX_MEMFD_H
#mesondefine GTK_SYSCONFDIR
#mesondefine GTK_LOCALEDIR
#mesondefine GTK_DATADIR
#mesondefine GTK_LIBDIR
#mesondefine GTK_PRINT_BACKENDS

View File

@@ -1,337 +0,0 @@
/* config.h.win32.in. Merged from two versions generated by configure for gcc and MSVC. */
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.in by autoheader. */
/* always defined to indicate that i18n is enabled */
#define ENABLE_NLS 1
/* define to enable packagekit */
/* #undef ENABLE_PACKAGEKIT */
/* The prefix for our gettext translation domains. */
#define GETTEXT_PACKAGE "@GETTEXT_PACKAGE@"
/* Disable deprecation warnings from glib */
/* #undef GLIB_DISABLE_DEPRECATION_WARNINGS */
/* Define if debugging is enabled */
#define GTK_COMPILED_WITH_DEBUGGING "yes"
/* Define the location where the catalogs will be installed */
#define GTK_LOCALEDIR "NONE/share/locale"
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#define HAVE_BIND_TEXTDOMAIN_CODESET 1
/* define if we have colord */
/* #undef HAVE_COLORD */
/* Define to 1 if you have the <crt_externs.h> header file. */
/* #undef HAVE_CRT_EXTERNS_H */
/* Define to 1 if CUPS 1.2 API is available */
/* #undef HAVE_CUPS_API_1_2 */
/* Define to 1 if you have the `dcgettext' function. */
#define HAVE_DCGETTEXT 1
/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
*/
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_DECL_ISINF 1
#endif
/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
*/
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_DECL_ISNAN 1
#endif
/* Define to 1 if you have the <dlfcn.h> header file. */
/* #undef HAVE_DLFCN_H */
/* Define to 1 if you have the `exp2' function. */
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_EXP2 1
#endif
/* Define to 1 if you have the `flockfile' function. */
#undef HAVE_FLOCKFILE
/* Define to 1 if you have the <ftw.h> header file. */
/* #undef HAVE_FTW_H */
/* Define to 1 if you have the `getpagesize' function. */
#ifndef _MSC_VER
#define HAVE_GETPAGESIZE 1
#else
/* #undef HAVE_GETPAGESIZE */
#endif
/* Define to 1 if you have the `getresuid' function. */
/* #undef HAVE_GETRESUID */
/* Define if the GNU gettext() function is already present or preinstalled. */
#define HAVE_GETTEXT 1
/* Define if gio-unix is available */
/* #undef HAVE_GIO_UNIX */
/* Have GNU ftw */
/* #undef HAVE_GNU_FTW */
/* Define to 1 if you have the `httpGetAuthString' function. */
/* #undef HAVE_HTTPGETAUTHSTRING */
/* Define if cups http_t authstring field is accessible */
/* #undef HAVE_HTTP_AUTHSTRING */
/* Define to 1 if you have the <inttypes.h> header file. */
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_INTTYPES_H 1
#else
/* #undef HAVE_INTTYPES_H */
#endif
/* Define to 1 if the system has the type `IPrintDialogCallback'. */
#define HAVE_IPRINTDIALOGCALLBACK 1
/* Define if your <locale.h> file defines LC_MESSAGES. */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the `m' library (-lm). */
#ifndef _MSC_VER
#define HAVE_LIBM 1
#endif
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define to 1 if you have the `localtime_r' function. */
/* #undef HAVE_LOCALTIME_R */
/* Define to 1 if you have the `log2' function. */
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_LOG2 1
#endif
/* Define to 1 if you have the `lstat' function. */
/* #undef HAVE_LSTAT */
/* Define to 1 if you have the `mallinfo' function. */
/* #undef HAVE_MALLINFO */
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mkstemp' function. */
/* #undef HAVE_MKSTEMP */
/* Define to 1 if you have a working `mmap' system call. */
/* #undef HAVE_MMAP */
/* Define to 1 if nearbyint() is available */
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_NEARBYINT 1
#endif
/* Define to 1 if libpapi available */
/* #undef HAVE_PAPI */
/* Define to 1 if you have the <pwd.h> header file. */
/* #undef HAVE_PWD_H */
/* Have the Xrandr extension library */
/* #undef HAVE_RANDR */
/* Define to 1 if rint() is available */
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_RINT 1
#endif
/* Define to 1 if round() is available */
#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
#define HAVE_ROUND 1
#endif
/* Define to 1 if sincos() is available */
/* #undef HAVE_SINCOS */
/* Have the sockaddr_un.sun_len member */
/* #undef HAVE_SOCKADDR_UN_SUN_LEN */
/* Define to 1 if solaris xinerama is available */
/* #undef HAVE_SOLARIS_XINERAMA */
/* Define to 1 if you have the <stdint.h> header file. */
#ifndef _MSC_VER
#define HAVE_STDINT_H 1
#else
#if (_MSC_VER >= 1600) /* VS 2010+ ships with stdint.h */
#define HAVE_STDINT_H 1
#endif
/* #undef HAVE_STDINT_H */
#endif
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#ifndef _MSC_VER
#define HAVE_STRINGS_H 1
#endif
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/mman.h> header file. */
/* #undef HAVE_SYS_MMAN_H */
/* Define to 1 if you have the <sys/param.h> header file. */
/* #undef HAVE_SYS_PARAM_H */
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if sys/sysinfo.h is available */
/* #undef HAVE_SYS_SYSINFO_H */
/* Define to 1 if sys/systeminfo.h is available */
/* #undef HAVE_SYS_SYSTEMINFO_H */
/* Define to 1 if you have the <sys/time.h> header file. */
#ifndef _MSC_VER
#define HAVE_SYS_TIME_H 1
#else /* _MSC_VER */
/* #undef HAVE_SYS_TIME_H */
#endif
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#ifndef _MSC_VER
#define HAVE_UNISTD_H 1
#else
/* #undef HAVE_UNISTD_H */
#endif
/* Have the XCOMPOSITE X extension */
/* #undef HAVE_XCOMPOSITE */
/* Have the Xcursor library */
/* #undef HAVE_XCURSOR */
/* Have the XDAMAGE X extension */
/* #undef HAVE_XDAMAGE */
/* Have the XFIXES X extension */
/* #undef HAVE_XFIXES */
/* Define to 1 if XFree Xinerama is available */
/* #undef HAVE_XFREE_XINERAMA */
/* Have XGenericEvent */
/* #undef HAVE_XGENERICEVENTS */
/* Define to 1 if xinerama is available */
/* #undef HAVE_XINERAMA */
/* Define to use XKB extension */
/* #undef HAVE_XKB */
/* Have the SYNC extension library */
/* #undef HAVE_XSYNC */
/* Define to 1 if you have the `_lock_file' function. */
#define HAVE__LOCK_FILE
/* Define if _NL_MEASUREMENT_MEASUREMENT is available */
/* #undef HAVE__NL_MEASUREMENT_MEASUREMENT */
/* Define if _NL_PAPER_HEIGHT is available */
/* #undef HAVE__NL_PAPER_HEIGHT */
/* Define if _NL_PAPER_WIDTH is available */
/* #undef HAVE__NL_PAPER_WIDTH */
/* Define if _NL_TIME_FIRST_WEEKDAY is available */
/* #undef HAVE__NL_TIME_FIRST_WEEKDAY */
/* Define to 1 if you have the `_NSGetEnviron' function. */
/* #undef HAVE__NSGETENVIRON */
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#define LT_OBJDIR ".libs/"
/* Define if <X11/extensions/XIproto.h> needed for xReply */
/* #undef NEED_XIPROTO_H_FOR_XREPLY */
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#ifndef _MSC_VER
/* #undef NO_MINUS_C_MINUS_O */
#else
#define NO_MINUS_C_MINUS_O 1
#endif
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B"
/* Define to the full name of this package. */
#define PACKAGE_NAME "gtk+"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "gtk+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gtk+"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@"
/* Use NSBundle functions to determine load paths for libraries, translations,
etc. */
/* #undef QUARTZ_RELOCATION */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to 1 if gmodule works and should be used */
#define USE_GMODULE 1
/* Define to 1 if XInput 2.0 is available */
/* #undef XINPUT_2 */
/* Define to 1 if XInput 2.2 is available */
/* #undef XINPUT_2_2 */
/* Define to 1 if the X Window System is missing or not being used. */
/* #undef X_DISPLAY_MISSING */
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
/* # define _DARWIN_USE_64_BIT_INODE 1 */
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
/* defines how to decorate public symbols while building */
#ifdef _MSC_VER
#define _GDK_EXTERN __declspec (dllexport) extern
#else
#define _GDK_EXTERN __attribute__((visibility("default"))) __declspec (dllexport) extern
#endif
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
/* Define to `int' if <sys/types.h> doesn't define. */
#define gid_t int
/* Define to `int' if <sys/types.h> doesn't define. */
#define uid_t int

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +0,0 @@
## Makefile.am for gtk+/demos
include $(top_srcdir)/Makefile.decl
SUBDIRS = gtk-demo widget-factory icon-browser
-include $(top_srcdir)/git.mk

View File

@@ -1,205 +0,0 @@
## Makefile.am for gtk+/demos
include $(top_srcdir)/Makefile.decl
## These should be in the order you want them to appear in the
## demo app, which means alphabetized by demo title, not filename
demos_base = \
application_demo.c \
assistant.c \
builder.c \
button_box.c \
changedisplay.c \
clipboard.c \
colorsel.c \
combobox.c \
css_accordion.c \
css_basics.c \
css_blendmodes.c \
css_multiplebgs.c \
css_pixbufs.c \
css_shadows.c \
cursors.c \
dialog.c \
drawingarea.c \
editable_cells.c \
entry_buffer.c \
entry_completion.c \
event_axes.c \
expander.c \
filtermodel.c \
fishbowl.c \
foreigndrawing.c \
gestures.c \
glarea.c \
headerbar.c \
hypertext.c \
iconview.c \
iconview_edit.c \
images.c \
infobar.c \
links.c \
listbox.c \
flowbox.c \
list_store.c \
markup.c \
menus.c \
modelbutton.c \
overlay.c \
overlay2.c \
panes.c \
pickers.c \
pixbufs.c \
popover.c \
printing.c \
revealer.c \
rotated_text.c \
scale.c \
search_entry.c \
search_entry2.c \
shortcuts.c \
sidebar.c \
sizegroup.c \
spinbutton.c \
spinner.c \
stack.c \
tabs.c \
textmask.c \
textview.c \
textscroll.c \
theming_style_classes.c \
toolpalette.c \
transparent.c \
tree_store.c
demos_opt =
if BUILD_FONT_DEMO
demos_opt += font_features.c
endif
if OS_UNIX
demos_opt += pagesetup.c
endif
demos = $(demos_base) $(demos_opt)
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_builddir)/gdk \
-DGDK_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED \
$(GTK_DEBUG_FLAGS) \
$(GTK_DEP_CFLAGS)
DEPS = \
$(top_builddir)/gtk/libgtk-4.la
LDADDS = \
$(top_builddir)/gtk/libgtk-4.la \
$(GTK_DEP_LIBS) \
$(GDK_DEP_LIBS) \
-lm
if BUILD_FONT_DEMO
AM_CPPFLAGS += $(FONTDEMO_CFLAGS)
LDADDS += $(FONTDEMO_LIBS)
endif
bin_PROGRAMS = gtk4-demo gtk4-demo-application
desktopdir = $(datadir)/applications
dist_desktop_DATA = gtk4-demo.desktop
BUILT_SOURCES = demos.h demo_resources.c
EXTRA_DIST += \
data/source.svg \
data/symbolic-source.svg \
demo.gresource.xml \
$(resource_files) \
org.gtk.Demo.gschema.xml \
demos.h.win32
gsettings_SCHEMAS = \
org.gtk.Demo.gschema.xml
@GSETTINGS_RULES@
demos.h: $(demos) geninclude.pl
$(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
demos.h.win32: $(demos_base) geninclude.pl
$(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos_base)) > demos.h.win32
nodist_gtk4_demo_SOURCES = demos.h
gtk4_demo_SOURCES = \
$(demos) \
gtkfishbowl.c \
gtkfishbowl.h \
demo_resources.c \
main.c
gtk4_demo_DEPENDENCIES = $(DEPS)
gtk4_demo_LDADD = $(LDADDS)
gtk4_demo_LDFLAGS = -export-dynamic
gtk4_demo_application_SOURCES = \
application.c \
demo_resources.c
gtk4_demo_application_LDADD = $(LDADDS)
resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(builddir)/demo.gresource.xml)
demo_resources.c: demo.gresource.xml $(resource_files)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/demo.gresource.xml
iconthemedir = $(datadir)/icons/hicolor
appsicon16dir = $(iconthemedir)/16x16/apps
appsicon22dir = $(iconthemedir)/22x22/apps
appsicon24dir = $(iconthemedir)/24x24/apps
appsicon32dir = $(iconthemedir)/32x32/apps
appsicon48dir = $(iconthemedir)/48x48/apps
appsicon256dir = $(iconthemedir)/256x256/apps
appsiconscalabledir = $(iconthemedir)/scalable/apps
dist_appsicon16_DATA = data/16x16/gtk4-demo.png data/16x16/gtk4-demo-symbolic.symbolic.png
dist_appsicon22_DATA = data/22x22/gtk4-demo.png data/22x22/gtk4-demo-symbolic.symbolic.png
dist_appsicon24_DATA = data/24x24/gtk4-demo.png data/24x24/gtk4-demo-symbolic.symbolic.png
dist_appsicon32_DATA = data/32x32/gtk4-demo.png data/32x32/gtk4-demo-symbolic.symbolic.png
dist_appsicon48_DATA = data/48x48/gtk4-demo.png data/48x48/gtk4-demo-symbolic.symbolic.png
dist_appsicon256_DATA = data/256x256/gtk4-demo.png data/256x256/gtk4-demo-symbolic.symbolic.png
update_icon_cache = $(top_builddir)/gtk/gtk4-update-icon-cache$(EXEEXT) --ignore-theme-index --force
install-data-hook: install-update-icon-cache
uninstall-hook: uninstall-update-icon-cache
install-update-icon-cache:
$(AM_V_at)$(POST_INSTALL)
test -n "$(DESTDIR)" || $(update_icon_cache) "$(iconthemedir)"
uninstall-update-icon-cache:
$(AM_V_at)$(POST_UNINSTALL)
test -n "$(DESTDIR)" || $(update_icon_cache) "$(iconthemedir)"
# ------------------- MSVC Build Items ----------------
MSVCPROJS = gtk4-demo gtk4-demo-application
gtk4_demo_FILES = $(gtk4_demo_SOURCES)
gtk4_demo_EXCLUDES = font_features.c|pagesetup.c
gtk4_demo_application_FILES = $(gtk4_demo_application_SOURCES)
gtk4_demo_application_EXCLUDES = dummy
include $(top_srcdir)/win32/Makefile.msvcproj
dist-hook: \
$(top_builddir)/win32/vs12/gtk4-demo.vcxproj \
$(top_builddir)/win32/vs12/gtk4-demo-application.vcxproj
DISTCLEANFILES = demos.h demos.h.win32
-include $(top_srcdir)/git.mk

View File

@@ -291,19 +291,6 @@ change_theme_state (GSimpleAction *action,
g_simple_action_set_state (action, state);
}
static void
change_titlebar_state (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
GtkWindow *window = user_data;
gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window),
g_variant_get_boolean (state));
g_simple_action_set_state (action, state);
}
static void
change_radio_state (GSimpleAction *action,
GVariant *state,
@@ -322,7 +309,6 @@ static GActionEntry app_entries[] = {
};
static GActionEntry win_entries[] = {
{ "titlebar", activate_toggle, NULL, "false", change_titlebar_state },
{ "shape", activate_radio, "s", "'oval'", change_radio_state },
{ "bold", activate_toggle, NULL, "false", NULL },
{ "about", activate_about, NULL, NULL, NULL },
@@ -469,12 +455,15 @@ demo_application_window_constructed (GObject *object)
}
static void
demo_application_window_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
demo_application_window_size_allocate (GtkWidget *widget,
const GtkAllocation *allocation,
int baseline,
GtkAllocation *out_clip)
{
DemoApplicationWindow *window = (DemoApplicationWindow *)widget;
GTK_WIDGET_CLASS (demo_application_window_parent_class)->size_allocate (widget, allocation);
GTK_WIDGET_CLASS (demo_application_window_parent_class)->size_allocate (widget, allocation,
baseline, out_clip);
if (!window->maximized && !window->fullscreen)
gtk_window_get_size (GTK_WINDOW (window), &window->width, &window->height);

View File

@@ -96,12 +96,12 @@ create_page1 (GtkWidget *assistant)
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
label = gtk_label_new ("You must fill out this entry to continue:");
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (box), label);
entry = gtk_entry_new ();
gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
gtk_widget_set_valign (entry, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (box), entry);
g_signal_connect (G_OBJECT (entry), "changed",
G_CALLBACK (on_entry_changed), assistant);
@@ -119,7 +119,7 @@ create_page2 (GtkWidget *assistant)
checkbutton = gtk_check_button_new_with_label ("This is optional data, you may continue "
"even if you do not check this");
gtk_box_pack_start (GTK_BOX (box), checkbutton, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (box), checkbutton);
gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE);

View File

@@ -70,64 +70,52 @@ do_button_box (GtkWidget *do_widget)
frame_horz = gtk_frame_new ("Horizontal Button Boxes");
gtk_widget_set_margin_top (frame_horz, 10);
gtk_widget_set_margin_bottom (frame_horz, 10);
gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
g_object_set (vbox, "margin", 10, NULL);
gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE);
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
TRUE, TRUE);
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
TRUE, TRUE);
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
TRUE, TRUE);
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Center", 40, GTK_BUTTONBOX_CENTER),
TRUE, TRUE);
create_bbox (TRUE, "Center", 40, GTK_BUTTONBOX_CENTER));
gtk_box_pack_start (GTK_BOX (vbox),
create_bbox (TRUE, "Expand", 0, GTK_BUTTONBOX_EXPAND),
TRUE, TRUE);
create_bbox (TRUE, "Expand", 0, GTK_BUTTONBOX_EXPAND));
frame_vert = gtk_frame_new ("Vertical Button Boxes");
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
g_object_set (hbox, "margin", 10, NULL);
gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Spread", 10, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE);
create_bbox (FALSE, "Spread", 10, GTK_BUTTONBOX_SPREAD));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Edge", 10, GTK_BUTTONBOX_EDGE),
TRUE, TRUE);
create_bbox (FALSE, "Edge", 10, GTK_BUTTONBOX_EDGE));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Start", 10, GTK_BUTTONBOX_START),
TRUE, TRUE);
create_bbox (FALSE, "Start", 10, GTK_BUTTONBOX_START));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "End", 10, GTK_BUTTONBOX_END),
TRUE, TRUE);
create_bbox (FALSE, "End", 10, GTK_BUTTONBOX_END));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Center", 10, GTK_BUTTONBOX_CENTER),
TRUE, TRUE);
create_bbox (FALSE, "Center", 10, GTK_BUTTONBOX_CENTER));
gtk_box_pack_start (GTK_BOX (hbox),
create_bbox (FALSE, "Expand", 0, GTK_BUTTONBOX_EXPAND),
TRUE, TRUE);
create_bbox (FALSE, "Expand", 0, GTK_BUTTONBOX_EXPAND));
}
if (!gtk_widget_get_visible (window))

View File

@@ -312,7 +312,7 @@ create_frame (ChangeDisplayInfo *info,
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin),
GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (hbox), scrollwin, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), scrollwin);
*tree_view = gtk_tree_view_new ();
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (*tree_view), FALSE);
@@ -322,7 +322,7 @@ create_frame (ChangeDisplayInfo *info,
gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
*button_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_box_pack_start (GTK_BOX (hbox), *button_vbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), *button_vbox);
if (!info->size_group)
info->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
@@ -362,11 +362,11 @@ create_display_frame (ChangeDisplayInfo *info)
button = left_align_button_new ("_Open...");
g_signal_connect (button, "clicked", G_CALLBACK (open_display_cb), info);
gtk_box_pack_start (GTK_BOX (button_vbox), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (button_vbox), button);
button = left_align_button_new ("_Close");
g_signal_connect (button, "clicked", G_CALLBACK (close_display_cb), info);
gtk_box_pack_start (GTK_BOX (button_vbox), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (button_vbox), button);
info->display_model = (GtkTreeModel *)gtk_list_store_new (DISPLAY_NUM_COLUMNS,
G_TYPE_STRING,
@@ -539,10 +539,10 @@ do_changedisplay (GtkWidget *do_widget)
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
g_object_set (vbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (content_area), vbox);
frame = create_display_frame (info);
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
initialize_displays (info);

View File

@@ -207,7 +207,7 @@ do_clipboard (GtkWidget *do_widget)
GtkWidget *vbox, *hbox;
GtkWidget *label;
GtkWidget *entry, *button;
GtkWidget *ebox, *image;
GtkWidget *image;
GtkClipboard *clipboard;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@@ -225,96 +225,92 @@ do_clipboard (GtkWidget *do_widget)
label = gtk_label_new ("\"Copy\" will copy the text\nin the entry to the clipboard");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
g_object_set (hbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
/* Create the first entry */
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), entry);
/* Create the button */
button = gtk_button_new_with_mnemonic (_("_Copy"));
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), button);
g_signal_connect (button, "clicked",
G_CALLBACK (copy_button_clicked), entry);
label = gtk_label_new ("\"Paste\" will paste the text from the clipboard to the entry");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
g_object_set (hbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
/* Create the second entry */
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), entry);
/* Create the button */
button = gtk_button_new_with_mnemonic (_("_Paste"));
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), button);
g_signal_connect (button, "clicked",
G_CALLBACK (paste_button_clicked), entry);
label = gtk_label_new ("Images can be transferred via the clipboard, too");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
g_object_set (hbox, "margin", 8, NULL);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
/* Create the first image */
image = gtk_image_new_from_icon_name ("dialog-warning",
GTK_ICON_SIZE_BUTTON);
ebox = gtk_event_box_new ();
gtk_container_add (GTK_CONTAINER (ebox), image);
gtk_container_add (GTK_CONTAINER (hbox), ebox);
gtk_container_add (GTK_CONTAINER (hbox), image);
/* make ebox a drag source */
gtk_drag_source_set (ebox, GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (ebox);
g_signal_connect (ebox, "drag-begin",
/* make image a drag source */
gtk_drag_source_set (image, GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (image);
g_signal_connect (image, "drag-begin",
G_CALLBACK (drag_begin), image);
g_signal_connect (ebox, "drag-data-get",
g_signal_connect (image, "drag-data-get",
G_CALLBACK (drag_data_get), image);
/* accept drops on ebox */
gtk_drag_dest_set (ebox, GTK_DEST_DEFAULT_ALL,
/* accept drops on image */
gtk_drag_dest_set (image, GTK_DEST_DEFAULT_ALL,
NULL, 0, GDK_ACTION_COPY);
gtk_drag_dest_add_image_targets (ebox);
g_signal_connect (ebox, "drag-data-received",
gtk_drag_dest_add_image_targets (image);
g_signal_connect (image, "drag-data-received",
G_CALLBACK (drag_data_received), image);
/* context menu on ebox */
g_signal_connect (ebox, "button-press-event",
/* context menu on image */
g_signal_connect (image, "button-press-event",
G_CALLBACK (button_press), image);
/* Create the second image */
image = gtk_image_new_from_icon_name ("process-stop",
GTK_ICON_SIZE_BUTTON);
ebox = gtk_event_box_new ();
gtk_container_add (GTK_CONTAINER (ebox), image);
gtk_container_add (GTK_CONTAINER (hbox), ebox);
gtk_container_add (GTK_CONTAINER (hbox), image);
/* make ebox a drag source */
gtk_drag_source_set (ebox, GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (ebox);
g_signal_connect (ebox, "drag-begin",
/* make image a drag source */
gtk_drag_source_set (image, GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (image);
g_signal_connect (image, "drag-begin",
G_CALLBACK (drag_begin), image);
g_signal_connect (ebox, "drag-data-get",
g_signal_connect (image, "drag-data-get",
G_CALLBACK (drag_data_get), image);
/* accept drops on ebox */
gtk_drag_dest_set (ebox, GTK_DEST_DEFAULT_ALL,
/* accept drops on image */
gtk_drag_dest_set (image, GTK_DEST_DEFAULT_ALL,
NULL, 0, GDK_ACTION_COPY);
gtk_drag_dest_add_image_targets (ebox);
g_signal_connect (ebox, "drag-data-received",
gtk_drag_dest_add_image_targets (image);
g_signal_connect (image, "drag-data-received",
G_CALLBACK (drag_data_received), image);
/* context menu on ebox */
g_signal_connect (ebox, "button-press-event",
/* context menu on image */
g_signal_connect (image, "button-press-event",
G_CALLBACK (button_press), image);
/* tell the clipboard manager to make the data persistent */

View File

@@ -87,7 +87,7 @@ do_colorsel (GtkWidget *do_widget)
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
da = gtk_drawing_area_new ();
gtk_drawing_area_set_content_width (GTK_DRAWING_AREA (da), 200);
@@ -100,7 +100,7 @@ do_colorsel (GtkWidget *do_widget)
gtk_widget_set_halign (button, GTK_ALIGN_END);
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), button);
g_signal_connect (button, "clicked",
G_CALLBACK (change_color_callback), NULL);

View File

@@ -326,7 +326,7 @@ do_combobox (GtkWidget *do_widget)
* insensitive rows
*/
frame = gtk_frame_new ("Items with icons");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
g_object_set (box, "margin", 5, NULL);
@@ -367,7 +367,7 @@ do_combobox (GtkWidget *do_widget)
/* A combobox demonstrating trees.
*/
frame = gtk_frame_new ("Where are we ?");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
g_object_set (box, "margin", 5, NULL);
@@ -395,7 +395,7 @@ do_combobox (GtkWidget *do_widget)
/* A GtkComboBoxEntry with validation */
frame = gtk_frame_new ("Editable");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
g_object_set (box, "margin", 5, NULL);
@@ -413,7 +413,7 @@ do_combobox (GtkWidget *do_widget)
/* A combobox with string IDs */
frame = gtk_frame_new ("String IDs");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
g_object_set (box, "margin", 5, NULL);

View File

@@ -92,10 +92,6 @@ do_css_multiplebgs (GtkWidget *do_widget)
G_CALLBACK (gtk_widget_destroyed), &window);
container = gtk_overlay_new ();
gtk_widget_add_events (container,
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK);
gtk_container_add (GTK_CONTAINER (window), container);
child = gtk_drawing_area_new ();
@@ -106,10 +102,6 @@ do_css_multiplebgs (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (container), child);
child = gtk_button_new ();
gtk_widget_add_events (child,
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK);
gtk_overlay_add_overlay (GTK_OVERLAY (container), child);
gtk_widget_set_name (child, "bricks-button");
gtk_widget_set_halign (child, GTK_ALIGN_CENTER);

View File

@@ -27,13 +27,13 @@ add_section (GtkWidget *box,
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
gtk_widget_set_margin_top (label, 10);
gtk_widget_set_margin_bottom (label, 10);
gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE);
gtk_box_pack_start (GTK_BOX (box), label);
section = gtk_flow_box_new ();
gtk_widget_set_halign (section, GTK_ALIGN_START);
gtk_flow_box_set_selection_mode (GTK_FLOW_BOX (section), GTK_SELECTION_NONE);
gtk_flow_box_set_min_children_per_line (GTK_FLOW_BOX (section), 2);
gtk_flow_box_set_max_children_per_line (GTK_FLOW_BOX (section), 20);
gtk_box_pack_start (GTK_BOX (box), section, FALSE, TRUE);
gtk_box_pack_start (GTK_BOX (box), section);
return section;
}

View File

@@ -156,6 +156,7 @@
<file>expander.c</file>
<file>filtermodel.c</file>
<file>fishbowl.c</file>
<file>widgetbowl.c</file>
<file>flowbox.c</file>
<file>foreigndrawing.c</file>
<file>font_features.c</file>

View File

@@ -159,9 +159,6 @@
</object>
</child>
</object>
<packing>
<property name="expand">0</property>
</packing>
</child>
<child>
<object class="GtkToolbar" id="toolbar1">
@@ -227,7 +224,6 @@
</child>
</object>
<packing>
<property name="expand">0</property>
<property name="position">1</property>
</packing>
</child>
@@ -235,6 +231,7 @@
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="shadow_type">in</property>
<property name="visible">1</property>
<property name="expand">1</property>
<child>
<object class="GtkTreeView" id="treeview1">
<property name="visible">1</property>
@@ -286,7 +283,6 @@
</object>
<packing>
<property name="position">2</property>
<property name="expand">1</property>
</packing>
</child>
<child>
@@ -295,7 +291,6 @@
</object>
<packing>
<property name="position">3</property>
<property name="expand">0</property>
</packing>
</child>
</object>

View File

@@ -56,15 +56,15 @@ interactive_dialog_clicked (GtkButton *button,
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
gtk_box_pack_start (GTK_BOX (content_area), hbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (content_area), hbox);
image = gtk_image_new_from_icon_name ("dialog-question", GTK_ICON_SIZE_DIALOG);
gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), image);
table = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (table), 4);
gtk_grid_set_column_spacing (GTK_GRID (table), 4);
gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), table);
label = gtk_label_new_with_mnemonic ("_Entry 1");
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
local_entry1 = gtk_entry_new ();
@@ -122,30 +122,29 @@ do_dialog (GtkWidget *do_widget)
/* Standard message dialog */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
button = gtk_button_new_with_mnemonic ("_Message Dialog");
g_signal_connect (button, "clicked",
G_CALLBACK (message_dialog_clicked), NULL);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), button);
gtk_box_pack_start (GTK_BOX (vbox), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL));
/* Interactive dialog*/
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
button = gtk_button_new_with_mnemonic ("_Interactive Dialog");
g_signal_connect (button, "clicked",
G_CALLBACK (interactive_dialog_clicked), NULL);
gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), vbox2);
gtk_box_pack_start (GTK_BOX (vbox2), button);
table = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (table), 4);
gtk_grid_set_column_spacing (GTK_GRID (table), 4);
gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), table);
label = gtk_label_new_with_mnemonic ("_Entry 1");
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);

View File

@@ -221,11 +221,11 @@ do_drawingarea (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Checkerboard pattern</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
da = gtk_drawing_area_new ();
gtk_drawing_area_set_content_width (GTK_DRAWING_AREA (da), 100);
@@ -240,11 +240,11 @@ do_drawingarea (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Scribble area</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
da = gtk_drawing_area_new ();
gtk_drawing_area_set_content_width (GTK_DRAWING_AREA (da), 100);
@@ -263,17 +263,6 @@ do_drawingarea (GtkWidget *do_widget)
G_CALLBACK (scribble_motion_notify_event), NULL);
g_signal_connect (da, "button-press-event",
G_CALLBACK (scribble_button_press_event), NULL);
/* Ask to receive events the drawing area doesn't normally
* subscribe to
*/
gtk_widget_set_events (da, gtk_widget_get_events (da)
| GDK_LEAVE_NOTIFY_MASK
| GDK_BUTTON_PRESS_MASK
| GDK_POINTER_MOTION_MASK
| GDK_POINTER_MOTION_HINT_MASK);
}
if (!gtk_widget_get_visible (window))

View File

@@ -357,8 +357,7 @@ do_editable_cells (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_box_pack_start (GTK_BOX (vbox),
gtk_label_new ("Shopping list (you can edit the cells!)"),
FALSE, FALSE);
gtk_label_new ("Shopping list (you can edit the cells!)"));
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
@@ -366,7 +365,7 @@ do_editable_cells (GtkWidget *do_widget)
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), sw);
/* create models */
items_model = create_items_model ();
@@ -387,17 +386,17 @@ do_editable_cells (GtkWidget *do_widget)
/* some buttons */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
button = gtk_button_new_with_label ("Add item");
g_signal_connect (button, "clicked",
G_CALLBACK (add_item), treeview);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), button);
button = gtk_button_new_with_label ("Remove item");
g_signal_connect (button, "clicked",
G_CALLBACK (remove_item), treeview);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), button);
gtk_window_set_default_size (GTK_WINDOW (window), 320, 200);
}

View File

@@ -34,19 +34,19 @@ do_entry_buffer (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"Entries share a buffer. Typing in one is reflected in the other.");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
/* Create a buffer */
buffer = gtk_entry_buffer_new (NULL, 0);
/* Create our first entry */
entry = gtk_entry_new_with_buffer (buffer);
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), entry);
/* Create the second entry */
entry = gtk_entry_new_with_buffer (buffer);
gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE);
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), entry);
g_object_unref (buffer);
}

View File

@@ -60,11 +60,11 @@ do_entry_completion (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), "Completion demo, try writing <b>total</b> or <b>gnome</b> for example.");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
/* Create our entry */
entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), entry);
/* Create the completion object */
completion = gtk_entry_completion_new ();

View File

@@ -140,6 +140,9 @@ update_axes_from_event (GdkEvent *event,
return;
}
if (!source_device)
return;
if (!sequence)
{
info = g_hash_table_lookup (data->pointer_info, device);
@@ -229,7 +232,8 @@ render_arrow (cairo_t *cr,
static void
draw_axes_info (cairo_t *cr,
AxesInfo *info,
GtkAllocation *allocation)
int width,
int height)
{
gdouble pressure, tilt_x, tilt_y, distance, wheel, rotation, slider;
GdkAxisFlags axes = gdk_device_get_axes (info->last_source);
@@ -240,9 +244,9 @@ draw_axes_info (cairo_t *cr,
gdk_cairo_set_source_rgba (cr, &info->color);
cairo_move_to (cr, 0, info->y);
cairo_line_to (cr, allocation->width, info->y);
cairo_line_to (cr, width, info->y);
cairo_move_to (cr, info->x, 0);
cairo_line_to (cr, info->x, allocation->height);
cairo_line_to (cr, info->x, height);
cairo_stroke (cr);
cairo_translate (cr, info->x, info->y);
@@ -462,27 +466,27 @@ draw_device_info (GtkWidget *widget,
g_string_free (string, TRUE);
}
static gboolean
draw_cb (GtkWidget *widget,
cairo_t *cr,
gpointer user_data)
static void
draw_cb (GtkDrawingArea *da,
cairo_t *cr,
int width,
int height,
gpointer user_data)
{
GtkWidget *widget = GTK_WIDGET (da);
EventData *data = user_data;
GtkAllocation allocation;
AxesInfo *info;
GHashTableIter iter;
gpointer key, value;
gint y = 0;
gtk_widget_get_allocation (widget, &allocation);
/* Draw Abs info */
g_hash_table_iter_init (&iter, data->pointer_info);
while (g_hash_table_iter_next (&iter, NULL, &value))
{
info = value;
draw_axes_info (cr, info, &allocation);
draw_axes_info (cr, info, width, height);
}
g_hash_table_iter_init (&iter, data->touch_info);
@@ -490,7 +494,7 @@ draw_cb (GtkWidget *widget,
while (g_hash_table_iter_next (&iter, NULL, &value))
{
info = value;
draw_axes_info (cr, info, &allocation);
draw_axes_info (cr, info, width, height);
}
/* Draw name, color legend and misc data */
@@ -509,8 +513,6 @@ draw_cb (GtkWidget *widget,
info = value;
draw_device_info (widget, cr, key, &y, info);
}
return FALSE;
}
static void
@@ -614,43 +616,45 @@ do_event_axes (GtkWidget *toplevel)
{
static GtkWidget *window = NULL;
EventData *event_data;
GtkWidget *box, *label;
GtkWidget *label;
GtkWidget *overlay;
GtkWidget *da;
if (!window)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Event Axes");
gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
gtk_window_set_title (GTK_WINDOW (window), "Touch and Drawing Tablets");
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
box = gtk_event_box_new ();
gtk_container_add (GTK_CONTAINER (window), box);
gtk_widget_set_support_multidevice (box, TRUE);
gtk_widget_add_events (box,
GDK_POINTER_MOTION_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
GDK_SMOOTH_SCROLL_MASK |
GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK |
GDK_TOUCH_MASK);
gtk_widget_set_support_multidevice (window, TRUE);
event_data = event_data_new ();
g_object_set_data_full (G_OBJECT (box), "gtk-demo-event-data",
g_object_set_data_full (G_OBJECT (window), "gtk-demo-event-data",
event_data, (GDestroyNotify) event_data_free);
g_signal_connect (box, "event",
da = gtk_drawing_area_new ();
gtk_drawing_area_set_content_width (GTK_DRAWING_AREA (da), 400);
gtk_drawing_area_set_content_height (GTK_DRAWING_AREA (da), 400);
gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (da), draw_cb, event_data, NULL);
gtk_widget_set_can_focus (da, TRUE);
gtk_widget_grab_focus (da);
g_signal_connect (da, "event",
G_CALLBACK (event_cb), event_data);
g_signal_connect (box, "draw",
G_CALLBACK (draw_cb), event_data);
label = gtk_label_new ("");
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_START);
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_container_add (GTK_CONTAINER (box), label);
init_pad_controller (window, label);
overlay = gtk_overlay_new ();
gtk_container_add (GTK_CONTAINER (window), overlay);
gtk_container_add (GTK_CONTAINER (overlay), da);
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), label);
init_pad_controller (da, label);
}
if (!gtk_widget_get_visible (window))

View File

@@ -25,19 +25,11 @@ expander_cb (GtkExpander *expander, GParamSpec *pspec, GtkWindow *dialog)
gtk_window_set_resizable (dialog, gtk_expander_get_expanded (expander));
}
static void
do_not_expand (GtkWidget *child, gpointer data)
{
gtk_container_child_set (GTK_CONTAINER (gtk_widget_get_parent (child)), child,
"expand", FALSE, "fill", FALSE, NULL);
}
GtkWidget *
do_expander (GtkWidget *do_widget)
{
GtkWidget *toplevel;
GtkWidget *area;
GtkWidget *box;
GtkWidget *expander;
GtkWidget *sw;
GtkWidget *tv;
@@ -57,10 +49,6 @@ do_expander (GtkWidget *do_widget)
"but not the full story.");
area = gtk_message_dialog_get_message_area (GTK_MESSAGE_DIALOG (window));
box = gtk_widget_get_parent (area);
gtk_container_child_set (GTK_CONTAINER (gtk_widget_get_parent (box)), box,
"expand", TRUE, "fill", TRUE, NULL);
gtk_container_foreach (GTK_CONTAINER (area), do_not_expand, NULL);
expander = gtk_expander_new ("Details:");
sw = gtk_scrolled_window_new (NULL, NULL);
@@ -85,7 +73,7 @@ do_expander (GtkWidget *do_widget)
"resize the window. Do it already !", -1);
gtk_container_add (GTK_CONTAINER (sw), tv);
gtk_container_add (GTK_CONTAINER (expander), sw);
gtk_box_pack_end (GTK_BOX (area), expander, TRUE, TRUE);
gtk_box_pack_end (GTK_BOX (area), expander);
g_signal_connect (expander, "notify::expanded",
G_CALLBACK (expander_cb), window);

View File

@@ -157,6 +157,7 @@ do_fishbowl (GtkWidget *do_widget)
gtk_builder_connect_signals (builder, NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
bowl = GTK_WIDGET (gtk_builder_get_object (builder, "bowl"));
gtk_fishbowl_set_use_icons (GTK_FISHBOWL (bowl), TRUE);
info_label = GTK_WIDGET (gtk_builder_get_object (builder, "info_label"));
allow_changes = GTK_WIDGET (gtk_builder_get_object (builder, "changes_allow"));
gtk_window_set_screen (GTK_WINDOW (window),

View File

@@ -10,7 +10,6 @@
<child>
<object class="GtkLabel" id="info_label">
<property name="visible">True</property>
<property name="label">icons - 0 fps</property>
</object>
<packing>
<property name="pack_type">end</property>

View File

@@ -1601,18 +1601,13 @@
<property name="margin_top">20</property>
<property name="margin_bottom">20</property>
<child>
<object class="GtkEventBox">
<object class="GtkLabel" id="label">
<property name="visible">1</property>
<property name="wrap">1</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="valign">start</property>
<signal name="button-press-event" handler="switch_to_entry"/>
<child>
<object class="GtkLabel" id="label">
<property name="visible">1</property>
<property name="wrap">1</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="valign">start</property>
</object>
</child>
</object>
<packing>
<property name="name">label</property>
@@ -1647,15 +1642,13 @@
<property name="valign">end</property>
<property name="width-chars">50</property>
<property name="max-width-chars">50</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
</object>
</child>

108
demos/gtk-demo/geninclude.py Executable file
View File

@@ -0,0 +1,108 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import re
import os
from collections import *
out_file = sys.argv[1]
in_files = sys.argv[2:]
file_output = """
typedef GtkWidget *(*GDoDemoFunc) (GtkWidget *do_widget);
typedef struct _Demo Demo;
struct _Demo
{
gchar *name;
gchar *title;
gchar *filename;
GDoDemoFunc func;
Demo *children;
};
"""
# Demo = namedtuple('Demo', ['name', 'title', 'file', 'func'])
demos = []
for demo_file in in_files:
filename = demo_file[demo_file.rfind('/')+1:]
demo_name = filename.replace(".c", "")
with open(demo_file, 'r') as f:
title = f.readline().replace("/*", "").strip()
file_output += "GtkWidget *do_" + demo_name + " (GtkWidget *do_widget);\n"
# demos += Demo(name = demo_name,
# title = title,
# file = demo_file,
# func = "do_" + title)
demos.append((demo_name, title, filename, "do_" + demo_name, -1))
# Generate a List of "Parent names"
parents = []
parent_ids = []
parent_index = 0
for demo in demos:
if "/" in demo[1]:
slash_index = demo[1].index('/')
parent_name = demo[1][:slash_index]
do_break = False
# Check for duplicates
if not parent_name in parents:
parents.append(parent_name)
parent_ids.append(parent_index)
demos.append(("NULL", parent_name, "NULL", "NULL", parent_index))
parent_index = parent_index + 1
# For every child with a parent, generate a list of child demos
i = 0
for parent in parents:
id = parent_ids[i]
file_output += "\nDemo child" + str(id) + "[] = {\n"
# iterate over all demos and check if the name starts with the given parent name
for child in demos:
if child[1].startswith(parent + "/"):
title = child[1][child[1].rfind('/') + 1:]
file_output += " { \"" + child[0] + "\", \"" + title + "\", \"" + child[2] + "\", " + child[3] + ", NULL },\n"
file_output += " { NULL }\n};\n"
i = i + 1
# Sort demos by title
demos = sorted(demos, key=lambda x: x[1])
file_output += "\nDemo gtk_demos[] = {\n"
for demo in demos:
# Do not generate one of these for demos with a parent demo
if "/" not in demo[1]:
child_array = "NULL"
name = demo[0];
title = demo[1];
file = demo[2]
if name != "NULL":
name = "\"" + name + "\""
if title != "NULL":
title = "\"" + title + "\""
if file != "NULL":
file = "\"" + file + "\""
if demo[4] != -1:
child_array = "child" + str(demo[4])
file_output += " { " + name + ", " + title + ", " + file + ", " + demo[3] + ", " + child_array + " },\n"
file_output += " { NULL }\n};\n"
ofile = open(out_file, "w")
ofile.write(file_output)
ofile.close()

View File

@@ -151,9 +151,6 @@ do_gestures (GtkWidget *do_widget)
drawing_area = gtk_drawing_area_new ();
gtk_container_add (GTK_CONTAINER (window), drawing_area);
gtk_widget_add_events (drawing_area,
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_POINTER_MOTION_MASK | GDK_TOUCH_MASK);
gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (drawing_area),
drawing_area_draw,

View File

@@ -29,6 +29,8 @@ struct _GtkFishbowlPrivate
gint64 last_frame_time;
guint tick_id;
guint use_icons: 1;
};
struct _GtkFishbowlChild
@@ -70,6 +72,15 @@ gtk_fishbowl_new (void)
return g_object_new (GTK_TYPE_FISHBOWL, NULL);
}
void
gtk_fishbowl_set_use_icons (GtkFishbowl *fishbowl,
gboolean use_icons)
{
GtkFishbowlPrivate *priv = gtk_fishbowl_get_instance_private (fishbowl);
priv->use_icons = use_icons;
}
static void
gtk_fishbowl_measure (GtkWidget *widget,
GtkOrientation orientation,
@@ -103,8 +114,10 @@ gtk_fishbowl_measure (GtkWidget *widget,
}
static void
gtk_fishbowl_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
gtk_fishbowl_size_allocate (GtkWidget *widget,
const GtkAllocation *allocation,
int baseline,
GtkAllocation *out_clip)
{
GtkFishbowl *fishbowl = GTK_FISHBOWL (widget);
GtkFishbowlPrivate *priv = gtk_fishbowl_get_instance_private (fishbowl);
@@ -113,10 +126,10 @@ gtk_fishbowl_size_allocate (GtkWidget *widget,
GtkRequisition child_requisition;
GList *children;
gtk_widget_set_allocation (widget, allocation);
for (children = priv->children; children; children = children->next)
{
GtkAllocation child_clip;
child = children->data;
if (!gtk_widget_get_visible (child->widget))
@@ -128,7 +141,7 @@ gtk_fishbowl_size_allocate (GtkWidget *widget,
child_allocation.width = child_requisition.width;
child_allocation.height = child_requisition.height;
gtk_widget_size_allocate (child->widget, &child_allocation);
gtk_widget_size_allocate (child->widget, &child_allocation, -1, &child_clip);
}
}
@@ -200,7 +213,6 @@ gtk_fishbowl_remove (GtkContainer *container,
static void
gtk_fishbowl_forall (GtkContainer *container,
gboolean include_internals,
GtkCallback callback,
gpointer callback_data)
{
@@ -209,9 +221,6 @@ gtk_fishbowl_forall (GtkContainer *container,
GtkFishbowlChild *child;
GList *children;
if (!include_internals)
return;
children = priv->children;
while (children)
{
@@ -222,27 +231,6 @@ gtk_fishbowl_forall (GtkContainer *container,
}
}
static void
gtk_fishbowl_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkFishbowl *fishbowl = GTK_FISHBOWL (widget);
GtkFishbowlPrivate *priv = gtk_fishbowl_get_instance_private (fishbowl);
GtkFishbowlChild *child;
GList *list;
for (list = priv->children;
list;
list = list->next)
{
child = list->data;
gtk_widget_snapshot_child (widget,
child->widget,
snapshot);
}
}
static void
gtk_fishbowl_dispose (GObject *object)
{
@@ -315,7 +303,6 @@ gtk_fishbowl_class_init (GtkFishbowlClass *klass)
widget_class->measure = gtk_fishbowl_measure;
widget_class->size_allocate = gtk_fishbowl_size_allocate;
widget_class->snapshot = gtk_fishbowl_snapshot;
container_class->add = gtk_fishbowl_add;
container_class->remove = gtk_fishbowl_remove;
@@ -386,6 +373,25 @@ get_random_icon_name (GtkIconTheme *theme)
return icon_names[g_random_int_range(0, n_icon_names)];
}
static GType
get_random_widget_type ()
{
GType types[] = {
GTK_TYPE_SWITCH,
GTK_TYPE_BUTTON,
GTK_TYPE_ENTRY,
GTK_TYPE_SPIN_BUTTON,
GTK_TYPE_FONT_BUTTON,
GTK_TYPE_SCROLLBAR,
GTK_TYPE_SCALE,
GTK_TYPE_LEVEL_BAR,
GTK_TYPE_PROGRESS_BAR,
GTK_TYPE_RADIO_BUTTON,
GTK_TYPE_CHECK_BUTTON
};
return types[g_random_int_range (0, G_N_ELEMENTS (types))];
}
void
gtk_fishbowl_set_count (GtkFishbowl *fishbowl,
guint count)
@@ -403,10 +409,13 @@ gtk_fishbowl_set_count (GtkFishbowl *fishbowl,
while (priv->count < count)
{
GtkWidget *new_widget;
new_widget = gtk_image_new_from_icon_name (get_random_icon_name (gtk_icon_theme_get_default ()),
GTK_ICON_SIZE_DIALOG);
gtk_widget_show (new_widget);
if (priv->use_icons)
new_widget = gtk_image_new_from_icon_name (get_random_icon_name (gtk_icon_theme_get_default ()),
GTK_ICON_SIZE_DIALOG);
else
new_widget = g_object_new (get_random_widget_type (), NULL);
gtk_container_add (GTK_CONTAINER (fishbowl), new_widget);
}

View File

@@ -46,6 +46,9 @@ GType gtk_fishbowl_get_type (void) G_GNUC_CONST;
GtkWidget* gtk_fishbowl_new (void);
void gtk_fishbowl_set_use_icons (GtkFishbowl *fishbowl,
gboolean use_icons);
guint gtk_fishbowl_get_count (GtkFishbowl *fishbowl);
void gtk_fishbowl_set_count (GtkFishbowl *fishbowl,
guint count);

View File

@@ -266,7 +266,7 @@ do_iconview (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (window), vbox);
tool_bar = gtk_toolbar_new ();
gtk_box_pack_start (GTK_BOX (vbox), tool_bar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), tool_bar);
up_button = gtk_tool_button_new (NULL, NULL);
gtk_tool_button_set_label (GTK_TOOL_BUTTON (up_button), _("_Up"));
@@ -290,8 +290,9 @@ do_iconview (GtkWidget *do_widget)
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_widget_set_vexpand (sw, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), sw);
/* Create the store and fill it with the contents of '/' */
parent = g_strdup ("/");

View File

@@ -354,13 +354,13 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Image loaded from a file</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
image = gtk_image_new_from_icon_name ("gtk3-demo", GTK_ICON_SIZE_DIALOG);
@@ -372,13 +372,13 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Animation loaded from a file</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
image = gtk_image_new_from_resource ("/images/floppybuddy.gif");
@@ -389,13 +389,13 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Symbolic themed icon</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
gicon = g_themed_icon_new_with_default_fallbacks ("battery-caution-charging-symbolic");
image = gtk_image_new_from_gicon (gicon, GTK_ICON_SIZE_DIALOG);
@@ -408,13 +408,13 @@ do_images (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
"<u>Progressive image loading</u>");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
/* Create an empty image for now; the progressive loader
* will create the pixbuf and fill it in.
@@ -426,7 +426,7 @@ do_images (GtkWidget *do_widget)
/* Sensitivity control */
button = gtk_toggle_button_new_with_mnemonic ("_Insensitive");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), button);
g_signal_connect (button, "toggled",
G_CALLBACK (toggle_sensitivity_callback),

View File

@@ -65,24 +65,24 @@ do_infobar (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (window), vbox);
bar = gtk_info_bar_new ();
gtk_box_pack_start (GTK_BOX (vbox), bar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), bar);
gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_INFO);
label = gtk_label_new ("This is an info bar with message type GTK_MESSAGE_INFO");
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label);
button = gtk_toggle_button_new_with_label ("Message");
g_object_bind_property (bar, "revealed", button, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
gtk_container_add (GTK_CONTAINER (actions), button);
bar = gtk_info_bar_new ();
gtk_box_pack_start (GTK_BOX (vbox), bar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), bar);
gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_WARNING);
label = gtk_label_new ("This is an info bar with message type GTK_MESSAGE_WARNING");
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label);
button = gtk_toggle_button_new_with_label ("Warning");
g_object_bind_property (bar, "revealed", button, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
@@ -91,24 +91,24 @@ do_infobar (GtkWidget *do_widget)
bar = gtk_info_bar_new_with_buttons (_("_OK"), GTK_RESPONSE_OK, NULL);
gtk_info_bar_set_show_close_button (GTK_INFO_BAR (bar), TRUE);
g_signal_connect (bar, "response", G_CALLBACK (on_bar_response), window);
gtk_box_pack_start (GTK_BOX (vbox), bar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), bar);
gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_QUESTION);
label = gtk_label_new ("This is an info bar with message type GTK_MESSAGE_QUESTION");
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label);
button = gtk_toggle_button_new_with_label ("Question");
g_object_bind_property (bar, "revealed", button, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
gtk_container_add (GTK_CONTAINER (actions), button);
bar = gtk_info_bar_new ();
gtk_box_pack_start (GTK_BOX (vbox), bar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), bar);
gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_ERROR);
label = gtk_label_new ("This is an info bar with message type GTK_MESSAGE_ERROR");
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label);
button = gtk_toggle_button_new_with_label ("Error");
g_object_bind_property (bar, "revealed", button, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
@@ -116,12 +116,12 @@ do_infobar (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (actions), button);
bar = gtk_info_bar_new ();
gtk_box_pack_start (GTK_BOX (vbox), bar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), bar);
gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_OTHER);
label = gtk_label_new ("This is an info bar with message type GTK_MESSAGE_OTHER");
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label);
button = gtk_toggle_button_new_with_label ("Other");
g_object_bind_property (bar, "revealed", button, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
@@ -130,7 +130,7 @@ do_infobar (GtkWidget *do_widget)
frame = gtk_frame_new ("Info bars");
gtk_widget_set_margin_top (frame, 8);
gtk_widget_set_margin_bottom (frame, 8);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
g_object_set (vbox2, "margin", 8, NULL);
@@ -138,9 +138,9 @@ do_infobar (GtkWidget *do_widget)
/* Standard message dialog */
label = gtk_label_new ("An example of different info bars");
gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox2), label);
gtk_box_pack_start (GTK_BOX (vbox2), actions, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox2), actions);
}
if (!gtk_widget_get_visible (window))

View File

@@ -268,7 +268,7 @@ do_list_store (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (window), vbox);
label = gtk_label_new ("This is the bug list (note: not based on real data, it would be nice to have a nice ODBC interface to bugzilla or so, though).");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
@@ -276,7 +276,7 @@ do_list_store (GtkWidget *do_widget)
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), sw);
/* create tree model */
model = create_model ();

View File

@@ -359,10 +359,11 @@ do_listbox (GtkWidget *do_widget)
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_container_add (GTK_CONTAINER (window), vbox);
label = gtk_label_new ("Messages from Gtk+ and friends");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
scrolled = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE);
gtk_widget_set_vexpand (scrolled, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), scrolled);
listbox = gtk_list_box_new ();
gtk_container_add (GTK_CONTAINER (scrolled), listbox);

View File

@@ -90,7 +90,6 @@
</style>
</object>
<packing>
<property name="fill">0</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>

View File

@@ -97,6 +97,7 @@
<property name="scrollable">1</property>
<property name="enable_popup">1</property>
<property name="show_border">0</property>
<property name="expand">1</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">1</property>
@@ -166,7 +167,6 @@
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">1</property>
</packing>
</child>

View File

@@ -1,91 +0,0 @@
## Makefile for building the gtk test apps with Microsoft C
## Use: nmake -f makefile.msc
## There is no install target, you have to decide where and
## how to install for yourself.
TOP = ..\..\..
!INCLUDE $(TOP)/glib/build/win32/make.msc
!IFNDEF PERL
PERL = perl
!ENDIF
################################################################
# Possibly override versions from build/win32/module.defs
GTK_VER = 2.0
GDK_PIXBUF_VER = 2.0
GDK_LIBS = ../../gdk/gdk-win32-$(GTK_VER).lib
GTK_LIBS = ../../gtk/gtk-win32-$(GTK_VER).lib
GDK_PIXBUF_LIBS = ../../gdk-pixbuf/gdk_pixbuf-$(GDK_PIXBUF_VER).lib
INCLUDES = -FImsvc_recommended_pragmas.h -I . -I ../.. -I ../../gdk -I ../../gdk-pixbuf -I ../../gtk
DEPCFLAGS = $(PANGO_CFLAGS) $(GLIB_CFLAGS) $(LIBICONV_CFLAGS) $(INTL_CFLAGS) $(ATK_CFLAGS) $(CAIRO_CFLAGS)
LDFLAGS = /link /machine:ix86 $(LINKDEBUG)
DEFINES = -DG_LOG_DOMAIN=\"GtkDemo\" -DGTK_VERSION=\"$(GTK_VER)\" \
-DDEMOCODEDIR=\".\"
TOUCH = copy makefile.msc+nul
all : \
demos.h \
gtk-demo.exe
## These should be in the order you want them to appear in the
## demo app, which means alphabetized by demo title, not filename
DEMOS = \
button_box.c \
clipboard.c \
colorsel.c \
dialog.c \
drawingarea.c \
editable_cells.c \
entry_completion.c \
expander.c \
hypertext.c \
iconview.c \
images.c \
list_store.c \
menus.c \
panes.c \
pixbufs.c \
rotated_text.c \
sizegroup.c \
textview.c \
tree_store.c \
ui_manager.c \
demos.h: $(DEMOS) geninclude.pl
$(PERL) geninclude.pl $(DEMOS) > demos.h
OBJECTS = \
button_box.obj \
changedisplay.obj \
clipboard.obj \
colorsel.obj \
dialog.obj \
drawingarea.obj \
editable_cells.obj \
entry_completion.obj \
expander.obj \
hypertext.obj \
iconview.obj \
images.obj \
list_store.obj \
menus.obj \
panes.obj \
pixbufs.obj \
rotated_text.obj \
sizegroup.obj \
textview.obj \
tree_store.obj \
ui_manager.obj \
main.obj \
gtk-demo.exe : demos.h $(OBJECTS)
$(CC) $(CFLAGS) -Fegtk-demo.exe $(OBJECTS) $(GTK_LIBS) $(GDK_LIBS) $(GDK_PIXBUF_LIBS) \
$(CAIRO_LIBS) $(PANGOCAIRO_LIBS) $(PANGO_LIBS) $(GLIB_LIBS) $(LDFLAGS)

View File

@@ -115,7 +115,7 @@ do_menus (GtkWidget *do_widget)
menubar = gtk_menu_bar_new ();
gtk_widget_set_hexpand (menubar, TRUE);
gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE);
gtk_box_pack_start (GTK_BOX (box1), menubar);
gtk_widget_show (menubar);
menu = create_menu (2);
@@ -136,19 +136,19 @@ do_menus (GtkWidget *do_widget)
gtk_widget_show (menuitem);
box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE);
gtk_box_pack_start (GTK_BOX (box1), box2);
gtk_widget_show (box2);
button = gtk_button_new_with_label ("Flip");
g_signal_connect (button, "clicked",
G_CALLBACK (change_orientation), menubar);
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (box2), button);
gtk_widget_show (button);
button = gtk_button_new_with_label ("Close");
g_signal_connect_swapped (button, "clicked",
G_CALLBACK(gtk_widget_destroy), window);
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (box2), button);
gtk_widget_set_can_default (button, TRUE);
gtk_widget_grab_default (button);
gtk_widget_show (button);

View File

@@ -38,10 +38,6 @@
<attribute name="label" translatable="yes">_Prefer Dark Theme</attribute>
<attribute name="action">app.dark</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Hide Titlebar when maximized</attribute>
<attribute name="action">win.titlebar</attribute>
</item>
<submenu>
<attribute name="label" translatable="yes">_Color</attribute>
<section>

127
demos/gtk-demo/meson.build Normal file
View File

@@ -0,0 +1,127 @@
# These should be in the order you want them to appear in the
# demo app, which means alphabetized by demo title, not filename
demos = files([
'application_demo.c',
'assistant.c',
'builder.c',
'button_box.c',
'changedisplay.c',
'clipboard.c',
'colorsel.c',
'combobox.c',
'css_accordion.c',
'css_basics.c',
'css_blendmodes.c',
'css_multiplebgs.c',
'css_pixbufs.c',
'css_shadows.c',
'cursors.c',
'dialog.c',
'drawingarea.c',
'editable_cells.c',
'entry_buffer.c',
'entry_completion.c',
'event_axes.c',
'expander.c',
'filtermodel.c',
'fishbowl.c',
'widgetbowl.c',
'foreigndrawing.c',
'gestures.c',
'glarea.c',
'headerbar.c',
'hypertext.c',
'iconview.c',
'iconview_edit.c',
'images.c',
'infobar.c',
'links.c',
'listbox.c',
'flowbox.c',
'list_store.c',
'markup.c',
'menus.c',
'modelbutton.c',
'overlay.c',
'overlay2.c',
'panes.c',
'pickers.c',
'pixbufs.c',
'popover.c',
'printing.c',
'revealer.c',
'rotated_text.c',
'scale.c',
'search_entry.c',
'search_entry2.c',
'shortcuts.c',
'sidebar.c',
'sizegroup.c',
'spinbutton.c',
'spinner.c',
'stack.c',
'tabs.c',
'textmask.c',
'textview.c',
'textscroll.c',
'theming_style_classes.c',
'toolpalette.c',
'transparent.c',
'tree_store.c',
])
gtkdemo_deps = [ libgtk_dep, ]
if harfbuzz_dep.found() and pangoft_dep.found()
demos += files('font_features.c')
gtkdemo_deps += [ harfbuzz_dep, ]
endif
if os_unix
demos += files('pagesetup.c')
endif
gtkdemo_args = [ '-DGDK_DISABLE_DEPRECATED', '-DGTK_DISABLE_DEPRECATED', ]
demos_h = custom_target('gtk4 demo header',
output: 'demos.h',
input: demos,
command: [ find_program('geninclude.py'), '@OUTPUT@', '@INPUT@' ])
gtkdemo_resources = gnome.compile_resources('gtkdemo_resources',
'demo.gresource.xml',
source_dir: '.')
executable('gtk4-demo',
'main.c', 'gtkfishbowl.c', demos, demos_h, gtkdemo_resources,
c_args: gtkdemo_args,
dependencies: gtkdemo_deps,
include_directories: confinc,
gui_app: true,
install: true)
executable('gtk4-demo-application',
'application.c', gtkdemo_resources,
c_args: gtkdemo_args,
dependencies: gtkdemo_deps,
include_directories: confinc,
gui_app: true,
install: true)
# icons
icontheme_dir = join_paths(gtk_datadir, 'icons/hicolor')
foreach icon_size: [ '16x16', '22x22', '24x24', '32x32', '48x48', '256x256', ]
gtk_demo_icons_dir = join_paths(icontheme_dir, '@0@/apps'.format(icon_size))
install_data('data/@0@/gtk4-demo.png'.format(icon_size),
install_dir: gtk_demo_icons_dir)
install_data('data/@0@/gtk4-demo-symbolic.symbolic.png'.format(icon_size),
install_dir: gtk_demo_icons_dir)
endforeach
# desktop file
install_data('gtk4-demo.desktop', install_dir: gtk_applicationsdir)
# GSettings
install_data('org.gtk.Demo.gschema.xml', install_dir: gtk_schemasdir)
gnome.compile_schemas()

View File

@@ -65,12 +65,12 @@ do_overlay (GtkWidget *do_widget)
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_widget_set_margin_top (label, 8);
gtk_widget_set_margin_bottom (label, 8);
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
gtk_entry_set_placeholder_text (GTK_ENTRY (entry), "Your Lucky Number");
gtk_widget_set_margin_top (entry, 8);
gtk_widget_set_margin_bottom (entry, 8);
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), entry);
gtk_container_add (GTK_CONTAINER (window), overlay);

View File

@@ -148,7 +148,7 @@ do_panes (GtkWidget *do_widget)
vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
g_object_set (vpaned, "margin", 5, NULL);
gtk_box_pack_start (GTK_BOX (vbox), vpaned, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), vpaned);
hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
gtk_paned_add1 (GTK_PANED (vpaned), hpaned);
@@ -177,15 +177,13 @@ do_panes (GtkWidget *do_widget)
create_pane_options (GTK_PANED (hpaned),
"Horizontal",
"Left",
"Right"),
FALSE, FALSE);
"Right"));
gtk_box_pack_start (GTK_BOX (vbox),
create_pane_options (GTK_PANED (vpaned),
"Vertical",
"Top",
"Bottom"),
FALSE, FALSE);
"Bottom"));
}
if (!gtk_widget_get_visible (window))

View File

@@ -55,8 +55,10 @@ create_complex_popover (GtkWidget *parent,
}
static void
entry_size_allocate_cb (GtkEntry *entry,
GtkAllocation *allocation,
entry_size_allocate_cb (GtkEntry *entry,
const GtkAllocation *allocation,
int baseline,
GtkAllocation *out_clip,
gpointer user_data)
{
GtkEntryIconPosition popover_pos;
@@ -131,6 +133,7 @@ do_popover (GtkWidget *do_widget)
if (!window)
{
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Popovers");
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 24);
g_object_set (box, "margin", 24, NULL);
gtk_container_add (GTK_CONTAINER (window), box);

View File

@@ -204,8 +204,6 @@ do_rotated_text (GtkWidget *do_widget)
label = gtk_label_new (text);
gtk_container_add (GTK_CONTAINER (box), label);
gtk_label_set_angle (GTK_LABEL (label), 45);
/* Set up fancy stuff on the label */
layout = gtk_label_get_layout (GTK_LABEL (label));
pango_cairo_context_set_shape_renderer (pango_layout_get_context (layout),

View File

@@ -241,20 +241,20 @@ do_search_entry (GtkWidget *do_widget)
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), "Search entry demo");
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), label);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
/* Create our entry */
entry = gtk_search_entry_new ();
gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), entry);
/* Create the find and cancel buttons */
notebook = gtk_notebook_new ();
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
gtk_notebook_set_show_border (GTK_NOTEBOOK (notebook), FALSE);
gtk_box_pack_start (GTK_BOX (hbox), notebook, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), notebook);
find_button = gtk_button_new_with_label ("Find");
g_signal_connect (find_button, "clicked",

View File

@@ -91,12 +91,12 @@ do_search_entry2 (GtkWidget *do_widget)
entry = gtk_search_entry_new ();
container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
gtk_widget_set_halign (container, GTK_ALIGN_CENTER);
gtk_box_pack_start (GTK_BOX (container), entry, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (container), entry);
searchbar = gtk_search_bar_new ();
gtk_search_bar_connect_entry (GTK_SEARCH_BAR (searchbar), GTK_ENTRY (entry));
gtk_search_bar_set_show_close_button (GTK_SEARCH_BAR (searchbar), FALSE);
gtk_container_add (GTK_CONTAINER (searchbar), container);
gtk_box_pack_start (GTK_BOX (vbox), searchbar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), searchbar);
/* Hook the search bar to key presses */
g_signal_connect (window, "key-press-event",
@@ -104,26 +104,26 @@ do_search_entry2 (GtkWidget *do_widget)
/* Help */
label = gtk_label_new ("Start Typing to search");
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), label);
/* Toggle button */
button = gtk_toggle_button_new_with_label ("Search");
g_object_bind_property (button, "active",
searchbar, "search-mode-enabled",
G_BINDING_BIDIRECTIONAL);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), button);
/* Result */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
label = gtk_label_new ("Result:");
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
gtk_widget_set_margin_start (label, 6);
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), label);
label = gtk_label_new ("");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), label);
g_signal_connect (entry, "search-changed",
G_CALLBACK (search_changed_cb), label);
@@ -131,15 +131,15 @@ do_search_entry2 (GtkWidget *do_widget)
G_CALLBACK (changed_cb), label);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), hbox);
label = gtk_label_new ("Signal:");
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
gtk_widget_set_margin_start (label, 6);
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), label);
label = gtk_label_new ("");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), label);
g_signal_connect (entry, "search-changed",
G_CALLBACK (search_changed), label);

View File

@@ -49,7 +49,7 @@ do_sidebar (GtkWidget *do_widget)
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
sidebar = gtk_stack_sidebar_new ();
gtk_box_pack_start (GTK_BOX (box), sidebar, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (box), sidebar);
stack = gtk_stack_new ();
gtk_stack_set_transition_type (GTK_STACK (stack), GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN);
@@ -57,9 +57,9 @@ do_sidebar (GtkWidget *do_widget)
/* Separator between sidebar and stack */
widget = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX(box), widget, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX(box), widget);
gtk_box_pack_start (GTK_BOX (box), stack, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (box), stack);
for (i=0; (c = *(pages+i)) != NULL; i++ )
{

View File

@@ -116,7 +116,7 @@ do_sizegroup (GtkWidget *do_widget)
/* Create one frame holding color options */
frame = gtk_frame_new ("Color Options");
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
table = gtk_grid_new ();
g_object_set (table, "margin", 5, NULL);
@@ -129,7 +129,7 @@ do_sizegroup (GtkWidget *do_widget)
/* And another frame holding line style options */
frame = gtk_frame_new ("Line Options");
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), frame);
table = gtk_grid_new ();
g_object_set (table, "margin", 5, NULL);
@@ -142,7 +142,7 @@ do_sizegroup (GtkWidget *do_widget)
/* And a check button to turn grouping on and off */
check_button = gtk_check_button_new_with_mnemonic ("_Enable grouping");
gtk_box_pack_start (GTK_BOX (vbox), check_button, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), check_button);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
g_signal_connect (check_button, "toggled",

View File

@@ -19,7 +19,7 @@ hex_spin_input (GtkSpinButton *spin_button,
gchar *err;
gdouble res;
buf = gtk_entry_get_text (GTK_ENTRY (spin_button));
buf = gtk_spin_button_get_text (spin_button);
res = strtol (buf, &err, 16);
*new_val = res;
if (*err)
@@ -41,8 +41,8 @@ hex_spin_output (GtkSpinButton *spin_button)
buf = g_strdup ("0x00");
else
buf = g_strdup_printf ("0x%.2X", val);
if (strcmp (buf, gtk_entry_get_text (GTK_ENTRY (spin_button))))
gtk_entry_set_text (GTK_ENTRY (spin_button), buf);
if (strcmp (buf, gtk_spin_button_get_text (spin_button)))
gtk_spin_button_set_text (spin_button, buf);
g_free (buf);
return TRUE;
@@ -60,7 +60,7 @@ time_spin_input (GtkSpinButton *spin_button,
gchar *endh;
gchar *endm;
text = gtk_entry_get_text (GTK_ENTRY (spin_button));
text = gtk_spin_button_get_text (spin_button);
str = g_strsplit (text, ":", 2);
if (g_strv_length (str) == 2)
@@ -99,8 +99,8 @@ time_spin_output (GtkSpinButton *spin_button)
hours = gtk_adjustment_get_value (adjustment) / 60.0;
minutes = (hours - floor (hours)) * 60.0;
buf = g_strdup_printf ("%02.0f:%02.0f", floor (hours), floor (minutes + 0.5));
if (strcmp (buf, gtk_entry_get_text (GTK_ENTRY (spin_button))))
gtk_entry_set_text (GTK_ENTRY (spin_button), buf);
if (strcmp (buf, gtk_spin_button_get_text (spin_button)))
gtk_spin_button_set_text (spin_button, buf);
g_free (buf);
return TRUE;
@@ -132,7 +132,7 @@ month_spin_input (GtkSpinButton *spin_button,
for (i = 1; i <= 12; i++)
{
tmp1 = g_ascii_strup (month[i - 1], -1);
tmp2 = g_ascii_strup (gtk_entry_get_text (GTK_ENTRY (spin_button)), -1);
tmp2 = g_ascii_strup (gtk_spin_button_get_text (spin_button), -1);
if (strstr (tmp1, tmp2) == tmp1)
found = TRUE;
g_free (tmp1);
@@ -162,8 +162,8 @@ month_spin_output (GtkSpinButton *spin_button)
for (i = 1; i <= 12; i++)
if (fabs (value - (double)i) < 1e-5)
{
if (strcmp (month[i-1], gtk_entry_get_text (GTK_ENTRY (spin_button))))
gtk_entry_set_text (GTK_ENTRY (spin_button), month[i-1]);
if (strcmp (month[i-1], gtk_spin_button_get_text (spin_button)))
gtk_spin_button_set_text (spin_button, month[i-1]);
}
return TRUE;

View File

@@ -53,7 +53,7 @@ do_spinner (GtkWidget *do_widget)
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
g_object_set (vbox, "margin", 5, NULL);
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (content_area), vbox);
/* Sensitive */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);

View File

@@ -157,7 +157,7 @@ create_text_view (GtkWidget *hbox,
guint timeout;
swindow = gtk_scrolled_window_new (NULL, NULL);
gtk_box_pack_start (GTK_BOX (hbox), swindow, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (hbox), swindow);
textview = gtk_text_view_new ();
gtk_container_add (GTK_CONTAINER (swindow), textview);

View File

@@ -252,10 +252,9 @@
<property name="visible">1</property>
<property name="label">Plain</property>
<property name="halign">end</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkButton">

View File

@@ -473,7 +473,7 @@ do_toolpalette (GtkWidget *do_widget)
"text", 0,
NULL);
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_orientation), &iter);
gtk_box_pack_start (GTK_BOX (box), combo_orientation, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (box), combo_orientation);
/* Style combo box: */
style_model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
@@ -512,11 +512,11 @@ do_toolpalette (GtkWidget *do_widget)
"text", 0,
NULL);
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_style), &iter);
gtk_box_pack_start (GTK_BOX (box), combo_style, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (box), combo_style);
/* Add hbox */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
gtk_box_pack_start (GTK_BOX (box), hbox, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (box), hbox);
/* Add and fill the ToolPalette: */
palette = gtk_tool_palette_new ();
@@ -526,6 +526,7 @@ do_toolpalette (GtkWidget *do_widget)
load_special_items (GTK_TOOL_PALETTE (palette));
palette_scroller = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_vexpand (palette_scroller, TRUE);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (palette_scroller),
GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
@@ -548,7 +549,7 @@ do_toolpalette (GtkWidget *do_widget)
notebook = gtk_notebook_new ();
g_object_set (notebook, "margin", 6, NULL);
gtk_box_pack_end (GTK_BOX(hbox), notebook, FALSE, FALSE);
gtk_box_pack_end (GTK_BOX(hbox), notebook);
/* ===== DnD for tool items ===== */

View File

@@ -402,8 +402,7 @@ do_tree_store (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_box_pack_start (GTK_BOX (vbox),
gtk_label_new ("Jonathan's Holiday Card Planning Sheet"),
FALSE, FALSE);
gtk_label_new ("Jonathan's Holiday Card Planning Sheet"));
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
@@ -411,7 +410,7 @@ do_tree_store (GtkWidget *do_widget)
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), sw);
/* create model */
model = create_model ();

179
demos/gtk-demo/widgetbowl.c Normal file
View File

@@ -0,0 +1,179 @@
/* Benchmark/Widgetbowl
*
* This demo models the fishbowl demos seen on the web in a GTK way.
* It's also a neat little tool to see how fast your computer (or
* your GTK version) is.
*/
#include <gtk/gtk.h>
#include "gtkfishbowl.h"
GtkWidget *allow_changes;
#define N_STATS 5
#define STATS_UPDATE_TIME G_USEC_PER_SEC
typedef struct _Stats Stats;
struct _Stats {
gint64 last_stats;
gint64 last_frame;
gint last_suggestion;
guint frame_counter_max;
guint stats_index;
guint frame_counter[N_STATS];
guint item_counter[N_STATS];
};
static Stats *
get_stats (GtkWidget *widget)
{
static GQuark stats_quark = 0;
Stats *stats;
if (G_UNLIKELY (stats_quark == 0))
stats_quark = g_quark_from_static_string ("stats");
stats = g_object_get_qdata (G_OBJECT (widget), stats_quark);
if (stats == NULL)
{
stats = g_new0 (Stats, 1);
g_object_set_qdata_full (G_OBJECT (widget), stats_quark, stats, g_free);
stats->last_frame = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget));
stats->last_stats = stats->last_frame;
}
return stats;
}
static void
do_stats (GtkWidget *widget,
GtkWidget *info_label,
gint *suggested_change)
{
Stats *stats;
gint64 frame_time;
stats = get_stats (widget);
frame_time = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget));
if (stats->last_stats + STATS_UPDATE_TIME < frame_time)
{
char *new_label;
guint i, n_frames;
n_frames = 0;
for (i = 0; i < N_STATS; i++)
{
n_frames += stats->frame_counter[i];
}
new_label = g_strdup_printf ("widgets - %.1f fps",
(double) G_USEC_PER_SEC * n_frames
/ (N_STATS * STATS_UPDATE_TIME));
gtk_label_set_label (GTK_LABEL (info_label), new_label);
g_free (new_label);
if (stats->frame_counter[stats->stats_index] >= 19 * stats->frame_counter_max / 20)
{
if (stats->last_suggestion > 0)
stats->last_suggestion *= 2;
else
stats->last_suggestion = 1;
}
else
{
if (stats->last_suggestion < 0)
stats->last_suggestion--;
else
stats->last_suggestion = -1;
stats->last_suggestion = MAX (stats->last_suggestion, 1 - (int) stats->item_counter[stats->stats_index]);
}
stats->stats_index = (stats->stats_index + 1) % N_STATS;
stats->frame_counter[stats->stats_index] = 0;
stats->item_counter[stats->stats_index] = stats->item_counter[(stats->stats_index + N_STATS - 1) % N_STATS];
stats->last_stats = frame_time;
if (suggested_change)
*suggested_change = stats->last_suggestion;
else
stats->last_suggestion = 0;
}
else
{
if (suggested_change)
*suggested_change = 0;
}
stats->last_frame = frame_time;
stats->frame_counter[stats->stats_index]++;
stats->frame_counter_max = MAX (stats->frame_counter_max, stats->frame_counter[stats->stats_index]);
}
static void
stats_update (GtkWidget *widget)
{
Stats *stats;
stats = get_stats (widget);
stats->item_counter[stats->stats_index] = gtk_fishbowl_get_count (GTK_FISHBOWL (widget));
}
static gboolean
move_fish (GtkWidget *bowl,
GdkFrameClock *frame_clock,
gpointer info_label)
{
gint suggested_change = 0;
do_stats (bowl,
info_label,
!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (allow_changes)) ? &suggested_change : NULL);
gtk_fishbowl_set_count (GTK_FISHBOWL (bowl),
gtk_fishbowl_get_count (GTK_FISHBOWL (bowl)) + suggested_change);
stats_update (bowl);
return G_SOURCE_CONTINUE;
}
GtkWidget *
do_widgetbowl (GtkWidget *do_widget)
{
static GtkWidget *window = NULL;
if (!window)
{
GtkBuilder *builder;
GtkWidget *bowl, *info_label;
g_type_ensure (GTK_TYPE_FISHBOWL);
builder = gtk_builder_new_from_resource ("/fishbowl/fishbowl.ui");
gtk_builder_connect_signals (builder, NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
bowl = GTK_WIDGET (gtk_builder_get_object (builder, "bowl"));
gtk_fishbowl_set_use_icons (GTK_FISHBOWL (bowl), FALSE);
info_label = GTK_WIDGET (gtk_builder_get_object (builder, "info_label"));
allow_changes = GTK_WIDGET (gtk_builder_get_object (builder, "changes_allow"));
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (do_widget));
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
gtk_widget_realize (window);
gtk_widget_add_tick_callback (bowl, move_fish, info_label, NULL);
}
if (!gtk_widget_get_visible (window))
gtk_widget_show (window);
else
gtk_widget_destroy (window);
return window;
}

View File

@@ -1,47 +0,0 @@
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/gdk \
-I$(top_builddir)/gdk \
$(GTK_DEBUG_FLAGS) \
$(GTK_DEP_CFLAGS)
LDADD = \
$(top_builddir)/gtk/libgtk-4.la \
$(GTK_DEP_LIBS)
bin_PROGRAMS = gtk4-icon-browser
desktopdir = $(datadir)/applications
dist_desktop_DATA = gtk4-icon-browser.desktop
gtk4_icon_browser_SOURCES = \
main.c \
iconbrowserapp.c iconbrowserapp.h \
iconbrowserwin.c iconbrowserwin.h \
iconstore.c iconstore.h \
resources.c
BUILT_SOURCES = \
resources.c
resources.c: iconbrowser.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/iconbrowser.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/iconbrowser.gresource.xml \
--target=$@ --sourcedir=$(srcdir) --generate-source
EXTRA_DIST = \
menus.ui \
iconbrowser.gresource.xml \
window.ui
# ------------------- MSVC Build Items ----------------
MSVCPROJS = gtk4-icon-browser
gtk4_icon_browser_FILES = $(gtk4_icon_browser_SOURCES)
gtk4_icon_browser_EXCLUDES = dummy
include $(top_srcdir)/win32/Makefile.msvcproj
dist-hook: $(top_builddir)/win32/vs12/gtk4-icon-browser.vcxproj
-include $(top_srcdir)/git.mk

View File

@@ -0,0 +1,517 @@
[volume]
Name=Volume
Description=Icons related to audio input and output volume
audio-volume-high=The icon used to indicate high audio volume
audio-volume-low=The icon used to indicate low audio volume
audio-volume-medium=The icon used to indicate medium audio volume
audio-volume-muted=The icon used to indicate the muted state for audio playback
microphone-sensitivity-high=The icon used to indicate high microphone sensitivity
microphone-sensitivity-low=The icon used to indicate low microphone sensitivity
microphone-sensitivity-medium=The icon used to indicate medium microphone sensitivity
microphone-sensitivity-muted=The icon used to indicate that a microphone is muted
[multimedia]
Name=Multimedia
Description=Icons related to playback of media
media-playlist-repeat=The icon for the repeat mode of a media player
media-playlist-repeat-song=The icon for repeating a song in a media player
media-playlist-shuffle=The icon for the shuffle mode of a media player
media-playlist-consecutive=The icon for consecutive mode of a media player
media-skip-backward=The icon for the skip backward action of a media player
media-seek-backward=The icon for the seek backward action of a media player
media-playback-start=The icon for the start playback action of a media player
media-seek-forward=The icon for the seek forward action of a media player
media-skip-forward=The icon for the skip forward action of a media player
media-playback-stop=The icon for the stop action of a media player
media-playback-pause=The icon for the pause action of a media player
media-eject=The icon for the eject action of a media player or file manager
media-record=The icon for the record action of a media application
media-view-subtitles=The icon used to show subtitles in a media player
[network]
Name=Network
Description=Icons related to network status");
network-transmit-receive=The icon used data is being both transmitted and received simultaneously, while the computing device is connected to a network
network-transmit=The icon used when data is being transmitted, while the computing device is connected to a network
network-receive=The icon used when data is being received, while the computing device is connected to a network
network-idle=The icon used when no data is being transmitted or received, while the computing device is connected to a network
network-error=The icon used when an error occurs trying to intialize the network connection of the computing device
network-offline=The icon used when the computing device is disconnected from the network
[weather]
Name=Weather
Description=Icons about weather conditions
weather-clear=The icon used while the weather for a region is “clear skies”
weather-clear-night=The icon used while the weather for a region is “clear skies” during the night
weather-few-clouds=The icon used while the weather for a region is “partly cloudy”
weather-few-clouds-night=The icon used while the weather for a region is “partly cloudy” during the night
weather-fog=The icon used while the weather for a region is “foggy”
weather-overcast=The icon used while the weather for a region is “overcast”
weather-severe-alert=The icon used while a sever weather alert is in effect for a region
weather-showers=The icon used while rain showers are occurring in a region
weather-showers-scattered=The icon used while scattered rain showers are occurring in a region
weather-snow=The icon used while snow showers are occurring in a region
weather-storm=The icon used while storms are occurring in a region
weather-windy=The icon used while the weather is windy
[navigation]
Name=Navigation
Description=Icons for navigation in the user interface of a program
go-first=The icon for the go to the first item in a list
go-previous=The icon for the go to the previous item in a list
go-next=The icon for the go to the next item in a list
go-last=The icon for the go to the last item in a list
go-bottom=The icon for the go to bottom of a list
go-down=The icon for the go down in a list
go-up=The icon for the go up in a list
go-top=The icon for the go to the top of a list
go-home=The icon for the go to home location
go-jump=The icon for the jump to action
[editing]
Name=Editing
Description=Icons related to editing a document
format-indent-less=The icon for the decrease indent formatting action
format-indent-more=The icon for the increase indent formatting action
format-justify-center=The icon for the center justification formatting action
format-justify-fill=The icon for the fill justification formatting action
format-justify-left=The icon for the left justification formatting action
format-justify-right=The icon for the right justification action
format-text-direction-ltr=The icon for the left-to-right text formatting action
format-text-direction-rtl=The icon for the right-to-left formatting action
format-text-bold=The icon for the bold text formatting action
format-text-italic=The icon for the italic text formatting action
format-text-underline=The icon for the underlined text formatting action
format-text-strikethrough=The icon for the strikethrough text formatting action
edit-clear=The icon for the clear action
edit-clear-all=
edit-copy=The icon for the copy action
edit-cut=The icon for the cut action
edit-delete=The icon for the delete action
edit-find-replace=The icon for the find and replace action
edit-paste=The icon for the paste action
edit-redo=The icon for the redo action
edit-select-all=The icon for the select all action
edit-select=
edit-undo=The icon for the undo action
error-correct=
document-properties=The icon for the action to view the properties of a document in an application
document-new=The icon used for the action to create a new document
document-open=The icon used for the action to open a document
document-open-recent=The icon used for the action to open a document that was recently opened
document-save=The icon for the save action. Should be an arrow pointing down and toward a hard disk
document-save-as=The icon for the save as action
document-send=The icon for the send action. Should be an arrow pointing up and away from a hard disk
document-page-setup=The icon for the page setup action of a document editor
document-edit=The icon for the action to edit a document
object-flip-horizontal=The icon for the action to flip an object horizontally
object-flip-vertical=The icon for the action to flip an object vertically
object-rotate-left=The icon for the rotate left action performed on an object
object-rotate-right=The icon for the rotate rigt action performed on an object
insert-image=The icon for the insert image action of an application
insert-link=The icon for the insert link action of an application
insert-object=The icon for the insert object action of an application
insert-text=The icon for the insert text action of an application
accessories-text-editor=The icon used for the desktop's text editing accessory program
[view]
Name=View Controls
Description=Icons for view controls in a user interface
view-list=The icon used for “List“ view mode
view-grid=The icon used for “Grid“ view mode (as opposed to “List“)
view-fullscreen=The icon used for the “Fullscreen” item in the application's “View” menu
view-restore=The icon used by an application for leaving the fullscreen view, and returning to a normal windowed view
zoom-fit-best=The icon used for the “Best Fit” item in the application's “View” menu
zoom-in=The icon used for the “Zoom in” item in the application's “View” menu
zoom-out=The icon used for the “Zoom Out” item in the application's “View” menu
zoom-original=The icon used for the “Original Size” item in the application's “View” menu
view-continuous=The icon used for a continuous view mode
view-paged=The icon used for a paged view mode (as opposed to continuous)
view-dual=The icon used for a side-by-side view of paginated content
view-wrapped=The icon used to indicate a wrap-around to the beginning
view-pin=The icon used for 'pin a view'
[calendar]
Name=Calendar, Tasks and Alarms
Description=Icons related to calendars, tasks and alarms
task-due=The icon used when a task is due soon
task-past-due=The icon used when a task that was due, has been left incomplete
appointment-soon=The icon used when an appointment will occur soon
appointment-missed=The icon used when an appointment was missed
alarm=The icon used for alarms when a task or appointment is due
[communication]
Name=Communication
Description=Icons related email, phone calls, IM and other forms of communication
mail-unread=The icon used for an electronic mail that is unread
mail-read=The icon used for an electronic mail that is read
mail-replied=The icon used for an electronic mail that has been replied to
mail-attachment=The icon used for an electronic mail that contains attachments
mail-mark-important=The icon for the mark as important action of an electronic mail application
mail-send=The icon for the send action of an electronic mail application
mail-send-receive=The icon for the send and receive action of an electronic mail application
call-start=The icon used for initiating or accepting a call
call-stop=The icon used for stopping a current call
call-missed=The icon used to show a missed call
user-available=The icon used when a user on a chat network is available to initiate a conversation with
user-offline=The icon used when a user on a chat network is not available
user-idle=The icon used when a user on a chat network has not been an active participant in any chats on the network, for an extended period of time
user-invisible=The icon used when a user is on a chat network, but is invisible to others
user-busy=The icon used when a user is on a chat network, and has marked himself as busy
user-away=The icon used when a user on a chat network is away from their keyboard and the chat program
user-status-pending=The icon used when the current user status on a chat network is not known
[devices]
Name=Devices and Media
Description=Icons for devices and media
audio-input-microphone=The icon used for the microphone audio input device
camera-web=The fallback icon for web cameras
camera-photo=The icon used for a digital still camera devices
input-keyboard=The icon used for the keyboard input device
printer=The icon used for a printer device
video-display=The icon used for the monitor that video gets displayed to
computer=The icon used for the computing device as a whole
media-optical=The icon used for physical optical media such as CD and DVD
phone=The icon used for phone devices which support connectivity to the PC, such as VoIP, cellular, or possibly landline phones
input-dialpad=The icon used for dialpad input devices
input-touchpad=The icon used for touchpad input devices
scanner=The icon used for a scanner device
audio-card=The icon used for the audio rendering device
input-gaming=The icon used for the gaming input device
input-mouse=The icon used for the mousing input device
multimedia-player=The icon used for generic multimedia playing devices
audio-headphones=The icon used for headphones
audio-headset=The icon used for headsets
display-projector=The icon used for projectors
media-removable=The icon used for generic removable media
printer-network=The icon used for printers which are connected via the network
audio-speakers=The icon used for speakers
camera-video=The fallback icon for video cameras
drive-optical=The icon used for optical media drives such as CD and DVD
drive-removable-media=The icon used for removable media drives
input-tablet=The icon used for graphics tablet input devices
network-wireless=The icon used for wireless network connections
network-wired=The icon used for wired network connections
media-floppy=The icon used for physical floppy disk media
media-flash=The fallback icon used for flash media, such as memory stick and SD
[contenttypes]
Name=Content Types
Description=Icons for different types of data, such as audio or image files
application-certificate=
application-rss+xml=
application-x-appliance=
audio-x-generic=The icon used for generic audio file types
folder=The standard folder icon used to represent directories on local filesystems, mail folders, and other hierarchical groups
text-x-generic=The icon used for generic text file types
video-x-generic=The icon used for generic video file types
x-office-calendar=The icon used for generic calendar file types
[emotes]
Name=Emotes
Description=Icons for emotions that are expressed through text chat applications such as :-) or :-P in IRC or instant messengers
face-angel=The icon used for the 0:-) emote
face-angry=The icon used for the X-( emote
face-cool=The icon used for the B-) emote
face-crying=The icon used for the :'( emote
face-devilish=The icon used for the >:-) emote
face-embarrassed=The icon used for the :-[ emote
face-kiss=The icon used for the :-* emote
face-laugh=The icon used for the :-)) emote
face-monkey=The icon used for the :-(|) emote
face-plain=The icon used for the :-| emote
face-raspberry=The icon used for the :-P emote
face-sad=The icon used for the :-( emote
face-shutmouth=The 'shut mouth' emote
face-sick=The icon used for the :-& emote
face-smile=The icon used for the :-) emote
face-smile-big=The icon used for the :-D emote
face-smirk=The icon used for the :-! emote
face-surprise=The icon used for the :-0 emote
face-tired=The icon used for the |-) emote
face-uncertain=The icon used for the :-/ emote
face-wink=The icon used for the ;-) emote
face-worried=The icon used for the :-S emote
face-yawn=
[general]
Name=General
Description=Generally useful icons that don't fit in a particular category
edit-find=The icon for generic search actions
content-loading=The icon used to indicate that content is loading
open-menu=The icon used for a menu button in the header bar
view-more=The icon used for a “View More“ action
tab-new=The icon used for a “New Tab“ action
bookmark-new=The icon used for creating a new bookmark
mark-location=The icon used to mark a location on a map
find-location=The icon used for a “Search location“ action
send-to=The icon used for a “Send to“ action
object-select=The icon used for generic selection actions
window-close=The icon used for actions that close a view, such as window or tab close button
view-refresh=The icon used for the “Refresh” item in the application's “View” menu
process-stop=The icon used for the “Stop” action in applications with actions that may take a while to process, such as web page loading in a browser
action-unavailable=The icon used to indicate that an action is currently unavailable, such as “Pause“ when no media is playing
document-print=The icon for the print action of an application
printer-printing=The icon used while a print job is successfully being spooled to a printing device
printer-warning=The icon used when a recoverable problem occurs while attempting to printing
printer-error=The icon used when an error occurs while attempting to print
dialog-information=The icon used when a dialog is opened to give information to the user that may be pertinent to the requested action
dialog-question=The icon used when a dialog is opened to ask a simple question of the user
dialog-warning=The icon used when a dialog is opened to warn the user of impending issues with the requested action
dialog-password=The icon used when a dialog requesting the authentication credentials for a user is opened
dialog-error=The icon used when a dialog is opened to explain an error condition to the user
list-add=The icon for the add to list action
list-remove=The icon for the remove from list action
non-starred=The icon used to indicate that an object is not 'starred'
semi-starred=The icon used to indicate that an object has is 'half-starred'
starred=The icon used to indicate that an object is 'starred'
star-new=The used for the “New Star“ action
security-low=The icon used to indicate that the security level of a connection is presumed to be insecure, either by using weak encryption, or by using a certificate that the could not be automatically verified, and which the user has not chosent to trust
security-medium=The icon used to indicate that the security level of a connection is presumed to be secure, using strong encryption, and a certificate that could not be automatically verified, but which the user has chosen to trust
security-high=The icon used to indicate that the security level of a connection is known to be secure, using strong encryption and a valid certificate
user-trash=The icon for the user's “Trash” place in the file system
user-trash-full=The icon for the user's “Trash” in the file system, when there are items in the “Trash” waiting for disposal or recovery
emblem-system=The icon used as an emblem for directories that contain system libraries, settings, and data
avatar-default=The generic avatar icon, which is used to represent a user that doesn't have a personalized avatar
emblem-synchronizing=The icon used as an emblem to indicate that a a synchronizing operation is in process
emblem-shared=The icon used as an emblem for files and directories that are shared to other users
folder-download=The icon representing the location in the file system where downloaded files are stored
help-browser=The icon used for the desktop's help browsing application
[other]
Name=Other
Description=Icons which have may be too specialized and not of general interest
changes-allow=
changes-prevent=
view-sort-ascending=The icon used for the “Sort Ascending” item in the application's “View” menu, or in a button for changing the sort method for a list
view-sort-descending=The icon used for the “Sort Descending” item in the application's “View” menu, or in a button for changing the sort method for a list
document-revert=The icon for the action of reverting to a previous version of a document
address-book-new=The icon used for the action to create a new address book
application-exit=The icon used for exiting an application. Typically this is seen in the application's menus as File->Quit
appointment-new=The icon used for the action to create a new appointment in a calendaring application
contact-new=The icon used for the action to create a new contact in an address book application
document-print-preview=The icon for the print preview action of an application
folder-new=The icon for creating a new folder
help-about=The icon for the About item in the Help menu
help-contents=The icon for Contents item in the Help menu
help-faq=The icon for the FAQ item in the Help menu
list-remove-all=
mail-forward=The icon for the forward action of an electronic mail application
mail-mark-junk=The icon for the mark as junk action of an electronic mail application
mail-mark-notjunk=The icon for the mark as not junk action of an electronic mail application
mail-mark-read=The icon for the mark as read action of an electronic mail application
mail-mark-unread=The icon for the mark as unread action of an electronic mail application
mail-message-new=The icon for the compose new mail action of an electronic mail application
mail-reply-all=The icon for the reply to all action of an electronic mail application
mail-reply-sender=The icon for the reply to sender action of an electronic mail application
pan-down=
pan-end=
pan-start=
pan-up=
system-lock-screen=The icon used for the “Lock Screen” item in the desktop's panel application
system-log-out=The icon used for the “Log Out” item in the desktop's panel application
system-run=The icon used for the “Run Application...” item in the desktop's panel application
system-search=The icon used for the “Search” item in the desktop's panel application
system-reboot=The icon used for the “Reboot” item in the desktop's panel application
system-shutdown=The icon used for the “Shutdown” item in the desktop's panel application
tools-check-spelling=The icon used for the “Check Spelling” item in the application's “Tools” menu
window-maximize=
window-minimize=
window-restore=
window-new=The icon used for the “New Window” item in the application's “Windows” menu
accessories-calculator=The icon used for the desktop's calculator accessory program
accessories-character-map=The icon used for the desktop's international and extended text character accessory program
accessories-dictionary=The icon used for the desktop's dictionary accessory program
multimedia-volume-control=The icon used for the desktop's hardware volume control application
preferences-desktop-accessibility=The icon used for the desktop's accessibility preferences
preferences-desktop-display=
preferences-desktop-font=The icon used for the desktop's font preferences
preferences-desktop-keyboard=The icon used for the desktop's keyboard preferences
preferences-desktop-keyboard-shortcuts=
preferences-desktop-locale=The icon used for the desktop's locale preferences
preferences-desktop-remote-desktop=
preferences-desktop-multimedia=The icon used for the desktop's multimedia preferences
preferences-desktop-screensaver=The icon used for the desktop's screen saving preferences
preferences-desktop-theme=The icon used for the desktop's theme preferences
preferences-desktop-wallpaper=The icon used for the desktop's wallpaper preferences
preferences-system-privacy=
preferences-system-windows=
system-file-manager=The icon used for the desktop's file management application
system-software-install=The icon used for the desktop's software installer application
system-software-update=The icon used for the desktop's software updating application
system-users=
user-info=
utilities-system-monitor=The icon used for the desktop's system resource monitor application
utilities-terminal=The icon used for the desktop's terminal emulation application.
application-x-addon=
application-x-executable=The icon used for executable file types
font-x-generic=The icon used for generic font file types
image-x-generic=The icon used for generic image file types
package-x-generic=The icon used for generic package file types
text-html=The icon used for HTML text file types
text-x-generic-template=The icon used for generic text templates
text-x-preview=
text-x-script=The icon used for script file types, such as shell scripts
x-office-address-book=The icon used for generic address book file types
x-office-document=The icon used for generic document and letter file types
x-office-document-template=
x-office-presentation=The icon used for generic presentation file types
x-office-presentation-template=
x-office-spreadsheet=The icon used for generic spreadsheet file types
x-office-spreadsheet-template=
x-package-repository=
applications-accessories=The icon for the “Accessories” sub-menu of the Programs menu
applications-development=The icon for the “Programming” sub-menu of the Programs menu
applications-engineering=The icon for the “Engineering” sub-menu of the Programs menu
applications-games=The icon for the “Games” sub-menu of the Programs menu
applications-graphics=The icon for the “Graphics” sub-menu of the Programs menu
applications-internet=The icon for the “Internet” sub-menu of the Programs menu
applications-multimedia=The icon for the “Multimedia” sub-menu of the Programs menu
applications-office=The icon for the “Office” sub-menu of the Programs menu
applications-other=The icon for the “Other” sub-menu of the Programs menu
applications-science=The icon for the “Science” sub-menu of the Programs menu
applications-system=The icon for the “System Tools” sub-menu of the Programs menu
applications-utilities=The icon for the “Utilities” sub-menu of the Programs menu
preferences-desktop=The icon for the “Desktop Preferences” category
preferences-desktop-peripherals=The icon for the “Peripherals” sub-category of the “Desktop Preferences” category
preferences-desktop-personal=The icon for the “Personal” sub-category of the “Desktop Preferences” category
preferences-other=The icon for the “Other” preferences category
preferences-system=The icon for the “System Preferences” category
preferences-system-network=The icon for the “Network” sub-category of the “System Preferences” category
system-help=The icon for the “Help” system category
battery=The icon used for the system battery device
computer-apple-ipad=
colorimeter-colorhug=
drive-harddisk=The icon used for hard disk drives
drive-harddisk-ieee1394=
drive-harddisk-system=
drive-multidisk=
media-optical-bd=
media-optical-cd-audio=
media-optical-dvd=
media-tape=The icon used for generic physical tape media
media-zip=
modem=The icon used for modem devices
multimedia-player-apple-ipod-touch=
network-vpn=
pda=This is the fallback icon for Personal Digial Assistant devices. Primary use of this icon is for PDA devices connected to the PC. Connection medium is not an important aspect of the icon. The metaphor for this fallback icon should be a generic PDA device icon
phone-apple-iphone=
uninterruptible-power-supply=
emblem-default=The icon used as an emblem to specify the default selection of a printer for example
emblem-documents=The icon used as an emblem for the directory where a user's documents are stored
emblem-downloads=The icon used as an emblem for the directory where a user's downloads from the internet are stored
emblem-favorite=The icon used as an emblem for files and directories that the user marks as favorites
emblem-generic=
emblem-important=The icon used as an emblem for files and directories that are marked as important by the user
emblem-mail=The icon used as an emblem to specify the directory where the user's electronic mail is stored
emblem-new=
emblem-ok=
emblem-package=
emblem-photos=The icon used as an emblem to specify the directory where the user stores photographs
emblem-readonly=The icon used as an emblem for files and directories which can not be written to by the user
emblem-symbolic-link=The icon used as an emblem for files and direcotires that are links to other files or directories on the filesystem
emblem-synchronized=The icon used as an emblem for files or directories that are configured to be synchronized to another device
emblem-unreadable=The icon used as an emblem for files and directories that are inaccessible.
emblem-urgent=
emblem-videos=
emblem-web=
folder-documents=
folder-download=
folder-music=
folder-pictures=
folder-documents=
folder-publicshare=
folder-remote=The icon used for normal directories on a remote filesystem
folder-saved-search=
folder-templates=
folder-videos=
network-server=The icon used for individual host machines under the “Network Servers” place in the file manager
network-workgroup=The icon for the “Network Servers” place in the desktop's file manager, and workgroups within the network
start-here=The icon used by the desktop's main menu for accessing places, applications, and other features
user-bookmarks=The icon for the user's special “Bookmarks” place
user-desktop=The icon for the special “Desktop” directory of the user
user-home=The icon for the special “Home” directory of the user
airplane-mode=
battery-caution-charging=
battery-caution=The icon used when the battery is below 40%
battery-empty-charging=
battery-empty=
battery-full-charged=
battery-full-charging=
battery-full=
battery-good-charging=
battery-good=
battery-low-charging=
battery-low=The icon used when the battery is below 20%
battery-missing=
bluetooth-active=
bluetooth-disabled=
channel-insecure=
channel-secure=
computer-fail=
display-brightness=
keyboard-brightness=
folder-drag-accept=The icon used for a folder while an object is being dragged onto it, that is of a type that the directory can contain
folder-open=The icon used for folders, while their contents are being displayed within the same window. This icon would normally be shown in a tree or list view, next to the main view of a folder's contents
folder-visiting=The icon used for folders, while their contents are being displayed in another window. This icon would typically be used when using multiple windows to navigate the hierarchy, such as in Nautilus's spatial mode
image-loading=The icon used when another image is being loaded, such as thumnails for larger images in the file manager
image-missing=The icon used when another image could not be loaded
mail-signed=The icon used for an electronic mail that contains a signature
mail-signed-verified=The icon used for an electronic mail that contains a signature which has also been verified by the security system
network-cellular-3g=
network-cellular-4g=
network-cellular-edge=
network-cellular-gprs=
network-cellular-umts=
network-cellular-acquiring=
network-cellular-connected=
network-cellular-no-route=
network-cellular-offline=
network-cellular-signal-excellent=
network-cellular-signal-good=
network-cellular-signal-ok=
network-cellular-signal-weak=
network-cellular-signal-none=
network-vpn-acquiring=
network-vpn=
network-wired-acquiring=
network-wired-disconnected=
network-wired-no-route=
network-wired-offline=
network-wireless-acquiring=
network-wireless-connected=
network-wireless-encrypted=
network-wireless-hotspot=
network-wireless-no-route=
network-wireless-offline=
network-wireless-signal-excellent=
network-wireless-signal-good=
network-wireless-signal-ok=
network-wireless-signal-weak=
network-wireless-signal-none=
rotation-allowed=
rotation-locked=
software-update-available=The icon used when an update is available for software installed on the computing device, through the system software update program
software-update-urgent=The icon used when an urgent update is available through the system software update program
sync-error=The icon used when an error occurs while attempting to synchronize data from the computing device, to another device
sync-synchronizing=The icon used while data is successfully synchronizing to another device
touchpad-disabled=
trophy-bronze=
trophy-silver=
trophy-gold=
night-light=
daytime-sunrise=
daytime-sunset=

View File

@@ -3,5 +3,6 @@
<gresource prefix="/org/gtk/iconbrowser/gtk">
<file preprocess="xml-stripblanks">window.ui</file>
<file preprocess="xml-stripblanks">menus.ui</file>
<file>icon.list</file>
</gresource>
</gresources>

View File

@@ -6,11 +6,22 @@
typedef struct
{
const gchar *id;
const gchar *name;
const gchar *description;
gchar *id;
gchar *name;
gchar *description;
} Context;
static void
context_free (gpointer data)
{
Context *context = data;
g_free (context->id);
g_free (context->name);
g_free (context->description);
g_free (context);
}
struct _IconBrowserWindow
{
GtkApplicationWindow parent;
@@ -81,7 +92,7 @@ set_image (GtkWidget *image, const gchar *name, gint size)
gtk_image_set_from_icon_name (GTK_IMAGE (image), name, 1);
gtk_image_set_pixel_size (GTK_IMAGE (image), size);
pixbuf = get_icon (image, name, size);
gtk_drag_source_set_icon_pixbuf (gtk_widget_get_parent (image), pixbuf);
gtk_drag_source_set_icon_pixbuf (image, pixbuf);
g_object_unref (pixbuf);
}
@@ -154,6 +165,7 @@ add_icon (IconBrowserWindow *win,
g_free (symbolic_name);
symbolic_name = NULL;
}
gtk_list_store_insert_with_values (win->store, NULL, -1,
ICON_STORE_NAME_COLUMN, regular_name,
ICON_STORE_SYMBOLIC_NAME_COLUMN, symbolic_name,
@@ -172,11 +184,11 @@ add_context (IconBrowserWindow *win,
GtkWidget *row;
c = g_new (Context, 1);
c->id = id;
c->name = name;
c->description = description;
c->id = g_strdup (id);
c->name = g_strdup (name);
c->description = g_strdup (description);
g_hash_table_insert (win->contexts, (gpointer)id, c);
g_hash_table_insert (win->contexts, c->id, c);
row = gtk_label_new (name);
g_object_set_data (G_OBJECT (row), "context", c);
@@ -213,475 +225,50 @@ selected_context_changed (GtkListBox *list, IconBrowserWindow *win)
static void
populate (IconBrowserWindow *win)
{
add_context (win, "volume", "Volume", "Icons related to audio input and output volume");
add_icon (win, "audio-volume-high", "The icon used to indicate high audio volume", "volume");
add_icon (win, "audio-volume-low", "The icon used to indicate low audio volume", "volume");
add_icon (win, "audio-volume-medium", "The icon used to indicate medium audio volume", "volume");
add_icon (win, "audio-volume-muted", "The icon used to indicate the muted state for audio playback", "volume");
add_icon (win, "microphone-sensitivity-high", "The icon used to indicate high microphone sensitivity", "volume");
add_icon (win, "microphone-sensitivity-low", "The icon used to indicate low microphone sensitivity", "volume");
add_icon (win, "microphone-sensitivity-medium", "The icon used to indicate medium microphone sensitivity", "volume");
add_icon (win, "microphone-sensitivity-muted", "The icon used to indicate that a microphone is muted", "volume");
GFile *file;
GKeyFile *kf;
char *data;
gsize length;
char **groups;
int i;
add_context (win, "multimedia", "Multimedia", "Icons related to playback of media");
add_icon (win, "media-playlist-repeat", "The icon for the repeat mode of a media player", "multimedia");
add_icon (win, "media-playlist-repeat-song", "The icon for repeating a song in a media player", "multimedia");
add_icon (win, "media-playlist-shuffle", "The icon for the shuffle mode of a media player", "multimedia");
add_icon (win, "media-playlist-consecutive", "The icon for consecutive mode of a media player", "multimedia");
add_icon (win, "media-skip-backward", "The icon for the skip backward action of a media player", "multimedia");
add_icon (win, "media-seek-backward", "The icon for the seek backward action of a media player", "multimedia");
add_icon (win, "media-playback-start", "The icon for the start playback action of a media player", "multimedia");
add_icon (win, "media-seek-forward", "The icon for the seek forward action of a media player", "multimedia");
add_icon (win, "media-skip-forward", "The icon for the skip forward action of a media player", "multimedia");
add_icon (win, "media-playback-stop", "The icon for the stop action of a media player", "multimedia");
add_icon (win, "media-playback-pause", "The icon for the pause action of a media player", "multimedia");
add_icon (win, "media-eject", "The icon for the eject action of a media player or file manager", "multimedia");
add_icon (win, "media-record", "The icon for the record action of a media application", "multimedia");
add_icon (win, "media-view-subtitles", "The icon used to show subtitles in a media player", "multimedia");
file = g_file_new_for_uri ("resource:/org/gtk/iconbrowser/gtk/icon.list");
g_file_load_contents (file, NULL, &data, &length, NULL, NULL);
add_context (win, "network", "Network", "Icons related to network status");
add_icon (win, "network-transmit-receive", "The icon used data is being both transmitted and received simultaneously, while the computing device is connected to a network", "network");
add_icon (win, "network-transmit", "The icon used when data is being transmitted, while the computing device is connected to a network", "network");
add_icon (win, "network-receive", "The icon used when data is being received, while the computing device is connected to a network", "network");
add_icon (win, "network-idle", "The icon used when no data is being transmitted or received, while the computing device is connected to a network", "network");
add_icon (win, "network-error", "The icon used when an error occurs trying to intialize the network connection of the computing device", "network");
add_icon (win, "network-offline", "The icon used when the computing device is disconnected from the network", "network");
kf = g_key_file_new ();
g_key_file_load_from_data (kf, data, length, G_KEY_FILE_NONE, NULL);
add_context (win, "weather", "Weather", "Icons about weather conditions");
add_icon (win, "weather-clear", "The icon used while the weather for a region is “clear skies”", "weather");
add_icon (win, "weather-clear-night", "The icon used while the weather for a region is “clear skies” during the night", "weather");
add_icon (win, "weather-few-clouds", "The icon used while the weather for a region is “partly cloudy”", "weather");
add_icon (win, "weather-few-clouds-night", "The icon used while the weather for a region is “partly cloudy” during the night", "weather");
add_icon (win, "weather-fog", "The icon used while the weather for a region is “foggy”", "weather");
add_icon (win, "weather-overcast", "The icon used while the weather for a region is “overcast”", "weather");
add_icon (win, "weather-severe-alert", "The icon used while a sever weather alert is in effect for a region", "weather");
add_icon (win, "weather-showers", "The icon used while rain showers are occurring in a region", "weather");
add_icon (win, "weather-showers-scattered", "The icon used while scattered rain showers are occurring in a region", "weather");
add_icon (win, "weather-snow", "The icon used while snow showers are occurring in a region", "weather");
add_icon (win, "weather-storm", "The icon used while storms are occurring in a region", "weather");
groups = g_key_file_get_groups (kf, &length);
for (i = 0; i < length; i++)
{
const char *context;
const char *name;
const char *description;
char **keys;
gsize len;
int j;
add_context (win, "navigation", "Navigation", "Icons for navigation in the user interface of a program");
add_icon (win, "go-first", "The icon for the go to the first item in a list", "navigation");
add_icon (win, "go-previous", "The icon for the go to the previous item in a list", "navigation");
add_icon (win, "go-next", "The icon for the go to the next item in a list", "navigation");
add_icon (win, "go-last", "The icon for the go to the last item in a list", "navigation");
add_icon (win, "go-bottom", "The icon for the go to bottom of a list", "navigation");
add_icon (win, "go-down", "The icon for the go down in a list", "navigation");
add_icon (win, "go-up", "The icon for the go up in a list", "navigation");
add_icon (win, "go-top", "The icon for the go to the top of a list", "navigation");
add_icon (win, "go-home", "The icon for the go to home location", "navigation");
add_icon (win, "go-jump", "The icon for the jump to action", "navigation");
context = groups[i];
name = g_key_file_get_string (kf, context, "Name", NULL);
description = g_key_file_get_string (kf, context, "Description", NULL);
add_context (win, context, name, description);
add_context (win, "editing", "Editing", "Icons related to editing a document");
add_icon (win, "format-indent-less", "The icon for the decrease indent formatting action", "editing");
add_icon (win, "format-indent-more", "The icon for the increase indent formatting action", "editing");
add_icon (win, "format-justify-center", "The icon for the center justification formatting action", "editing");
add_icon (win, "format-justify-fill", "The icon for the fill justification formatting action", "editing");
add_icon (win, "format-justify-left", "The icon for the left justification formatting action", "editing");
add_icon (win, "format-justify-right", "The icon for the right justification action", "editing");
add_icon (win, "format-text-direction-ltr", "The icon for the left-to-right text formatting action", "editing");
add_icon (win, "format-text-direction-rtl", "The icon for the right-to-left formatting action", "editing");
add_icon (win, "format-text-bold", "The icon for the bold text formatting action", "editing");
add_icon (win, "format-text-italic", "The icon for the italic text formatting action", "editing");
add_icon (win, "format-text-underline", "The icon for the underlined text formatting action", "editing");
add_icon (win, "format-text-strikethrough", "The icon for the strikethrough text formatting action", "editing");
add_icon (win, "edit-clear", "The icon for the clear action", "editing");
add_icon (win, "edit-clear-all", "", "editing");
add_icon (win, "edit-copy", "The icon for the copy action", "editing");
add_icon (win, "edit-cut", "The icon for the cut action", "editing");
add_icon (win, "edit-delete", "The icon for the delete action", "editing");
add_icon (win, "edit-find-replace", "The icon for the find and replace action", "editing");
add_icon (win, "edit-paste", "The icon for the paste action", "editing");
add_icon (win, "edit-redo", "The icon for the redo action", "editing");
add_icon (win, "edit-select-all", "The icon for the select all action", "editing");
add_icon (win, "edit-select", "", "editing");
add_icon (win, "edit-undo", "The icon for the undo action", "editing");
add_icon (win, "document-properties", "The icon for the action to view the properties of a document in an application", "editing");
add_icon (win, "document-new", "The icon used for the action to create a new document", "editing");
add_icon (win, "document-open", "The icon used for the action to open a document", "editing");
add_icon (win, "document-open-recent", "The icon used for the action to open a document that was recently opened", "editing");
add_icon (win, "document-save", "The icon for the save action. Should be an arrow pointing down and toward a hard disk", "editing");
add_icon (win, "document-save-as", "The icon for the save as action", "editing");
add_icon (win, "document-send", "The icon for the send action. Should be an arrow pointing up and away from a hard disk", "editing");
add_icon (win, "document-page-setup", "The icon for the page setup action of a document editor", "editing");
add_icon (win, "changes-allow", "", "other");
add_icon (win, "changes-prevent", "", "other");
add_icon (win, "object-flip-horizontal", "The icon for the action to flip an object horizontally", "editing");
add_icon (win, "object-flip-vertical", "The icon for the action to flip an object vertically", "editing");
add_icon (win, "object-rotate-left", "The icon for the rotate left action performed on an object", "editing");
add_icon (win, "object-rotate-right", "The icon for the rotate rigt action performed on an object", "editing");
add_icon (win, "insert-image", "The icon for the insert image action of an application", "editing");
add_icon (win, "insert-link", "The icon for the insert link action of an application", "editing");
add_icon (win, "insert-object", "The icon for the insert object action of an application", "editing");
add_icon (win, "insert-text", "The icon for the insert text action of an application", "editing");
add_icon (win, "accessories-text-editor", "The icon used for the desktop's text editing accessory program", "editing");
keys = g_key_file_get_keys (kf, context, &len, NULL);
for (j = 0; j < len; j++)
{
const char *key = keys[j];
const char *value;
add_context (win, "view", "View Controls", "Icons for view controls in a user interface");
add_icon (win, "view-list", "The icon used for “List“ view mode", "view");
add_icon (win, "view-grid", "The icon used for “Grid“ view mode (as opposed to “List“)", "view");
add_icon (win, "view-fullscreen", "The icon used for the “Fullscreen” item in the application's “View” menu", "view");
add_icon (win, "view-restore", "The icon used by an application for leaving the fullscreen view, and returning to a normal windowed view", "view");
add_icon (win, "zoom-fit-best", "The icon used for the “Best Fit” item in the application's “View” menu", "view");
add_icon (win, "zoom-in", "The icon used for the “Zoom in” item in the application's “View” menu", "view");
add_icon (win, "zoom-out", "The icon used for the “Zoom Out” item in the application's “View” menu ", "view");
add_icon (win, "zoom-original", "The icon used for the “Original Size” item in the application's “View” menu", "view");
add_icon (win, "view-continuous", "The icon used for a continuous view mode", "view");
add_icon (win, "view-paged", "The icon used for a paged view mode (as opposed to continuous)", "view");
add_icon (win, "view-dual", "The icon used for a side-by-side view of paginated content", "view");
add_icon (win, "view-wrapped", "The icon used to indicate a wrap-around to the beginning", "view");
if (strcmp (key, "Name") == 0 || strcmp (key, "Description") == 0)
continue;
add_context (win, "calendar", "Calendar, Tasks and Alarms", "Icons related to calendars, tasks and alarms");
add_icon (win, "task-due", "The icon used when a task is due soon", "calendar");
add_icon (win, "task-past-due", "The icon used when a task that was due, has been left incomplete", "calendar");
add_icon (win, "appointment-soon", "The icon used when an appointment will occur soon", "calendar");
add_icon (win, "appointment-missed", "The icon used when an appointment was missed", "calendar");
add_icon (win, "alarm", "The icon used for alarms when a task or appointment is due", "calendar");
value = g_key_file_get_string (kf, context, key, NULL);
add_context (win, "communication", "Communication", "Icons related email, phone calls, IM and other forms of communication");
add_icon (win, "mail-unread", "The icon used for an electronic mail that is unread", "communication");
add_icon (win, "mail-read", "The icon used for an electronic mail that is read", "communication");
add_icon (win, "mail-replied", "The icon used for an electronic mail that has been replied to", "communication");
add_icon (win, "mail-attachment", "The icon used for an electronic mail that contains attachments", "communication");
add_icon (win, "mail-mark-important", "The icon for the mark as important action of an electronic mail application", "communication");
add_icon (win, "mail-send", "The icon for the send action of an electronic mail application", "communication");
add_icon (win, "mail-send-receive", "The icon for the send and receive action of an electronic mail application", "communication");
add_icon (win, "call-start", "The icon used for initiating or accepting a call", "communication");
add_icon (win, "call-stop", "The icon used for stopping a current call", "communication");
add_icon (win, "call-missed", "The icon used to show a missed call", "communication");
add_icon (win, "user-available", "The icon used when a user on a chat network is available to initiate a conversation with", "communication");
add_icon (win, "user-offline", "The icon used when a user on a chat network is not available", "communication");
add_icon (win, "user-idle", "The icon used when a user on a chat network has not been an active participant in any chats on the network, for an extended period of time", "communication");
add_icon (win, "user-invisible", "The icon used when a user is on a chat network, but is invisible to others", "communication");
add_icon (win, "user-busy", "The icon used when a user is on a chat network, and has marked himself as busy", "communication");
add_icon (win, "user-away", "The icon used when a user on a chat network is away from their keyboard and the chat program", "communication");
add_icon (win, "user-status-pending", "The icon used when the current user status on a chat network is not known", "communication");
add_context (win, "devices", "Devices and Media", "Icons for devices and media");
add_icon (win, "audio-input-microphone", "The icon used for the microphone audio input device", "devices");
add_icon (win, "camera-web", "The fallback icon for web cameras", "devices");
add_icon (win, "camera-photo", "The icon used for a digital still camera devices", "devices");
add_icon (win, "input-keyboard", "The icon used for the keyboard input device", "devices");
add_icon (win, "printer", "The icon used for a printer device", "devices");
add_icon (win, "video-display", "The icon used for the monitor that video gets displayed to", "devices");
add_icon (win, "computer", "The icon used for the computing device as a whole", "devices");
add_icon (win, "media-optical", "The icon used for physical optical media such as CD and DVD", "devices");
add_icon (win, "phone", "The icon used for phone devices which support connectivity to the PC, such as VoIP, cellular, or possibly landline phones", "devices");
add_icon (win, "input-dialpad", "The icon used for dialpad input devices", "devices");
add_icon (win, "input-touchpad", "The icon used for touchpad input devices", "devices");
add_icon (win, "scanner", "The icon used for a scanner device", "devices");
add_icon (win, "audio-card", "The icon used for the audio rendering device", "devices");
add_icon (win, "input-gaming", "The icon used for the gaming input device", "devices");
add_icon (win, "input-mouse", "The icon used for the mousing input device", "devices");
add_icon (win, "multimedia-player", "The icon used for generic multimedia playing devices", "devices");
add_icon (win, "audio-headphones", "The icon used for headphones", "devices");
add_icon (win, "audio-headset", "The icon used for headsets", "devices");
add_icon (win, "display-projector", "The icon used for projectors", "devices");
add_icon (win, "media-removable", "The icon used for generic removable media", "devices");
add_icon (win, "printer-network", "The icon used for printers which are connected via the network", "devices");
add_icon (win, "audio-speakers", "The icon used for speakers", "devices");
add_icon (win, "camera-video", "The fallback icon for video cameras", "devices");
add_icon (win, "drive-optical", "The icon used for optical media drives such as CD and DVD", "devices");
add_icon (win, "drive-removable-media", "The icon used for removable media drives", "devices");
add_icon (win, "input-tablet", "The icon used for graphics tablet input devices", "devices");
add_icon (win, "network-wireless", "The icon used for wireless network connections", "devices");
add_icon (win, "network-wired", "The icon used for wired network connections", "devices");
add_icon (win, "media-floppy", "The icon used for physical floppy disk media", "devices");
add_icon (win, "media-flash", "The fallback icon used for flash media, such as memory stick and SD", "devices");
add_context (win, "contenttypes", "Content Types", "Icons for different types of data, such as audio or image files");
add_icon (win, "application-certificate", "", "contenttypes");
add_icon (win, "application-rss+xml", "", "contenttypes");
add_icon (win, "application-x-appliance", "", "contenttypes");
add_icon (win, "audio-x-generic", "The icon used for generic audio file types", "contenttypes");
add_icon (win, "folder", "The standard folder icon used to represent directories on local filesystems, mail folders, and other hierarchical groups", "contenttypes");
add_icon (win, "text-x-generic", "The icon used for generic text file types", "contenttypes");
add_icon (win, "video-x-generic", "The icon used for generic video file types", "contenttypes");
add_icon (win, "x-office-calendar", "The icon used for generic calendar file types", "contenttypes");
add_context (win, "emotes", "Emotes", "Icons for emotions that are expressed through text chat applications such as :-) or :-P in IRC or instant messengers");
add_icon (win, "face-angel", "The icon used for the 0:-) emote", "emotes");
add_icon (win, "face-angry", "The icon used for the X-( emote", "emotes");
add_icon (win, "face-cool", "The icon used for the B-) emote", "emotes");
add_icon (win, "face-crying", "The icon used for the :'( emote", "emotes");
add_icon (win, "face-devilish", "The icon used for the >:-) emote", "emotes");
add_icon (win, "face-embarrassed", "The icon used for the :-[ emote", "emotes");
add_icon (win, "face-kiss", "The icon used for the :-* emote", "emotes");
add_icon (win, "face-laugh", "The icon used for the :-)) emote", "emotes");
add_icon (win, "face-monkey", "The icon used for the :-(|) emote", "emotes");
add_icon (win, "face-plain", "The icon used for the :-| emote", "emotes");
add_icon (win, "face-raspberry", "The icon used for the :-P emote", "emotes");
add_icon (win, "face-sad", "The icon used for the :-( emote", "emotes");
add_icon (win, "face-shutmouth", "The 'shut mouth' emote", "emotes");
add_icon (win, "face-sick", "The icon used for the :-& emote", "emotes");
add_icon (win, "face-smile", "The icon used for the :-) emote", "emotes");
add_icon (win, "face-smile-big", "The icon used for the :-D emote", "emotes");
add_icon (win, "face-smirk", "The icon used for the :-! emote", "emotes");
add_icon (win, "face-surprise", "The icon used for the :-0 emote", "emotes");
add_icon (win, "face-tired", "The icon used for the |-) emote", "emotes");
add_icon (win, "face-uncertain", "The icon used for the :-/ emote", "emotes");
add_icon (win, "face-wink", "The icon used for the ;-) emote", "emotes");
add_icon (win, "face-worried", "The icon used for the :-S emote", "emotes");
add_icon (win, "face-yawn", "", "emotes");
add_context (win, "general", "General", "Generally useful icons that don't fit in a particular category");
add_icon (win, "edit-find", "The icon for generic search actions", "general");
add_icon (win, "content-loading", "The icon used to indicate that content is loading", "general");
add_icon (win, "open-menu", "The icon used for a menu button in the header bar", "general");
add_icon (win, "view-more", "The icon used for a “View More“ action", "general");
add_icon (win, "tab-new", "The icon used for a “New Tab“ action", "general");
add_icon (win, "bookmark-new", "The icon used for creating a new bookmark", "general");
add_icon (win, "mark-location", "The icon used to mark a location on a map", "general");
add_icon (win, "find-location", "The icon used for a “Search location“ action", "general");
add_icon (win, "send-to", "The icon used for a “Send to“ action", "general");
add_icon (win, "object-select", "The icon used for generic selection actions", "general");
add_icon (win, "window-close", "The icon used for actions that close a view, such as window or tab close button", "general");
add_icon (win, "view-refresh", "The icon used for the “Refresh” item in the application's “View” menu", "general");
add_icon (win, "process-stop", "The icon used for the “Stop” action in applications with actions that may take a while to process, such as web page loading in a browser", "general");
add_icon (win, "action-unavailable", "The icon used to indicate that an action is currently unavailable, such as “Pause“ when no media is playing", "general");
add_icon (win, "document-print", "The icon for the print action of an application", "general");
add_icon (win, "printer-printing", "The icon used while a print job is successfully being spooled to a printing device", "general");
add_icon (win, "printer-warning", "The icon used when a recoverable problem occurs while attempting to printing", "general");
add_icon (win, "printer-error", "The icon used when an error occurs while attempting to print", "general");
add_icon (win, "dialog-information", "The icon used when a dialog is opened to give information to the user that may be pertinent to the requested action", "general");
add_icon (win, "dialog-question", "The icon used when a dialog is opened to ask a simple question of the user", "general");
add_icon (win, "dialog-warning", "The icon used when a dialog is opened to warn the user of impending issues with the requested action", "general");
add_icon (win, "dialog-password", "The icon used when a dialog requesting the authentication credentials for a user is opened", "general");
add_icon (win, "dialog-error", "The icon used when a dialog is opened to explain an error condition to the user", "general");
add_icon (win, "list-add", "The icon for the add to list action", "general");
add_icon (win, "list-remove", "The icon for the remove from list action", "general");
add_icon (win, "non-starred", "The icon used to indicate that an object is not 'starred'", "general");
add_icon (win, "semi-starred", "The icon used to indicate that an object has is 'half-starred'", "general");
add_icon (win, "starred", "The icon used to indicate that an object is 'starred'", "general");
add_icon (win, "star-new", "The used for the “New Star“ action", "general");
add_icon (win, "security-low", "The icon used to indicate that the security level of a connection is presumed to be insecure, either by using weak encryption, or by using a certificate that the could not be automatically verified, and which the user has not chosent to trust", "general");
add_icon (win, "security-medium", "The icon used to indicate that the security level of a connection is presumed to be secure, using strong encryption, and a certificate that could not be automatically verified, but which the user has chosen to trust", "general");
add_icon (win, "security-high", "The icon used to indicate that the security level of a connection is known to be secure, using strong encryption and a valid certificate", "general");
add_icon (win, "user-trash", "The icon for the user's “Trash” place in the file system", "other");
add_icon (win, "user-trash-full", "The icon for the user's “Trash” in the file system, when there are items in the “Trash” waiting for disposal or recovery", "general");
add_icon (win, "emblem-system", "The icon used as an emblem for directories that contain system libraries, settings, and data", "general");
add_icon (win, "avatar-default", "The generic avatar icon, which is used to represent a user that doesn't have a personalized avatar", "general");
add_icon (win, "emblem-synchronizing", "The icon used as an emblem to indicate that a a synchronizing operation is in process", "general");
add_icon (win, "emblem-shared", "The icon used as an emblem for files and directories that are shared to other users", "general");
add_icon (win, "folder-download", "The icon representing the location in the file system where downloaded files are stored", "general");
add_icon (win, "help-browser", "The icon used for the desktop's help browsing application", "general");
add_context (win, "other", "Other", "Icons which have may be too specialized and not of general interest");
add_icon (win, "view-sort-ascending", "The icon used for the “Sort Ascending” item in the application's “View” menu, or in a button for changing the sort method for a list", "other");
add_icon (win, "view-sort-descending", "The icon used for the “Sort Descending” item in the application's “View” menu, or in a button for changing the sort method for a list", "other");
add_icon (win, "document-revert", "The icon for the action of reverting to a previous version of a document", "other");
add_icon (win, "address-book-new", "The icon used for the action to create a new address book", "other");
add_icon (win, "application-exit", "The icon used for exiting an application. Typically this is seen in the application's menus as File->Quit", "other");
add_icon (win, "appointment-new", "The icon used for the action to create a new appointment in a calendaring application", "other");
add_icon (win, "contact-new", "The icon used for the action to create a new contact in an address book application", "other");
add_icon (win, "document-print-preview", "The icon for the print preview action of an application", "other");
add_icon (win, "folder-new", "The icon for creating a new folder", "other");
add_icon (win, "help-about", "The icon for the About item in the Help menu", "other");
add_icon (win, "help-contents", "The icon for Contents item in the Help menu", "other");
add_icon (win, "help-faq", "The icon for the FAQ item in the Help menu", "other");
add_icon (win, "list-remove-all", "", "other");
add_icon (win, "mail-forward", "The icon for the forward action of an electronic mail application", "other");
add_icon (win, "mail-mark-junk", "The icon for the mark as junk action of an electronic mail application", "other");
add_icon (win, "mail-mark-notjunk", "The icon for the mark as not junk action of an electronic mail application", "other");
add_icon (win, "mail-mark-read", "The icon for the mark as read action of an electronic mail application", "other");
add_icon (win, "mail-mark-unread", "The icon for the mark as unread action of an electronic mail application", "other");
add_icon (win, "mail-message-new", "The icon for the compose new mail action of an electronic mail application", "other");
add_icon (win, "mail-reply-all", "The icon for the reply to all action of an electronic mail application", "other");
add_icon (win, "mail-reply-sender", "The icon for the reply to sender action of an electronic mail application", "other");
add_icon (win, "pan-down", "", "other");
add_icon (win, "pan-end", "", "other");
add_icon (win, "pan-start", "", "other");
add_icon (win, "pan-up", "", "other");
add_icon (win, "system-lock-screen", "The icon used for the “Lock Screen” item in the desktop's panel application", "other");
add_icon (win, "system-log-out", "The icon used for the “Log Out” item in the desktop's panel application", "other");
add_icon (win, "system-run", "The icon used for the “Run Application...” item in the desktop's panel application", "other");
add_icon (win, "system-search", "The icon used for the “Search” item in the desktop's panel application", "other");
add_icon (win, "system-reboot", "The icon used for the “Reboot” item in the desktop's panel application", "other");
add_icon (win, "system-shutdown", "The icon used for the “Shutdown” item in the desktop's panel application", "other");
add_icon (win, "tools-check-spelling", "The icon used for the “Check Spelling” item in the application's “Tools” menu", "other");
add_icon (win, "window-maximize", "", "other");
add_icon (win, "window-minimize", "", "other");
add_icon (win, "window-restore", "", "other");
add_icon (win, "window-new", "The icon used for the “New Window” item in the application's “Windows” menu", "other");
add_icon (win, "accessories-calculator", "The icon used for the desktop's calculator accessory program", "other");
add_icon (win, "accessories-character-map", "The icon used for the desktop's international and extended text character accessory program", "other");
add_icon (win, "accessories-dictionary", "The icon used for the desktop's dictionary accessory program", "other");
add_icon (win, "multimedia-volume-control", "The icon used for the desktop's hardware volume control application", "other");
add_icon (win, "preferences-desktop-accessibility", "The icon used for the desktop's accessibility preferences", "other");
add_icon (win, "preferences-desktop-display", "", "other");
add_icon (win, "preferences-desktop-font", "The icon used for the desktop's font preferences", "other");
add_icon (win, "preferences-desktop-keyboard", "The icon used for the desktop's keyboard preferences", "other");
add_icon (win, "preferences-desktop-keyboard-shortcuts", "", "other");
add_icon (win, "preferences-desktop-locale", "The icon used for the desktop's locale preferences", "other");
add_icon (win, "preferences-desktop-remote-desktop", "", "other");
add_icon (win, "preferences-desktop-multimedia", "The icon used for the desktop's multimedia preferences", "other");
add_icon (win, "preferences-desktop-screensaver", "The icon used for the desktop's screen saving preferences", "other");
add_icon (win, "preferences-desktop-theme", "The icon used for the desktop's theme preferences", "other");
add_icon (win, "preferences-desktop-wallpaper", "The icon used for the desktop's wallpaper preferences", "other");
add_icon (win, "preferences-system-privacy", "", "other");
add_icon (win, "preferences-system-windows", "", "other");
add_icon (win, "system-file-manager", "The icon used for the desktop's file management application", "other");
add_icon (win, "system-software-install", "The icon used for the desktop's software installer application", "other");
add_icon (win, "system-software-update", "The icon used for the desktop's software updating application", "other");
add_icon (win, "system-users", "", "other");
add_icon (win, "user-info", "", "other");
add_icon (win, "utilities-system-monitor", "The icon used for the desktop's system resource monitor application", "other");
add_icon (win, "utilities-terminal", "The icon used for the desktop's terminal emulation application. ", "other");
add_icon (win, "application-x-addon", "", "other");
add_icon (win, "application-x-executable", "The icon used for executable file types", "other");
add_icon (win, "font-x-generic", "The icon used for generic font file types", "other");
add_icon (win, "image-x-generic", "The icon used for generic image file types", "other");
add_icon (win, "package-x-generic", "The icon used for generic package file types", "other");
add_icon (win, "text-html", "The icon used for HTML text file types", "other");
add_icon (win, "text-x-generic-template", "The icon used for generic text templates", "other");
add_icon (win, "text-x-preview", "", "other");
add_icon (win, "text-x-script", "The icon used for script file types, such as shell scripts", "other");
add_icon (win, "x-office-address-book", "The icon used for generic address book file types", "other");
add_icon (win, "x-office-document", "The icon used for generic document and letter file types", "other");
add_icon (win, "x-office-document-template", "", "other");
add_icon (win, "x-office-presentation", "The icon used for generic presentation file types", "other");
add_icon (win, "x-office-presentation-template", "", "other");
add_icon (win, "x-office-spreadsheet", "The icon used for generic spreadsheet file types", "other");
add_icon (win, "x-office-spreadsheet-template", "", "other");
add_icon (win, "x-package-repository", "", "other");
add_icon (win, "applications-accessories", "The icon for the “Accessories” sub-menu of the Programs menu", "other");
add_icon (win, "applications-development", "The icon for the “Programming” sub-menu of the Programs menu", "other");
add_icon (win, "applications-engineering", "The icon for the “Engineering” sub-menu of the Programs menu", "other");
add_icon (win, "applications-games", "The icon for the “Games” sub-menu of the Programs menu", "other");
add_icon (win, "applications-graphics", "The icon for the “Graphics” sub-menu of the Programs menu", "other");
add_icon (win, "applications-internet", "The icon for the “Internet” sub-menu of the Programs menu", "other");
add_icon (win, "applications-multimedia", "The icon for the “Multimedia” sub-menu of the Programs menu", "other");
add_icon (win, "applications-office", "The icon for the “Office” sub-menu of the Programs menu", "other");
add_icon (win, "applications-other", "The icon for the “Other” sub-menu of the Programs menu", "other");
add_icon (win, "applications-science", "The icon for the “Science” sub-menu of the Programs menu", "other");
add_icon (win, "applications-system", "The icon for the “System Tools” sub-menu of the Programs menu", "other");
add_icon (win, "applications-utilities", "The icon for the “Utilities” sub-menu of the Programs menu", "other");
add_icon (win, "preferences-desktop", "The icon for the “Desktop Preferences” category", "other");
add_icon (win, "preferences-desktop-peripherals", "The icon for the “Peripherals” sub-category of the “Desktop Preferences” category", "other");
add_icon (win, "preferences-desktop-personal", "The icon for the “Personal” sub-category of the “Desktop Preferences” category", "other");
add_icon (win, "preferences-other", "The icon for the “Other” preferences category", "other");
add_icon (win, "preferences-system", "The icon for the “System Preferences” category", "other");
add_icon (win, "preferences-system-network", "The icon for the “Network” sub-category of the “System Preferences” category", "other");
add_icon (win, "system-help", "The icon for the “Help” system category", "other");
add_icon (win, "battery", "The icon used for the system battery device", "other");
add_icon (win, "computer-apple-ipad", "", "other");
add_icon (win, "colorimeter-colorhug", "", "other");
add_icon (win, "drive-harddisk", "The icon used for hard disk drives", "other");
add_icon (win, "drive-harddisk-ieee1394", "", "other");
add_icon (win, "drive-harddisk-system", "", "other");
add_icon (win, "drive-multidisk", "", "other");
add_icon (win, "media-optical-bd", "", "other");
add_icon (win, "media-optical-cd-audio", "", "other");
add_icon (win, "media-optical-dvd", "", "other");
add_icon (win, "media-tape", "The icon used for generic physical tape media", "other");
add_icon (win, "media-zip", "", "other");
add_icon (win, "modem", "The icon used for modem devices", "other");
add_icon (win, "multimedia-player-apple-ipod-touch", "", "other");
add_icon (win, "network-vpn", "", "other");
add_icon (win, "pda", "This is the fallback icon for Personal Digial Assistant devices. Primary use of this icon is for PDA devices connected to the PC. Connection medium is not an important aspect of the icon. The metaphor for this fallback icon should be a generic PDA device icon", "other");
add_icon (win, "phone-apple-iphone", "", "other");
add_icon (win, "uninterruptible-power-supply", "", "other");
add_icon (win, "emblem-default", "The icon used as an emblem to specify the default selection of a printer for example", "other");
add_icon (win, "emblem-documents", "The icon used as an emblem for the directory where a user's documents are stored", "other");
add_icon (win, "emblem-downloads", "The icon used as an emblem for the directory where a user's downloads from the internet are stored", "other");
add_icon (win, "emblem-favorite", "The icon used as an emblem for files and directories that the user marks as favorites", "other");
add_icon (win, "emblem-generic", "", "other");
add_icon (win, "emblem-important", "The icon used as an emblem for files and directories that are marked as important by the user", "other");
add_icon (win, "emblem-mail", "The icon used as an emblem to specify the directory where the user's electronic mail is stored", "other");
add_icon (win, "emblem-new", "", "other");
add_icon (win, "emblem-ok", "", "other");
add_icon (win, "emblem-package", "", "other");
add_icon (win, "emblem-photos", "The icon used as an emblem to specify the directory where the user stores photographs", "other");
add_icon (win, "emblem-readonly", "The icon used as an emblem for files and directories which can not be written to by the user", "other");
add_icon (win, "emblem-symbolic-link", "The icon used as an emblem for files and direcotires that are links to other files or directories on the filesystem", "other");
add_icon (win, "emblem-synchronized", "The icon used as an emblem for files or directories that are configured to be synchronized to another device", "other");
add_icon (win, "emblem-unreadable", "The icon used as an emblem for files and directories that are inaccessible. ", "other");
add_icon (win, "emblem-urgent", "", "other");
add_icon (win, "emblem-videos", "", "other");
add_icon (win, "emblem-web", "", "other");
add_icon (win, "folder-documents", "", "other");
add_icon (win, "folder-download", "", "other");
add_icon (win, "folder-music", "", "other");
add_icon (win, "folder-pictures", "", "other");
add_icon (win, "folder-documents", "", "other");
add_icon (win, "folder-publicshare", "", "other");
add_icon (win, "folder-remote", "The icon used for normal directories on a remote filesystem", "other");
add_icon (win, "folder-saved-search", "", "other");
add_icon (win, "folder-templates", "", "other");
add_icon (win, "folder-videos", "", "other");
add_icon (win, "network-server", "The icon used for individual host machines under the “Network Servers” place in the file manager", "other");
add_icon (win, "network-workgroup", "The icon for the “Network Servers” place in the desktop's file manager, and workgroups within the network", "other");
add_icon (win, "start-here", "The icon used by the desktop's main menu for accessing places, applications, and other features", "other");
add_icon (win, "user-bookmarks", "The icon for the user's special “Bookmarks” place", "other");
add_icon (win, "user-desktop", "The icon for the special “Desktop” directory of the user", "other");
add_icon (win, "user-home", "The icon for the special “Home” directory of the user", "other");
add_icon (win, "airplane-mode", "", "other");
add_icon (win, "battery-caution-charging", "", "other");
add_icon (win, "battery-caution", "The icon used when the battery is below 40%", "other");
add_icon (win, "battery-empty-charging", "", "other");
add_icon (win, "battery-empty", "", "other");
add_icon (win, "battery-full-charged", "", "other");
add_icon (win, "battery-full-charging", "", "other");
add_icon (win, "battery-full", "", "other");
add_icon (win, "battery-good-charging", "", "other");
add_icon (win, "battery-good", "", "other");
add_icon (win, "battery-low-charging", "", "other");
add_icon (win, "battery-low", "The icon used when the battery is below 20%", "other");
add_icon (win, "battery-missing", "", "other");
add_icon (win, "bluetooth-active", "", "other");
add_icon (win, "bluetooth-disabled", "", "other");
add_icon (win, "channel-insecure", "", "other");
add_icon (win, "channel-secure", "", "other");
add_icon (win, "computer-fail", "", "other");
add_icon (win, "display-brightness", "", "other");
add_icon (win, "keyboard-brightness", "", "other");
add_icon (win, "folder-drag-accept", "The icon used for a folder while an object is being dragged onto it, that is of a type that the directory can contain", "other");
add_icon (win, "folder-open", "The icon used for folders, while their contents are being displayed within the same window. This icon would normally be shown in a tree or list view, next to the main view of a folder's contents", "other");
add_icon (win, "folder-visiting", "The icon used for folders, while their contents are being displayed in another window. This icon would typically be used when using multiple windows to navigate the hierarchy, such as in Nautilus's spatial mode", "other");
add_icon (win, "image-loading", "The icon used when another image is being loaded, such as thumnails for larger images in the file manager", "other");
add_icon (win, "image-missing", "The icon used when another image could not be loaded", "other");
add_icon (win, "mail-signed", "The icon used for an electronic mail that contains a signature", "other");
add_icon (win, "mail-signed-verified", "The icon used for an electronic mail that contains a signature which has also been verified by the security system", "other");
add_icon (win, "network-cellular-3g", "", "other");
add_icon (win, "network-cellular-4g", "", "other");
add_icon (win, "network-cellular-edge", "", "other");
add_icon (win, "network-cellular-gprs", "", "other");
add_icon (win, "network-cellular-umts", "", "other");
add_icon (win, "network-cellular-acquiring", "", "other");
add_icon (win, "network-cellular-connected", "", "other");
add_icon (win, "network-cellular-no-route", "", "other");
add_icon (win, "network-cellular-offline", "", "other");
add_icon (win, "network-cellular-signal-excellent", "", "other");
add_icon (win, "network-cellular-signal-good", "", "other");
add_icon (win, "network-cellular-signal-ok", "", "other");
add_icon (win, "network-cellular-signal-weak", "", "other");
add_icon (win, "network-cellular-signal-none", "", "other");
add_icon (win, "network-vpn-acquiring", "", "other");
add_icon (win, "network-vpn", "", "other");
add_icon (win, "network-wired-acquiring", "", "other");
add_icon (win, "network-wired-disconnected", "", "other");
add_icon (win, "network-wired-no-route", "", "other");
add_icon (win, "network-wired-offline", "", "other");
add_icon (win, "network-wireless-acquiring", "", "other");
add_icon (win, "network-wireless-connected", "", "other");
add_icon (win, "network-wireless-encrypted", "", "other");
add_icon (win, "network-wireless-hotspot", "", "other");
add_icon (win, "network-wireless-no-route", "", "other");
add_icon (win, "network-wireless-offline", "", "other");
add_icon (win, "network-wireless-signal-excellent", "", "other");
add_icon (win, "network-wireless-signal-good", "", "other");
add_icon (win, "network-wireless-signal-ok", "", "other");
add_icon (win, "network-wireless-signal-weak", "", "other");
add_icon (win, "network-wireless-signal-none", "", "other");
add_icon (win, "rotation-allowed", "", "other");
add_icon (win, "rotation-locked", "", "other");
add_icon (win, "software-update-available", "The icon used when an update is available for software installed on the computing device, through the system software update program", "other");
add_icon (win, "software-update-urgent", "The icon used when an urgent update is available through the system software update program", "other");
add_icon (win, "sync-error", "The icon used when an error occurs while attempting to synchronize data from the computing device, to another device", "other");
add_icon (win, "sync-synchronizing", "The icon used while data is successfully synchronizing to another device", "other");
add_icon (win, "touchpad-disabled", "", "other");
add_icon (win, "trophy-bronze", "", "other");
add_icon (win, "trophy-silver", "", "other");
add_icon (win, "trophy-gold", "", "other");
add_icon (win, key, value, context);
}
g_strfreev (keys);
}
g_strfreev (groups);
}
static gboolean
@@ -694,6 +281,16 @@ key_press_event_cb (GtkWidget *widget,
return gtk_search_bar_handle_event (GTK_SEARCH_BAR (win->searchbar), event);
}
static void
copy_to_clipboard (GtkButton *button,
IconBrowserWindow *win)
{
GtkClipboard *clipboard;
clipboard = gtk_clipboard_get_default (gdk_display_get_default ());
gtk_clipboard_set_text (clipboard, gtk_window_get_title (GTK_WINDOW (win->details)), -1);
}
static gboolean
icon_visible_func (GtkTreeModel *model,
GtkTreeIter *iter,
@@ -748,7 +345,7 @@ symbolic_toggled (GtkToggleButton *toggle, IconBrowserWindow *win)
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (win->list), win->cell, "icon-name", column, NULL);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (win->list), win->text_cell, "text", column, NULL);
gtk_tree_model_filter_refilter (win->filter_model);
gtk_widget_queue_draw (win->list);
}
@@ -786,12 +383,9 @@ get_image_data (GtkWidget *widget,
static void
setup_image_dnd (GtkWidget *image)
{
GtkWidget *parent;
parent = gtk_widget_get_parent (image);
gtk_drag_source_set (parent, GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (parent);
g_signal_connect (parent, "drag-data-get", G_CALLBACK (get_image_data), NULL);
gtk_drag_source_set (image, GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
gtk_drag_source_add_image_targets (image);
g_signal_connect (image, "drag-data-get", G_CALLBACK (get_image_data), NULL);
}
static void
@@ -821,7 +415,7 @@ icon_browser_window_init (IconBrowserWindow *win)
setup_image_dnd (win->image4);
setup_image_dnd (win->image5);
win->contexts = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free);
win->contexts = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, context_free);
gtk_tree_model_filter_set_visible_func (win->filter_model, icon_visible_func, win, NULL);
gtk_window_set_transient_for (GTK_WINDOW (win->details), GTK_WINDOW (win));
@@ -866,6 +460,7 @@ icon_browser_window_class_init (IconBrowserWindowClass *class)
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), selected_context_changed);
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), symbolic_toggled);
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), key_press_event_cb);
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), copy_to_clipboard);
}
IconBrowserWindow *

View File

@@ -0,0 +1,19 @@
iconbrowser_sources = [
'main.c',
'iconbrowserapp.c',
'iconbrowserwin.c',
'iconstore.c'
]
iconbrowser_resources = gnome.compile_resources('iconbrowser_resources',
'iconbrowser.gresource.xml',
source_dir: '.')
executable('gtk4-icon-browser',
iconbrowser_sources, iconbrowser_resources,
dependencies: libgtk_dep,
include_directories: confinc,
gui_app: true,
install: true)
install_data('gtk4-icon-browser.desktop', install_dir: gtk_applicationsdir)

View File

@@ -110,7 +110,7 @@
<object class="GtkCellRendererPixbuf" id="cell">
<property name="xpad">10</property>
<property name="ypad">10</property>
<property name="stock-size">5</property>
<property name="stock-size">6</property>
</object>
</child>
<child>
@@ -151,15 +151,10 @@
<property name="row-spacing">18</property>
<property name="column-spacing">18</property>
<child>
<object class="GtkEventBox">
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
</child>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
<packing>
<property name="left-attach">0</property>
@@ -167,15 +162,10 @@
</packing>
</child>
<child>
<object class="GtkEventBox">
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<child>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
</child>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
<packing>
<property name="left-attach">1</property>
@@ -183,15 +173,10 @@
</packing>
</child>
<child>
<object class="GtkEventBox">
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<child>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
</child>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
<packing>
<property name="left-attach">2</property>
@@ -199,15 +184,10 @@
</packing>
</child>
<child>
<object class="GtkEventBox">
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<child>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
</child>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
<packing>
<property name="left-attach">3</property>
@@ -215,15 +195,10 @@
</packing>
</child>
<child>
<object class="GtkEventBox">
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<child>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
</child>
<property name="halign">center</property>
<property name="valign">end</property>
</object>
<packing>
<property name="left-attach">4</property>
@@ -320,6 +295,21 @@
<property name="width">5</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="label" translatable="yes">Copy to Clipboard</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="margin">20</property>
<signal name="clicked" handler="copy_to_clipboard"/>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">4</property>
<property name="width">5</property>
</packing>
</child>
</object>
</child>
</object>

3
demos/meson.build Normal file
View File

@@ -0,0 +1,3 @@
subdir('gtk-demo')
subdir('icon-browser')
subdir('widget-factory')

View File

@@ -1,71 +0,0 @@
include $(top_srcdir)/Makefile.decl
bin_PROGRAMS = gtk4-widget-factory
desktopdir = $(datadir)/applications
dist_desktop_DATA = gtk4-widget-factory.desktop
gtk4_widget_factory_SOURCES = \
widget-factory.c \
widget_factory_resources.c
BUILT_SOURCES = \
widget_factory_resources.c
gtk4_widget_factory_DEPENDENCIES = \
$(top_builddir)/gtk/libgtk-4.la
gtk4_widget_factory_CPPFLAGS = \
-I$(top_srcdir) \
$(GTK_DEBUG_FLAGS) \
$(GTK_DEP_CFLAGS) \
$(NULL)
gtk4_widget_factory_LDADD = \
$(top_builddir)/gtk/libgtk-4.la \
$(GTK_DEP_LIBS) \
$(NULL)
widget_factory_resources.c: widget-factory.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/widget-factory.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $<
iconthemedir = $(datadir)/icons/hicolor
appsicon16dir = $(iconthemedir)/16x16/apps
appsicon22dir = $(iconthemedir)/22x22/apps
appsicon24dir = $(iconthemedir)/24x24/apps
appsicon32dir = $(iconthemedir)/32x32/apps
appsicon48dir = $(iconthemedir)/48x48/apps
appsicon256dir = $(iconthemedir)/256x256/apps
dist_appsicon16_DATA = data/16x16/gtk4-widget-factory.png data/16x16/gtk4-widget-factory-symbolic.symbolic.png
dist_appsicon22_DATA = data/22x22/gtk4-widget-factory.png data/22x22/gtk4-widget-factory-symbolic.symbolic.png
dist_appsicon24_DATA = data/24x24/gtk4-widget-factory.png data/24x24/gtk4-widget-factory-symbolic.symbolic.png
dist_appsicon32_DATA = data/32x32/gtk4-widget-factory.png data/32x32/gtk4-widget-factory-symbolic.symbolic.png
dist_appsicon48_DATA = data/48x48/gtk4-widget-factory.png data/48x48/gtk4-widget-factory-symbolic.symbolic.png
dist_appsicon256_DATA = data/256x256/gtk4-widget-factory.png data/256x256/gtk4-widget-factory-symbolic.symbolic.png
update_icon_cache = $(top_builddir)/gtk/gtk4-update-icon-cache$(EXEEXT) --ignore-theme-index --force
install-data-hook: install-update-icon-cache
uninstall-hook: uninstall-update-icon-cache
install-update-icon-cache:
$(AM_V_at)$(POST_INSTALL)
test -n "$(DESTDIR)" || $(update_icon_cache) "$(iconthemedir)"
uninstall-update-icon-cache:
$(AM_V_at)$(POST_UNINSTALL)
test -n "$(DESTDIR)" || $(update_icon_cache) "$(iconthemedir)"
EXTRA_DIST += \
widget-factory.ui \
widget-factory.css \
menus.ui \
help-overlay.ui \
widget-factory.gresource.xml \
data/source.svg \
data/symbolic-source.svg
-include $(top_srcdir)/git.mk

View File

@@ -0,0 +1,26 @@
# demos/widget-factory
widgetfactory_resources = gnome.compile_resources('widgetfactory_resources',
'widget-factory.gresource.xml',
source_dir: '.')
executable('gtk4-widget-factory',
'widget-factory.c', widgetfactory_resources,
dependencies: libgtk_dep,
include_directories: confinc,
gui_app: true,
install: true)
# desktop file
install_data('gtk4-widget-factory.desktop', install_dir: gtk_applicationsdir)
# icons
icontheme_dir = join_paths(gtk_datadir, 'icons/hicolor')
foreach icon_size : ['16x16', '22x22', '24x24', '32x32', '48x48', '256x256', ]
icons_dir = join_paths(icontheme_dir, '@0@/apps'.format(icon_size))
install_data('data/@0@/gtk4-widget-factory.png'.format(icon_size),
install_dir: icons_dir)
install_data('data/@0@/gtk4-widget-factory-symbolic.symbolic.png'.format(icon_size),
install_dir: icons_dir)
endforeach

View File

@@ -800,10 +800,11 @@ overshot (GtkScrolledWindow *sw, GtkPositionType pos, GtkWidget *widget)
"use-markup", TRUE,
"halign", GTK_ALIGN_START,
"valign", GTK_ALIGN_CENTER,
"hexpand", TRUE,
"margin", 6,
"xalign", 0.0,
NULL);
gtk_box_pack_start (GTK_BOX (row), label, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (row), label);
gdk_rgba_parse (&rgba, color);
swatch = g_object_new (g_type_from_name ("GtkColorSwatch"),
"rgba", &rgba,
@@ -815,7 +816,7 @@ overshot (GtkScrolledWindow *sw, GtkPositionType pos, GtkWidget *widget)
NULL);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add (GTK_CONTAINER (box), swatch);
gtk_box_pack_start (GTK_BOX (row), box, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (row), box);
gtk_list_box_insert (GTK_LIST_BOX (widget), row, -1);
row = gtk_widget_get_parent (row);
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
@@ -911,9 +912,10 @@ populate_colors (GtkWidget *widget, GtkWidget *chooser)
"halign", GTK_ALIGN_START,
"valign", GTK_ALIGN_CENTER,
"margin", 6,
"hexpand", TRUE,
"xalign", 0.0,
NULL);
gtk_box_pack_start (GTK_BOX (row), label, TRUE, TRUE);
gtk_box_pack_start (GTK_BOX (row), label);
gdk_rgba_parse (&rgba, colors[i].color);
swatch = g_object_new (g_type_from_name ("GtkColorSwatch"),
"rgba", &rgba,
@@ -925,7 +927,7 @@ populate_colors (GtkWidget *widget, GtkWidget *chooser)
NULL);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add (GTK_CONTAINER (box), swatch);
gtk_box_pack_start (GTK_BOX (row), box, FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (row), box);
gtk_list_box_insert (GTK_LIST_BOX (widget), row, -1);
row = gtk_widget_get_parent (row);
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);

View File

@@ -450,9 +450,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<item>Jet McQuack</item>
</items>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="comboboxtext2">
@@ -466,7 +463,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="fill">0</property>
<property name="position">1</property>
</packing>
</child>
@@ -476,10 +472,10 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="invisible_char">•</property>
<property name="placeholder-text" translatable="yes">Click icon to change mode</property>
<property name="secondary_icon_name">view-refresh-symbolic</property>
<property name="secondary_icon_tooltip_text">Change mode</property>
<signal name="icon-release" handler="on_entry_icon_release" swapped="no"/>
</object>
<packing>
<property name="fill">0</property>
<property name="position">2</property>
</packing>
</child>
@@ -491,12 +487,12 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="text" translatable="yes">entry</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box223">
<property name="hexpand">0</property>
<style>
<class name="linked"/>
</style>
@@ -505,10 +501,8 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="can_focus">1</property>
<property name="invisible_char">•</property>
<property name="text" translatable="yes">entry</property>
<property name="hexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button224">
@@ -516,7 +510,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="icon-name">window-close-symbolic</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">1</property>
</packing>
</child>
@@ -527,6 +520,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
<child>
<object class="GtkBox">
<property name="hexpand">0</property>
<style>
<class name="linked"/>
</style>
@@ -534,6 +528,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<object class="GtkComboBox">
<property name="model">lrmodel</property>
<property name="active">0</property>
<property name="hexpand">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -541,14 +536,12 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</attributes>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox">
<property name="model">lrmodel</property>
<property name="active">1</property>
<property name="hexpand">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -556,14 +549,12 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</attributes>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox">
<property name="model">lrmodel</property>
<property name="active">2</property>
<property name="hexpand">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@@ -571,9 +562,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</attributes>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
</object>
</child>
@@ -597,33 +585,26 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<child>
<object class="GtkSpinButton" id="spinbutton1">
<property name="can_focus">1</property>
<property name="invisible_char">•</property>
<property name="width-chars">2</property>
<property name="max-width-chars">2</property>
<property name="adjustment">adjustment2</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="spinbutton2">
<object class="GtkSpinButton" id="spinbutton2">
<property name="can_focus">1</property>
<property name="invisible_char">•</property>
<property name="sensitive">0</property>
<property name="width-chars">2</property>
<property name="max-width-chars">2</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid1">
@@ -809,14 +790,8 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator1">
@@ -836,9 +811,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="can_focus">1</property>
<property name="receives_default">1</property>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkToggleButton" id="togglebutton2">
@@ -848,7 +820,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="receives_default">1</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">1</property>
</packing>
</child>
@@ -860,7 +831,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="active">1</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">2</property>
</packing>
</child>
@@ -873,7 +843,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="active">1</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">3</property>
</packing>
</child>
@@ -905,7 +874,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="fill">0</property>
<property name="position">6</property>
</packing>
</child>
@@ -915,7 +883,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="receives_default">1</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">6</property>
</packing>
</child>
@@ -970,7 +937,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="fill">0</property>
<property name="position">2</property>
</packing>
</child>
@@ -986,17 +952,15 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<object class="GtkBox" id="box20">
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<property name="hexpand">1</property>
<child>
<object class="GtkBox" id="box21">
<object class="GtkBox" id="box21">
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkProgressBar" id="progressbar1">
<property name="fraction">0.5</property>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="progressbar2">
@@ -1004,7 +968,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="inverted">1</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">1</property>
</packing>
</child>
@@ -1014,7 +977,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="show_text">1</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">2</property>
</packing>
</child>
@@ -1042,9 +1004,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box27">
@@ -1076,13 +1035,9 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
<property name="position">1</property>
</packing>
</child>
@@ -1113,10 +1068,12 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<object class="GtkBox" id="box28">
<property name="vexpand">1</property>
<property name="spacing">6</property>
<property name="homogeneous">1</property>
<child>
<object class="GtkProgressBar" id="progressbar5">
<property name="orientation">vertical</property>
<property name="fraction">0.5</property>
<property name="halign">end</property>
</object>
</child>
<child>
@@ -1124,20 +1081,19 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="orientation">vertical</property>
<property name="fraction">0.5</property>
<property name="inverted">1</property>
<property name="halign">start</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box23">
<property name="vexpand">1</property>
<property name="spacing">6</property>
<property name="homogeneous">1</property>
<child>
<object class="GtkScale" id="scale3">
<property name="height_request">100</property>
@@ -1148,6 +1104,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="fill_level">75</property>
<property name="draw_value">1</property>
<property name="digits">-1</property>
<property name="halign">end</property>
<signal name="format-value" handler="scale_format_value"/>
</object>
</child>
@@ -1162,6 +1119,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="fill_level">75</property>
<property name="draw_value">1</property>
<property name="digits">-1</property>
<property name="halign">start</property>
<signal name="format-value" handler="scale_format_value_blank"/>
</object>
<packing>
@@ -1170,13 +1128,11 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="fill">0</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">3</property>
</packing>
</child>
@@ -1198,6 +1154,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<property name="orientation">vertical</property>
<property name="homogeneous">1</property>
<property name="spacing">6</property>
<property name="hexpand">1</property>
<child>
<object class="GtkFrame" id="frame1">
<property name="shadow_type">in</property>
@@ -1208,9 +1165,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</object>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame2">
@@ -1223,7 +1177,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">1</property>
</packing>
</child>
@@ -1237,7 +1190,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">2</property>
</packing>
</child>
@@ -1252,13 +1204,11 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">6</property>
</packing>
</child>
@@ -1274,12 +1224,14 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
<object class="GtkBox" id="box4">
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<property name="hexpand">1</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="width_request">150</property>
<property name="can_focus">1</property>
<property name="vscrollbar_policy">always</property>
<property name="shadow_type">in</property>
<property name="vexpand">1</property>
<child>
<object class="GtkTreeView" id="treeview1">
<property name="can_focus">1</property>
@@ -1350,14 +1302,12 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</object>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow2">
<property name="can_focus">1</property>
<property name="shadow_type">in</property>
<property name="vexpand">1</property>
<child>
<object class="GtkTextView" id="textview1">
<property name="can_focus">1</property>
@@ -1370,13 +1320,11 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">8</property>
</packing>
</child>
@@ -1618,7 +1566,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">4</property>
</packing>
</child>
@@ -1810,9 +1757,15 @@ microphone-sensitivity-medium-symbolic</property>
<property name="shadow-type">in</property>
<property name="hscrollbar-policy">never</property>
<property name="min-content-height">200</property>
<property name="hexpand">0</property>
<child>
<object class="GtkListBox" id="listbox">
<property name="selection-mode">none</property>
<child type="placeholder">
<object class="GtkLabel">
<property name="label">No rows found</property>
</object>
</child>
<child>
<object class="GtkListBoxRow" id="listboxrow1">
<property name="activatable">0</property>
@@ -1825,10 +1778,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="margin">6</property>
<property name="hexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="listboxrow1switch">
@@ -1855,10 +1806,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="margin">6</property>
<property name="hexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkScale">
@@ -1887,10 +1836,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="margin">6</property>
<property name="hexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="listboxrow3image">
@@ -1919,10 +1866,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="margin">6</property>
<property name="hexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkImage">
@@ -1952,10 +1897,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="margin">6</property>
<property name="hexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="listboxrow5button">
@@ -1983,10 +1926,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="margin">6</property>
<property name="hexpand">1</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
@@ -2346,7 +2287,7 @@ microphone-sensitivity-medium-symbolic</property>
</child>
<child>
<object class="GtkStatusbar" id="statusbar">
<property name="visible">0</property>
<property name="visible">1</property>
</object>
</child>
</object>
@@ -2411,9 +2352,6 @@ microphone-sensitivity-medium-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
</object>
</child>
@@ -2556,6 +2494,7 @@ microphone-sensitivity-medium-symbolic</property>
<property name="height-request">300</property>
<property name="halign">start</property>
<property name="shadow-type">in</property>
<property name="hexpand">0</property>
<child>
<object class="GtkTreeView" id="charletree">
<property name="enable-grid-lines">vertical</property>
@@ -2627,6 +2566,7 @@ microphone-sensitivity-medium-symbolic</property>
<object class="GtkListBox" id="munsell">
<property name="selection-mode">multiple</property>
<property name="activate-on-single-click">0</property>
<property name="hexpand">0</property>
</object>
</child>
</object>
@@ -2946,6 +2886,7 @@ microphone-sensitivity-medium-symbolic</property>
<object class="GtkFrame">
<child>
<object class="GtkBox">
<property name="hexpand">0</property>
<child>
<object class="GtkToolbar">
<property name="orientation">vertical</property>
@@ -2975,14 +2916,12 @@ microphone-sensitivity-medium-symbolic</property>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="hexpand">1</property>
<child>
<object class="GtkTextView" id="tooltextview">
</object>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
@@ -3020,9 +2959,6 @@ microphone-sensitivity-medium-symbolic</property>
<property name="valign">end</property>
<property name="icon-name">edit-delete-symbolic</property>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
</object>
</child>
@@ -3109,9 +3045,11 @@ microphone-sensitivity-medium-symbolic</property>
</child>
<child type="tab">
<object class="GtkBox">
<child type="center">
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Page 1</property>
<property name="halign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
@@ -3140,9 +3078,11 @@ microphone-sensitivity-medium-symbolic</property>
</child>
<child type="tab">
<object class="GtkBox">
<child type="center">
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Page 2</property>
<property name="halign">center</property>
<property name="hexpand">1</property>
</object>
</child>
<child>
@@ -3208,6 +3148,7 @@ microphone-sensitivity-medium-symbolic</property>
<child>
<object class="GtkEntry">
<property name="can_focus">1</property>
<property name="show_emoji_icon">1</property>
<property name="placeholder_text" translatable="yes">Age…</property>
</object>
<packing>
@@ -3232,9 +3173,9 @@ microphone-sensitivity-medium-symbolic</property>
<property name="valign">center</property>
<property name="popover">notebook_info_popover</property>
<property name="icon-name">emblem-important-symbolic</property>
<property name="relief">none</property>
<style>
<class name="circular"/>
<class name="flat"/>
</style>
</object>
</child>

View File

@@ -1,20 +0,0 @@
## Process this file with automake to produce Makefile.in
include $(top_srcdir)/Makefile.decl
SUBDIRS = reference tools
EXTRA_DIST += \
CODING-STYLE \
developers.txt \
dnd_internals.txt \
focus_tracking.txt \
RELEASE-HOWTO \
sizing-test.txt \
styles.txt \
text_widget_internals.txt \
tree-column-sizing.png \
tree-column-sizing.txt \
widget_geometry.txt \
widget_system.txt
-include $(top_srcdir)/git.mk

View File

@@ -1,108 +0,0 @@
How to do a GTK+ release?
=========================
Make sure you have suitable versions of autoconf and libtool.
Also make sure you have the following packages installed with all their
dependencies:
* gtk-doc
* docbook-utils
Without those packages make distcheck will *not* pass.
Make sure that gtk-doc is the latest released version.
0) Go back to a pristine working directory. With git, this works:
git clean -f -x
1) autogen and build it, make sure to enable docs by specifying
--enable-gtk-doc --enable-man
2) Update NEWS based on the content of git log; follow the format
of prior entries. This includes finding noteworthy new features,
collecting summaries for all the fixed bugs that are referenced
and collecting all updated translations.
Also collect the names of all contributors that are mentioned.
We don't discriminate between bug reporters, patch writers,
committers, etc. Anybody who is mentioned in ChangeLog gets
credits, but only real names, not email addresses or nicknames.
3) Update the pot files and commit the changes:
make -C po gtk40.pot
make -C po-properties gtk40-properties.pot
4) In particular, if this is a major, stable, release, verify that
README.in contains the relevant release notes and that the
required versions of dependencies in INSTALL.in are in sync
with configure.ac.
5) Verify that the version in configure.ac has been bumped after the last
release. (Note that this is critical, a slip-up here will cause the
soname to change).
6) Make sure that make check is happy (If you don't do it here, make distcheck
will also catch it, but it is kind of disheartening to see make distcheck
fail due to an extraneous symbol after watching it build the docs for an
hour...).
Typical problems to expect here (depending on whether this is a devel
snapshot or a stable release):
* forgotten source files
* new symbols missing from .symbols files
* symbols that are exported by should be private (static or _-prefixed)
* symbols that cause PLT entries. This is either caused by using a function
in the same library function without including the header or by using a
function from a different library, which is not yet allowed by the filter
in pltcheck.sh
7) If this is a devel release, make sure that the docs for new symbols
are in good shape. Look at the -unused.txt files and add stuff found
there to the corresponding -sections.txt file. Look at the
-undocumented.txt files and see if there is anything in there that
should be documented. If it is, this may be due to typos in the doc
comments in the source. Make sure that all new symbols have proper
Since: tags, and that there is an index in the main -docs.sgml for
the next stable version.
8) make distcheck
9) Fix broken stuff found by 8), commit changes: git commit -a, repeat.
10) Once distcheck succeeds, verify that the tree is clean: git diff should
come up empty.
10) Now you've got the tarball. Check that the tarball size looks
reasonable compared to previous releases. If the size goes down
a lot, likely the docs went missing for some reason. Or the translations.
If the size goes up by a lot, something else may be wrong.
11) Tag the release. The git command for doing that looks like
git tag -m "GTK+ 2.12.10" 2.12.10
12) Push the tagged commit upstream. The git command for doing that is
git push origin refs/tags/2.12.10
13) Bump the version number in configure.ac and commit and push this change
14) Upload the tarball to master.gnome.org and run install-module to transfer
it to download.gnome.org. If you don't have an account on master.gnome.org,
find someone who can do it for you. The command for this looks like
scp gtk+-2.12.10.tar.xz matthiasc@master.gnome.org:
ssh matthiasc@master.gnome.org ftpadmin install gtk+-2.12.10.tar.xz
15) Upload the tarball and checksum to ftp.gtk.org and put them in the right
directory below /ftp/pub. Pay attention to correct ownership, and don't
forget to update the LATEST file in the directory.
16) Go to the gnome-announce list archives, find the last announce message,
create a new message in the same form, replacing version numbers,
commentary at the top about "what this release is about" and the
summary of changes.
17) Send it to gnome-announce-list, gtk-list, gtk-app-devel-list and
gtk-devel-list. Set reply-to to desktop-devel-list.
18) Add a link to the release announcement to www.gtk.org which lives
in the gtk-web git module.

126
docs/RELEASE-HOWTO.md Normal file
View File

@@ -0,0 +1,126 @@
How to do a GTK+ release?
=========================
## Before we begin
Make sure you have suitable versions of Meson and Ninja.
Also make sure you have the following packages installed with all their
dependencies:
* gtk-doc
* docbook-utils
Without those packages make distcheck will *not* pass.
Make sure that gtk-doc is the latest released version.
## Release check list
0. Save all your work, then move to the branch from which you want
to release. Go back to a pristine working directory. With Git,
this works:
```sh
$ git clean -dfx
```
1. Build using the common sequence:
```sh
$ meson _build .
$ ninja -C _build
```
2. Update NEWS based on the content of git log; follow the format of prior
entries. This includes finding noteworthy new features, collecting
summaries for all the fixed bugs that are referenced and collecting all
updated translations. Also collect the names of all contributors that
are mentioned. We don't discriminate between bug reporters, patch
writers, committers, etc. Anybody who is mentioned in the commit log
gets a credit, but only real names, not email addresses or nicknames.
3. Update the pot files and commit the changes:
```sh
$ ninja -C _build gtk40-pot
$ ninja -C _build gtk40-properties-pot
```
4. If this is a major, stable, release, verify that the release notes
in the API reference contain the relevant items.
5. Verify that the version in `meson.build` has been bumped after the last
release. **Note**: this is critical, a slip-up here will cause the soname
to change.
6. Make sure that `meson test` is happy (`ninja dist` will also run the test
suite, but it's better to catch issues before committing and tagging
the release). Typical problems to expect here (depending on whether this
is a devel snapshot or a stable release):
* forgotten source files
* new symbols missing the `GDK_AVAILABLE_IN_` annotation
* wrong introspection annotations
* missing documentation
7. If this is a devel release, make sure that the docs for new symbols are
in good shape. Look at the -unused.txt files and add stuff found there
to the corresponding `-sections.txt` file. Look at the `-undocumented.txt`
files and see if there is anything in there that should be documented.
If it is, this may be due to typos in the doc comments in the source.
Make sure that all new symbols have proper Since: tags, and that there
is an index in the main `-docs.xml` for the next stable version.
8. Run `ninja dist` to generate the tarball.
9. Fix broken stuff found by 8), commit changes, repeat.
10. Once `dist` succeeds, verify that the tree is clean and all the changes
needed to make the release have been committed: `git diff` should come
up empty. The last commit must be the commit that bumps up the version
of the release in the `meson.build` file. Use `git rebase` if you had to
add more commits after the version bump and `dist` successfully passing.
If you change the history, remember to rebuild the tarball.
11. Now you've got the tarball. Check that the tarball size looks reasonable
compared to previous releases. If the size goes down a lot, likely the
docs went missing for some reason. Or the translations. If the size goes
up by a lot, something else may be wrong.
12. Tag the release. The git command for doing that looks like:
```sh
$ git tag -m "GTK+ 4.2.0" 4.2.0
```
13. Bump the version number in `meson.build` and commit the change.
14. Push the changes upstream, and push the tag as well. The git command for
doing that is:
```sh
$ git push origin
$ git push origin 4.2.0
```
15. Upload the tarball to `master.gnome.org` and run `ftpadmin install` to
transfer it to `download.gnome.org`. If you don't have an account on
`master.gnome.org`, find someone who can do it for you. The command for
this looks like:
```sh
$ scp gtk+-4.2.0.tar.xz matthiasc@master.gnome.org:
$ ssh matthiasc@master.gnome.org ftpadmin install gtk+-4.2.0.tar.xz
```
16. Go to the gnome-announce list archives, find the last announce message,
create a new message in the same form, replacing version numbers,
commentary at the top about "what this release is about" and the
summary of changes.
17. Send it to gnome-announce-list, gtk-list, gtk-app-devel-list and
gtk-devel-list. Set reply-to to desktop-devel-list.
18. Add a link to the release announcement to www.gtk.org which lives
in the gtk-web git module.

View File

@@ -1,8 +0,0 @@
## Process this file with automake to produce Makefile.in
include $(top_srcdir)/Makefile.decl
SUBDIRS = gdk gsk gtk
GITIGNOREFILES = */*.1
-include $(top_srcdir)/git.mk

View File

@@ -1,213 +0,0 @@
## Process this file with automake to produce Makefile.in
AUTOMAKE_OPTIONS = 1.6
# The name of the module.
DOC_MODULE=gdk4
# The top-level SGML file.
DOC_MAIN_SGML_FILE=gdk-docs.sgml
# Extra options to supply to gtkdoc-scan
SCAN_OPTIONS=--deprecated-guards=GDK_DISABLE_DEPRECATED \
--ignore-decorators=G_GNUC_WARN_UNUSED_RESULT
# The directory containing the source code. Relative to $(srcdir)
DOC_SOURCE_DIR=$(top_srcdir)/gdk $(top_srcdir)/gdk/x11
# Used for dependencies
HFILE_GLOB=$(top_srcdir)/gdk/*.h $(top_srcdir)/gdk/x11/gdkx.h
CFILE_GLOB=$(top_srcdir)/gdk/*.c
# Header files to ignore when scanning
IGNORE_HFILES= \
gdkintl.h \
gdkmarshalers.h \
gdkkeysyms.h \
gdkinternals.h \
gdkprivate.h \
gdk-private.h \
gdkapplaunchcontextprivate.h \
gdkcursorprivate.h \
gdkdevicemanagerprivate.h \
gdkdeviceprivate.h \
gdkdisplaymanagerprivate.h \
gdkdisplayprivate.h \
gdkdndprivate.h \
gdkdrawcontextprivate.h \
gdkframeclockprivate.h \
gdkglcontextprivate.h \
gdkkeysprivate.h \
gdkmonitorprivate.h \
gdkscreenprivate.h \
gdkseatdefaultprivate.h \
gdkseatprivate.h \
gdkvisualprivate.h \
gdkvulkancontextprivate.h \
keyname-table.h \
win32 \
x11 \
quartz \
broadway \
wayland
# Extra files to add when scanning
EXTRA_HFILES= \
$(top_srcdir)/gdk/x11/gdkx.h
# CFLAGS and LDFLAGS for compiling scan program. Only needed
# if $(DOC_MODULE).types is non-empty.
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_builddir) \
-I$(top_builddir)/gdk \
$(GTK_DEBUG_FLAGS) \
$(GDK_DEP_CFLAGS)
GTKDOC_LIBS = $(top_builddir)/gtk/libgtk-4.la $(GDK_DEP_LIBS)
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS=--output-format=xml --name-space=gdk
# Extra SGML files that are included by DOC_MAIN_SGML_FILE
content_files = \
version.xml
# Images to copy into HTML directory
HTML_IMAGES = \
images/rotated-text.png \
images/X_cursor.png \
images/arrow.png \
images/based_arrow_down.png \
images/based_arrow_up.png \
images/boat.png \
images/bogosity.png \
images/bottom_left_corner.png \
images/bottom_right_corner.png \
images/bottom_side.png \
images/bottom_tee.png \
images/box_spiral.png \
images/center_ptr.png \
images/circle.png \
images/clock.png \
images/coffee_mug.png \
images/cross.png \
images/cross_reverse.png \
images/crosshair.png \
images/diamond_cross.png \
images/dot.png \
images/dotbox.png \
images/double_arrow.png \
images/draft_large.png \
images/draft_small.png \
images/draped_box.png \
images/exchange.png \
images/fleur.png \
images/gobbler.png \
images/gumby.png \
images/hand1.png \
images/hand2.png \
images/heart.png \
images/icon.png \
images/iron_cross.png \
images/left_ptr.png \
images/left_side.png \
images/left_tee.png \
images/leftbutton.png \
images/ll_angle.png \
images/lr_angle.png \
images/man.png \
images/middlebutton.png \
images/mouse.png \
images/pencil.png \
images/pirate.png \
images/plus.png \
images/question_arrow.png \
images/right_ptr.png \
images/right_side.png \
images/right_tee.png \
images/rightbutton.png \
images/rtl_logo.png \
images/sailboat.png \
images/sb_down_arrow.png \
images/sb_h_double_arrow.png \
images/sb_left_arrow.png \
images/sb_right_arrow.png \
images/sb_up_arrow.png \
images/sb_v_double_arrow.png \
images/shuttle.png \
images/sizing.png \
images/spider.png \
images/spraycan.png \
images/star.png \
images/target.png \
images/tcross.png \
images/top_left_arrow.png \
images/top_left_corner.png \
images/top_right_corner.png \
images/top_side.png \
images/top_tee.png \
images/trek.png \
images/ul_angle.png \
images/umbrella.png \
images/ur_angle.png \
images/watch.png \
images/xterm.png \
images/alias_cursor.png \
images/all_scroll_cursor.png \
images/cell_cursor.png \
images/col_resize_cursor.png \
images/copy_cursor.png \
images/crosshair_cursor.png \
images/default_cursor.png \
images/e_resize_cursor.png \
images/ew_resize_cursor.png \
images/grabbing_cursor.png \
images/grab_cursor.png \
images/hand_cursor.png \
images/context_menu_cursor.png \
images/help_cursor.png \
images/move_cursor.png \
images/ne_resize_cursor.png \
images/nesw_resize_cursor.png \
images/no_drop_cursor.png \
images/not_allowed_cursor.png \
images/n_resize_cursor.png \
images/ns_resize_cursor.png \
images/nw_resize_cursor.png \
images/nwse_resize_cursor.png \
images/pointer_cursor.png \
images/progress_cursor.png \
images/row_resize_cursor.png \
images/se_resize_cursor.png \
images/s_resize_cursor.png \
images/sw_resize_cursor.png \
images/text_cursor.png \
images/vertical_text_cursor.png \
images/wait_cursor.png \
images/w_resize_cursor.png \
images/X_cursor.png \
images/zoom_in_cursor.png \
images/zoom_out_cursor.png
if ENABLE_DOC_CROSS_REFERENCES
# Extra options to supply to gtkdoc-fixref
FIXXREF_OPTIONS= \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gobject \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/glib \
--extra-dir=$(CAIRO_PREFIX)/share/gtk-doc/html/cairo
endif
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
EXTRA_DIST += version.xml.in
if ENABLE_GTK_DOC
TESTS_ENVIRONMENT = cd $(srcdir) && \
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
#TESTS = $(GTKDOC_CHECK)
endif
-include $(top_srcdir)/git.mk

View File

@@ -8,11 +8,11 @@
<bookinfo>
<title>GDK 4 Reference Manual</title>
<releaseinfo>
This document is for the GDK 3 library, version &version;
This document is for the GDK 4 library, version &version;.
The latest versions can be found online at
<ulink role="online-location" url="http://developer.gnome.org/gdk3/">http://developer.gnome.org/gdk3/</ulink>.
If you are looking for the older GDK 2 series of libraries,
see <ulink role="online-location" url="http://developer.gnome.org/gdk2/">http://developer.gnome.org/gdk2/</ulink>.
<ulink role="online-location" url="https://developer.gnome.org/gdk4/">https://developer.gnome.org/gdk4/</ulink>.
If you are looking for the older GDK 3 series of libraries,
see <ulink role="online-location" url="https://developer.gnome.org/gdk3/">https://developer.gnome.org/gdk3/</ulink>.
</releaseinfo>
</bookinfo>

View File

@@ -4,9 +4,6 @@
<SECTION>
<TITLE>General</TITLE>
<FILE>general</FILE>
gdk_init
gdk_init_check
gdk_parse_args
gdk_get_display_arg_name
gdk_notify_startup_complete
gdk_notify_startup_complete_with_id
@@ -266,7 +263,6 @@ gdk_window_new_toplevel
gdk_window_new_popup
gdk_window_new_temp
gdk_window_new_child
gdk_window_new_input
gdk_window_destroy
gdk_window_get_window_type
gdk_window_get_display
@@ -534,6 +530,7 @@ GdkRectangle
gdk_rectangle_intersect
gdk_rectangle_union
gdk_rectangle_equal
gdk_rectangle_contains_point
<SUBSECTION Private>
gdk_rectangle_get_type
@@ -1082,12 +1079,6 @@ GDK_X11_DISPLAY_CLASS
GDK_IS_X11_DISPLAY
GDK_IS_X11_DISPLAY_CLASS
GDK_X11_DISPLAY_GET_CLASS
GDK_TYPE_X11_DISPLAY_MANAGER
GDK_X11_DISPLAY_MANAGER
GDK_X11_DISPLAY_MANAGER_CLASS
GDK_IS_X11_DISPLAY_MANAGER
GDK_IS_X11_DISPLAY_MANAGER_CLASS
GDK_X11_DISPLAY_MANAGER_GET_CLASS
GDK_TYPE_X11_DRAG_CONTEXT
GDK_X11_DRAG_CONTEXT
GDK_X11_DRAG_CONTEXT_CLASS

View File

@@ -1,5 +1,3 @@
#include <gdk/gdk.h>
gdk_app_launch_context_get_type
gdk_cursor_get_type
gdk_device_get_type

View File

@@ -0,0 +1,172 @@
private_headers = [
'gdkintl.h',
'gdkmarshalers.h',
'gdkkeysyms.h',
'gdkinternals.h',
'gdkprivate.h',
'gdk-private.h',
'gdkapplaunchcontextprivate.h',
'gdkcursorprivate.h',
'gdkdevicemanagerprivate.h',
'gdkdeviceprivate.h',
'gdkdisplaymanagerprivate.h',
'gdkdisplayprivate.h',
'gdkdndprivate.h',
'gdkdrawcontextprivate.h',
'gdkframeclockprivate.h',
'gdkglcontextprivate.h',
'gdkkeysprivate.h',
'gdkmonitorprivate.h',
'gdkscreenprivate.h',
'gdkseatdefaultprivate.h',
'gdkseatprivate.h',
'gdkvisualprivate.h',
'gdkvulkancontextprivate.h',
'keyname-table.h',
'win32',
'x11',
'quartz',
'broadway',
'wayland',
]
images = [
'images/rotated-text.png',
'images/X_cursor.png',
'images/arrow.png',
'images/based_arrow_down.png',
'images/based_arrow_up.png',
'images/boat.png',
'images/bogosity.png',
'images/bottom_left_corner.png',
'images/bottom_right_corner.png',
'images/bottom_side.png',
'images/bottom_tee.png',
'images/box_spiral.png',
'images/center_ptr.png',
'images/circle.png',
'images/clock.png',
'images/coffee_mug.png',
'images/cross.png',
'images/cross_reverse.png',
'images/crosshair.png',
'images/diamond_cross.png',
'images/dot.png',
'images/dotbox.png',
'images/double_arrow.png',
'images/draft_large.png',
'images/draft_small.png',
'images/draped_box.png',
'images/exchange.png',
'images/fleur.png',
'images/gobbler.png',
'images/gumby.png',
'images/hand1.png',
'images/hand2.png',
'images/heart.png',
'images/icon.png',
'images/iron_cross.png',
'images/left_ptr.png',
'images/left_side.png',
'images/left_tee.png',
'images/leftbutton.png',
'images/ll_angle.png',
'images/lr_angle.png',
'images/man.png',
'images/middlebutton.png',
'images/mouse.png',
'images/pencil.png',
'images/pirate.png',
'images/plus.png',
'images/question_arrow.png',
'images/right_ptr.png',
'images/right_side.png',
'images/right_tee.png',
'images/rightbutton.png',
'images/rtl_logo.png',
'images/sailboat.png',
'images/sb_down_arrow.png',
'images/sb_h_double_arrow.png',
'images/sb_left_arrow.png',
'images/sb_right_arrow.png',
'images/sb_up_arrow.png',
'images/sb_v_double_arrow.png',
'images/shuttle.png',
'images/sizing.png',
'images/spider.png',
'images/spraycan.png',
'images/star.png',
'images/target.png',
'images/tcross.png',
'images/top_left_arrow.png',
'images/top_left_corner.png',
'images/top_right_corner.png',
'images/top_side.png',
'images/top_tee.png',
'images/trek.png',
'images/ul_angle.png',
'images/umbrella.png',
'images/ur_angle.png',
'images/watch.png',
'images/xterm.png',
'images/alias_cursor.png',
'images/all_scroll_cursor.png',
'images/cell_cursor.png',
'images/col_resize_cursor.png',
'images/copy_cursor.png',
'images/crosshair_cursor.png',
'images/default_cursor.png',
'images/e_resize_cursor.png',
'images/ew_resize_cursor.png',
'images/grabbing_cursor.png',
'images/grab_cursor.png',
'images/hand_cursor.png',
'images/context_menu_cursor.png',
'images/help_cursor.png',
'images/move_cursor.png',
'images/ne_resize_cursor.png',
'images/nesw_resize_cursor.png',
'images/no_drop_cursor.png',
'images/not_allowed_cursor.png',
'images/n_resize_cursor.png',
'images/ns_resize_cursor.png',
'images/nw_resize_cursor.png',
'images/nwse_resize_cursor.png',
'images/pointer_cursor.png',
'images/progress_cursor.png',
'images/row_resize_cursor.png',
'images/se_resize_cursor.png',
'images/s_resize_cursor.png',
'images/sw_resize_cursor.png',
'images/text_cursor.png',
'images/vertical_text_cursor.png',
'images/wait_cursor.png',
'images/w_resize_cursor.png',
'images/X_cursor.png',
'images/zoom_in_cursor.png',
'images/zoom_out_cursor.png',
]
configure_file(input: 'version.xml.in', output: 'version.xml', configuration: version_conf)
gnome.gtkdoc('gdk4',
main_xml: 'gdk4-docs.xml',
src_dir: [
join_paths(meson.source_root(), 'gdk'),
join_paths(meson.build_root(), 'gdk'),
],
dependencies: libgtk_dep,
gobject_typesfile: join_paths(meson.source_root(), 'docs/reference/gdk/gdk4.types'),
scan_args: [
'--ignore-decorators=_GDK_EXTERN|G_GNUC_WARN_UNUSED_RESULT',
'--ignore-headers=' + ' '.join(private_headers),
],
fixxref_args: [
'--html-dir=@0@'.format(docpath),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
'--extra-dir=@0@'.format(cairo_docpath),
],
html_assets: images,
install: true)

View File

@@ -1,63 +0,0 @@
## Process this file with automake to produce Makefile.in
DOC_MODULE = gsk4
DOC_MAIN_SGML_FILE = gsk-docs.xml
SCAN_OPTIONS = --deprecated-guards=GDK_DISABLE_DEPRECATED \
--ignore-decorators=G_GNUC_WARN_UNUSED_RESULT
DOC_SOURCE_DIR = $(top_srcdir)/gsk
HFILE_GLOB = $(top_srcdir)/gsk/*.h
CFILE_GLOB = $(top_srcdir)/gsk/*.c
IGNORE_HFILES = \
gskcairorendererprivate.h \
gskdebugprivate.h \
gskdriverprivate.h \
gskprofilerprivate.h \
gskglrendererprivate.h \
gskprivate.h \
gskprofilerprivate.h \
gskrendererprivate.h \
gskrendernodeprivate.h \
gskshaderbiulderprivate.h
EXTRA_HFILES =
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_builddir) \
-I$(top_builddir)/gsk \
$(GTK_DEBUG_FLAGS) \
$(GDK_DEP_CFLAGS)
GTKDOC_LIBS = $(top_builddir)/gtk/libgtk-4.la $(GDK_DEP_LIBS)
MKDB_OPTIONS=--output-format=xml --name-space=gsk
content_files = \
version.xml
HTML_IMAGES =
if ENABLE_DOC_CROSS_REFERENCES
# Extra options to supply to gtkdoc-fixref
FIXXREF_OPTIONS= \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gobject \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/glib \
--extra-dir=$(CAIRO_PREFIX)/share/gtk-doc/html/cairo
endif
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
EXTRA_DIST += version.xml.in
if ENABLE_GTK_DOC
TESTS_ENVIRONMENT = cd $(srcdir) && \
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
#TESTS = $(GTKDOC_CHECK)
endif
-include $(top_srcdir)/git.mk

View File

@@ -10,7 +10,7 @@
<releaseinfo>
This document is for the GSK 4 library, version &version;
The latest versions can be found online at
<ulink role="online-location" url="http://developer.gnome.org/gdk3/">http://developer.gnome.org/gsk4/</ulink>.
<ulink role="online-location" url="https://developer.gnome.org/gsk4/">https://developer.gnome.org/gsk4/</ulink>.
</releaseinfo>
</bookinfo>

View File

@@ -0,0 +1,60 @@
private_headers = [
'gskcairoblurprivate.h',
'gskcairorendererprivate.h',
'gskdebugprivate.h',
'gskgldriverprivate.h',
'gskglprofilerprivate.h',
'gskglrendererprivate.h',
'gskprivate.h',
'gskprofilerprivate.h',
'gskrendererprivate.h',
'gskrendernodeprivate.h',
'gskroundedrectprivate.h',
'gskshaderbuilderprivate.h',
'gsktextureprivate.h',
'gskvulkanblendpipelineprivate.h',
'gskvulkanborderpipelineprivate.h',
'gskvulkanboxshadowpipelineprivate.h',
'gskvulkanbufferprivate.h',
'gskvulkanclipprivate.h',
'gskvulkancolorpipelineprivate.h',
'gskvulkancommandpoolprivate.h',
'gskvulkaneffectpipelineprivate.h',
'gskvulkanimageprivate.h',
'gskvulkanlineargradientpipelineprivate.h',
'gskvulkanmemoryprivate.h',
'gskvulkanpipelineprivate.h',
'gskvulkanpushconstantsprivate.h',
'gskvulkanrendererprivate.h',
'gskvulkanrenderpassprivate.h',
'gskvulkanrenderprivate.h',
'gskvulkanshaderprivate.h',
]
images = [
]
configure_file(input: 'version.xml.in', output: 'version.xml', configuration: version_conf)
gnome.gtkdoc('gsk4',
main_xml: 'gsk4-docs.xml',
src_dir: [
join_paths(meson.source_root(), 'gsk'),
join_paths(meson.build_root(), 'gsk'),
],
dependencies: libgtk_dep,
gobject_typesfile: join_paths(meson.source_root(), 'docs/reference/gsk/gsk4.types'),
scan_args: [
'--ignore-decorators=_GDK_EXTERN',
'--ignore-headers=' + ' '.join(private_headers),
],
fixxref_args: [
'--html-dir=@0@'.format(docpath),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
'--extra-dir=@0@'.format(cairo_docpath),
'--extra-dir=../gdk',
],
html_assets: images,
install: true)

View File

@@ -1,577 +0,0 @@
## Process this file with automake to produce Makefile.in
AUTOMAKE_OPTIONS = 1.6
# The name of the module.
DOC_MODULE=gtk4
# The top-level SGML file.
DOC_MAIN_SGML_FILE=gtk-docs.sgml
# Extra options to supply to gtkdoc-scan
SCAN_OPTIONS=--deprecated-guards="GTK_ENABLE_BROKEN|GTK_DISABLE_DEPRECATED"
# The directory containing the source code. Relative to $(srcdir)
DOC_SOURCE_DIR=$(top_srcdir)/gtk
# Used for dependencies
HFILE_GLOB=$(top_srcdir)/gtk/*.h
CFILE_GLOB=$(top_srcdir)/gtk/*.c
# Header files to ignore when scanning
IGNORE_HFILES = \
inspector \
a11y \
gtkaccelgroupprivate.h \
gtkaccelmapprivate.h \
gtkadjustmentprivate.h \
gtkallocatedbitmaskprivate.h \
gtkappchooserprivate.h \
gtkapplicationaccelsprivate.h \
gtkapplicationprivate.h \
gtkbindingsprivate.h \
gtkbitmaskprivate.h \
gtkboxgadgetprivate.h \
gtkboxprivate.h \
gtkbuilderprivate.h \
gtkbuiltiniconprivate.h \
gtkbuttonprivate.h \
gtkcellareaboxcontextprivate.h \
gtkcheckbuttonprivate.h \
gtkclipboardprivate.h \
gtkcolorchooserprivate.h \
gtkcoloreditorprivate.h \
gtkcolorplaneprivate.h \
gtkcolorscaleprivate.h \
gtkcolorswatchprivate.h \
gtkcolorutils.h \
gtkcomboboxprivate.h \
gtkcomposetable.h \
gtkcontainerprivate.h \
gtkcssanimatedstyleprivate.h \
gtkcssanimationprivate.h \
gtkcssarrayvalueprivate.h \
gtkcssbgsizevalueprivate.h \
gtkcssbordervalueprivate.h \
gtkcsscalcvalueprivate.h \
gtkcsscolorvalueprivate.h \
gtkcsscornervalueprivate.h \
gtkcsscustomgadgetprivate.h \
gtkcsscustompropertyprivate.h \
gtkcssdimensionvalueprivate.h \
gtkcsseasevalueprivate.h \
gtkcssenginevalueprivate.h \
gtkcssenumvalueprivate.h \
gtkcssgadgetprivate.h \
gtkcssiconthemevalueprivate.h \
gtkcssimagebuiltinprivate.h \
gtkcssimagecrossfadeprivate.h \
gtkcssimagefallbackprivate.h \
gtkcssimagegradientprivate.h \
gtkcssimageiconthemeprivate.h \
gtkcssimagelinearprivate.h \
gtkcssimageradialprivate.h \
gtkcssimageprivate.h \
gtkcssimagerecolorprivate.h \
gtkcssimagescaledprivate.h \
gtkcssimagesurfaceprivate.h \
gtkcssimageurlprivate.h \
gtkcssimagevalueprivate.h \
gtkcssimagewin32private.h \
gtkcssinheritvalueprivate.h \
gtkcssinitialvalueprivate.h \
gtkcsskeyframesprivate.h \
gtkcsslookupprivate.h \
gtkcssmatcherprivate.h \
gtkcssnodeprivate.h \
gtkcssnodestylecacheprivate.h \
gtkcssnodedeclarationprivate.h \
gtkcssnumbervalueprivate.h \
gtkcsspalettevalueprivate.h \
gtkcsspathnodeprivate.h \
gtkcssparserprivate.h \
gtkcsspositionvalueprivate.h \
gtkcssproviderprivate.h \
gtkcssrepeatvalueprivate.h \
gtkcssrgbavalueprivate.h \
gtkcsssectionprivate.h \
gtkcssselectorprivate.h \
gtkcssshadowsvalueprivate.h \
gtkcssshadowvalueprivate.h \
gtkcssshorthandpropertyprivate.h\
gtkcssstaticstyleprivate.h \
gtkcssstringvalueprivate.h \
gtkcssstylechangeprivate.h \
gtkcssstylefuncsprivate.h \
gtkcssstyleprivate.h \
gtkcssstylepropertyprivate.h \
gtkcsstransformvalueprivate.h \
gtkcsstransientnodeprivate.h \
gtkcsstransitionprivate.h \
gtkcsstypedvalueprivate.h \
gtkcsstypesprivate.h \
gtkcssunsetvalueprivate.h \
gtkcssvalueprivate.h \
gtkcsswidgetnodeprivate.h \
gtkcsswin32sizevalueprivate.h \
gtkdebugupdatesprivate.h \
gtkdialogprivate.h \
gtkdndprivate.h \
gtkentryprivate.h \
gtkeventcontrollerprivate.h \
gtkfilechoosernativeprivate.h \
gtkfilechooserprivate.h \
gtkfilechooserwidgetprivate.h \
gtkfontchooserprivate.h \
gtkgesturedragprivate.h \
gtkgesturelongpressprivate.h \
gtkgesturemultipressprivate.h \
gtkgesturepanprivate.h \
gtkgestureprivate.h \
gtkgesturerotateprivate.h \
gtkgesturesingleprivate.h \
gtkgestureswipeprivate.h \
gtkgesturezoomprivate.h \
gtkheaderbarprivate.h \
gtkhslaprivate.h \
gtkiconprivate.h \
gtkiconhelperprivate.h \
gtkiconthemeprivate.h \
gtkiconviewprivate.h \
gtkimagedefinitionprivate.h \
gtkimageprivate.h \
gtkimcontextsimpleprivate.h \
gtkimmoduleprivate.h \
gtklabelprivate.h \
gtklockbuttonprivate.h \
gtkmagnifierprivate.h \
gtkmenubuttonprivate.h \
gtkmenuitemprivate.h \
gtkmenuprivate.h \
gtkmenushellprivate.h \
gtkmodulesprivate.h \
gtkmountoperationprivate.h \
gtkorientableprivate.h \
gtkpixelcacheprivate.h \
gtkplacessidebarprivate.h \
gtkplacesviewprivate.h \
gtkplacesviewrowprivate.h \
gtkpopoverprivate.h \
gtkprinter-private.h \
gtkprintoperation-private.h \
gtkprivate.h \
gtkprogresstrackerprivate.h \
gtkrangeprivate.h \
gtkrecentchooserprivate.h \
gtkrenderbackgroundprivate.h \
gtkrenderborderprivate.h \
gtkrendericonprivate.h \
gtkroundedboxprivate.h \
gtkscaleprivate.h \
gtksearchengine.h \
gtksearchenginemodel.h \
gtksearchenginequartz.h \
gtksearchenginesimple.h \
gtksearchenginetracker.h \
gtksearchentryprivate.h \
gtkselectionprivate.h \
gtksettingsprivate.h \
gtkshortcutsshortcutprivate.h \
gtkshortcutswindowprivate.h \
gtksidebarrowprivate.h \
gtksizegroup-private.h \
gtksizerequestcacheprivate.h \
gtksnapshotprivate.h \
gtkstyleanimationprivate.h \
gtkstylecascadeprivate.h \
gtkstylecontextprivate.h \
gtkstylepropertyprivate.h \
gtkstyleproviderprivate.h \
gtktextattributes.h \
gtktextattributesprivate.h \
gtktextchildprivate.h \
gtktexthandleprivate.h \
gtktextiterprivate.h \
gtktextmarkprivate.h \
gtktexttagprivate.h \
gtktextviewprivate.h \
gtktogglebuttonprivate.h \
gtktoolbarprivate.h \
gtktoolpaletteprivate.h \
gtktooltipprivate.h \
gtktooltipwindowprivate.h \
gtkutilsprivate.h \
gtktreeprivate.h \
gtkwidgetprivate.h \
gtkwin32themeprivate.h \
gtkwindowprivate.h \
fnmatch.h \
gtkactionmuxer.h \
gtkactionobserver.h \
gtkactionobservable.h \
gtk9slice.h \
gtkanimationdescription.h \
gtkbitmaskprivateimpl.h \
gtkbookmarksmanager.h \
gtkdbusgenerated.c \
gtkdbusgenerated.h \
gtkdebug.h \
gtkactionhelper.h \
gtkdndcursors.h \
gtkfilechooserdefault.h \
gtkfilechooserembed.h \
gtkfilechooserentry.h \
gtkfilechoosersettings.h \
gtkfilechooserutils.h \
gtkfilesystem.h \
gtkfilesystemmodel.h \
gtkfilesystemunix.h \
gtkfilesystemwin32.h \
gtkfontchooserutils.h \
gtkiconcache.h \
gtkiconcachevalidator.h \
gtkiconthemeparser.h \
gtkintl.h \
gtkkeyhash.h \
gtkkineticscrolling.h \
gtkmarshal.h \
gtkmnemonichash.h \
gtkmenutracker.h \
gtkmenutrackeritem.h \
gtkmenusectionbox.h \
gtkmodelmenu.h \
gtkmodelmenuitem.h \
gtkmodifierstyle.h \
gtkpathbar.h \
gtkprintbackend.h \
gtkprinteroption.h \
gtkprinteroptionset.h \
gtkprinteroptionwidget.h \
gtkprinter-private.h \
gtkprintoperation-portal.h \
gtkprint-win32.h \
gtkprintutils.h \
gtkprivate.h \
gtkprivatetypebuiltins.h \
gtkquery.h \
gtkrbtree.h \
gtkrecentchooserdefault.h \
gtkrecentchooserutils.h \
gtksearchengine.h \
gtksearchenginetracker.h \
gtksearchenginesimple.h \
gtksearchenginequartz.h \
gtksequence.h \
gtktextbtree.h \
gtktextbufferserialize.h \
gtktextdisplay.h \
gtktextlayout.h \
gtktextsegment.h \
gtktexttypes.h \
gtktextutil.h \
gtktimeline.h \
gtkthemes.h \
gtktrashmonitor.h \
gtktrayicon.h \
gtktreedatalist.h \
gtktreemenu.h \
gtktypebuiltins.h \
gtkwidgetpathprivate.h \
gtkwindow-decorate.h \
gtkwin32drawprivate.h \
gtkwin32themeprivate.h \
xdgmime \
xembed.h
# CFLAGS and LDFLAGS for compiling scan program. Only needed
# if $(DOC_MODULE).types is non-empty.
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_builddir) \
-I$(top_builddir)/gdk \
-DGTK_ENABLE_BROKEN \
-Wno-deprecated-declarations \
$(GTK_DEBUG_FLAGS) \
$(GTK_DEP_CFLAGS)
CPPFLAGS += \
-UGTK_DISABLE_SINGLE_INCLUDES
GTKDOC_LIBS = \
$(top_builddir)/gtk/libgtk-4.la \
$(GTK_DEP_LIBS)
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS=--output-format=xml --name-space=gtk
MKHTML_OPTIONS="--path=\"$(abs_srcdir):$(top_srcdir)/examples\""
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
content_files = \
broadway.xml \
building.sgml \
compiling.sgml \
css-overview.xml \
css-properties.xml \
drawing-model.xml \
getting_started.xml \
glossary.xml \
gtk4-broadwayd.xml \
gtk4-demo-application.xml \
gtk4-demo.xml \
gtk4-icon-browser.xml \
gtk4-widget-factory.xml \
gtk4-builder-tool.xml \
gtk4-encode-symbolic-svg.xml \
gtk4-launch.xml \
gtk4-query-immodules.xml \
gtk4-query-settings.xml \
gtk4-update-icon-cache.xml \
input-handling.xml \
migrating-2to4.xml \
migrating-3to4.xml \
mir.xml \
osx.sgml \
overview.xml \
question_index.sgml \
resources.sgml \
running.sgml \
text_widget.sgml \
tree_widget.sgml \
version.xml \
visual_index.xml \
wayland.xml \
windows.sgml \
x11.sgml
expand_content_files = \
compiling.sgml \
drawing-model.xml \
getting_started.xml \
glossary.xml \
input-handling.xml \
migrating-2to4.xml \
migrating-3to4.xml \
question_index.sgml \
text_widget.sgml \
tree_widget.sgml
# Images to copy into HTML directory
HTML_IMAGES = \
$(srcdir)/images/aboutdialog.png \
$(srcdir)/images/accel-label.png \
$(srcdir)/images/action-bar.png \
$(srcdir)/images/appchooserbutton.png \
$(srcdir)/images/appchooserdialog.png \
$(srcdir)/images/assistant.png \
$(srcdir)/images/box-packing.png \
$(srcdir)/images/box-expand.png \
$(srcdir)/images/button.png \
$(srcdir)/images/check-button.png \
$(srcdir)/images/color-button.png \
$(srcdir)/images/colorchooser.png \
$(srcdir)/images/combo-box.png \
$(srcdir)/images/combo-box-entry.png \
$(srcdir)/images/combo-box-text.png \
$(srcdir)/images/entry.png \
$(srcdir)/images/figure-hierarchical-drawing.png \
$(srcdir)/images/figure-windowed-label.png \
$(srcdir)/images/file-button.png \
$(srcdir)/images/filechooser.png \
$(srcdir)/images/font-button.png \
$(srcdir)/images/fontchooser.png \
$(srcdir)/images/frame.png \
$(srcdir)/images/glarea.png \
$(srcdir)/images/headerbar.png \
$(srcdir)/images/icon-view.png \
$(srcdir)/images/image.png \
$(srcdir)/images/info-bar.png \
$(srcdir)/images/label.png \
$(srcdir)/images/levelbar.png \
$(srcdir)/images/link-button.png \
$(srcdir)/images/list-and-tree.png \
$(srcdir)/images/lock-button.png \
$(srcdir)/images/lockbutton.png \
$(srcdir)/images/lockbutton-locked.png \
$(srcdir)/images/lockbutton-unlocked.png \
$(srcdir)/images/lockbutton-sorry.png \
$(srcdir)/images/menubar.png \
$(srcdir)/images/menu-button.png \
$(srcdir)/images/messagedialog.png \
$(srcdir)/images/multiline-text.png \
$(srcdir)/images/notebook.png \
$(srcdir)/images/panes.png \
$(srcdir)/images/pagesetupdialog.png \
$(srcdir)/images/placessidebar.png \
$(srcdir)/images/popup-anchors.png \
$(srcdir)/images/popup-flip.png \
$(srcdir)/images/popup-slide.png \
$(srcdir)/images/printdialog.png \
$(srcdir)/images/progressbar.png \
$(srcdir)/images/radio-group.png \
$(srcdir)/images/recentchooserdialog.png \
$(srcdir)/images/scales.png \
$(srcdir)/images/scrollbar.png \
$(srcdir)/images/scrolledwindow.png \
$(srcdir)/images/search-bar.png \
$(srcdir)/images/search-entry.png \
$(srcdir)/images/separator.png \
$(srcdir)/images/sidebar.png \
$(srcdir)/images/spinbutton.png \
$(srcdir)/images/spinner.png \
$(srcdir)/images/stack.png \
$(srcdir)/images/stackswitcher.png \
$(srcdir)/images/statusbar.png \
$(srcdir)/images/toggle-button.png \
$(srcdir)/images/toolbar.png \
$(srcdir)/images/toolpalette.png \
$(srcdir)/images/tree-view-coordinates.png \
$(srcdir)/images/volumebutton.png \
$(srcdir)/images/window.png \
$(srcdir)/images/layout-btlr.png \
$(srcdir)/images/layout-btrl.png \
$(srcdir)/images/layout-lrbt.png \
$(srcdir)/images/layout-lrtb.png \
$(srcdir)/images/layout-rlbt.png \
$(srcdir)/images/layout-rltb.png \
$(srcdir)/images/layout-tblr.png \
$(srcdir)/images/layout-tbrl.png \
$(srcdir)/images/widget-hvalign.png \
$(srcdir)/images/window-default.png \
$(srcdir)/images/hello-world.png \
$(srcdir)/images/grid-packing.png \
$(srcdir)/images/drawing.png \
$(srcdir)/images/switch.png \
$(srcdir)/images/linear.png \
$(srcdir)/images/ease.png \
$(srcdir)/images/ease-in-out.png \
$(srcdir)/images/ease-in.png \
$(srcdir)/images/ease-out.png \
$(srcdir)/images/gradient1.png \
$(srcdir)/images/gradient2.png \
$(srcdir)/images/gradient3.png \
$(srcdir)/images/gradient4.png \
$(srcdir)/images/border1.png \
$(srcdir)/images/border2.png \
$(srcdir)/images/border3.png \
$(srcdir)/images/slices.png \
$(srcdir)/images/checks.png \
$(srcdir)/images/options.png \
$(srcdir)/images/arrows.png \
$(srcdir)/images/expanders.png \
$(srcdir)/images/background.png \
$(srcdir)/images/frames.png \
$(srcdir)/images/frame-gap.png \
$(srcdir)/images/sliders.png \
$(srcdir)/images/focus.png \
$(srcdir)/images/handles.png \
$(srcdir)/images/extensions.png \
$(srcdir)/images/bloatpad-osx.png \
$(srcdir)/images/bloatpad-gnome.png \
$(srcdir)/images/bloatpad-xfce.png \
$(srcdir)/images/down-center.png \
$(srcdir)/images/down-end.png \
$(srcdir)/images/down-start.png \
$(srcdir)/images/left-center.png \
$(srcdir)/images/left-end.png \
$(srcdir)/images/left-start.png \
$(srcdir)/images/right-center.png \
$(srcdir)/images/right-end.png \
$(srcdir)/images/right-start.png \
$(srcdir)/images/up-center.png \
$(srcdir)/images/up-end.png \
$(srcdir)/images/up-start.png \
$(srcdir)/images/list-box.png \
$(srcdir)/images/getting-started-app1.png \
$(srcdir)/images/getting-started-app2.png \
$(srcdir)/images/getting-started-app3.png \
$(srcdir)/images/getting-started-app4.png \
$(srcdir)/images/getting-started-app6.png \
$(srcdir)/images/getting-started-app7.png \
$(srcdir)/images/getting-started-app8.png \
$(srcdir)/images/getting-started-app9.png \
$(srcdir)/images/getting-started-app10.png \
$(srcdir)/images/exampleapp.png \
$(srcdir)/images/flow-box.png \
$(srcdir)/images/inspector.png \
$(srcdir)/images/gedit-shortcuts.png \
$(srcdir)/images/clocks-shortcuts.png \
$(srcdir)/images/builder-shortcuts.png
if ENABLE_DOC_CROSS_REFERENCES
# Extra options to supply to gtkdoc-fixref
FIXXREF_OPTIONS=--extra-dir=../gdk/html \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gobject \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/glib \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html/gio \
--extra-dir=$(ATK_PREFIX)/share/gtk-doc/html/atk \
--extra-dir=$(PANGO_PREFIX)/share/gtk-doc/html/pango \
--extra-dir=$(CAIRO_PREFIX)/share/gtk-doc/html/cairo
endif
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
EXTRA_DIST += version.xml.in gtk4.types.in
########################################################################
man_MANS = \
gtk4-broadwayd.1 \
gtk4-builder-tool.1 \
gtk4-demo.1 \
gtk4-demo-application.1 \
gtk4-encode-symbolic-svg.1 \
gtk4-icon-browser.1 \
gtk4-launch.1 \
gtk4-query-immodules.1 \
gtk4-query-settings.1 \
gtk4-update-icon-cache.1 \
gtk4-widget-factory.1
if ENABLE_MAN
XSLTPROC_FLAGS = \
--nonet \
--stringparam man.output.quietly 1 \
--stringparam funcsynopsis.style ansi \
--stringparam man.th.extra1.suppress 1 \
--stringparam man.authors.section.enabled 0 \
--stringparam man.copyright.section.enabled 0
.xml.1:
$(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
dist-local-check-mans-enabled:
if grep "Man generation disabled" $(man_MANS) >/dev/null; then $(RM) $(man_MANS); fi
else
$(man_MANS):
echo Man generation disabled. Creating dummy $@. Configure with --enable-man to enable it.
echo Man generation disabled. Remove this file, configure with --enable-man, and rebuild > $@
dist-local-check-mans-enabled:
echo "*** --enable-man must be used in order to make dist"
false
endif
MAINTAINERCLEANFILES = $(man_MANS) $(BUILT_SOURCES)
EXTRA_DIST += $(man_MANS)
if ENABLE_GTK_DOC
TESTS_ENVIRONMENT = cd $(srcdir) && \
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
#TESTS = $(GTKDOC_CHECK)
endif
dist-hook-local: dist-local-check-mans-enabled all-local
gtk-docs-clean: clean
cd $(srcdir) && rm -rf xml html
-include $(top_srcdir)/git.mk

View File

@@ -16,14 +16,7 @@ How to compile GTK+ itself
</refpurpose>
</refnamediv>
<refsect1 id="overview">
<title>Building GTK+ on UNIX-like systems</title>
<para>
This chapter covers building and installing GTK+ on UNIX and
UNIX-like systems such as Linux. Compiling GTK+ on Microsoft
Windows is different in detail and somewhat more difficult to
get going since the necessary tools aren't included with
the operating system.
</para>
<title>Building GTK+</title>
<para>
Before we get into the details of how to compile GTK+, we should
mention that in many cases, binary packages of GTK+ prebuilt for
@@ -35,64 +28,51 @@ How to compile GTK+ itself
already.
</para>
<para>
On UNIX-like systems GTK+ uses the standard GNU build system,
using <application>autoconf</application> for package
configuration and resolving portability issues,
<application>automake</application> for building makefiles that
comply with the GNU Coding Standards, and
<application>libtool</application> for building shared libraries
on multiple platforms.
In order to build GTK+, you will need <application>meson</application>
installed on your system. On Linux, and other UNIX-like operating
systems, you will also need <application>ninja</application>. This
guide does not cover how to install these two requirements, but you
can refer to the <ulink url="http://mesonbuild.com">Meson website</ulink>
for more information. The <ulink url="https://ninja-build.org">Ninja</ulink>
build tool is also usable on various operating systems, so we will
refer to it in the examples.
</para>
<para>
If you are building GTK+ from the distributed source packages,
then you won't need these tools installed; the necessary pieces
of the tools are already included in the source packages. But
it's useful to know a bit about how packages that use these
tools work. A source package is distributed as a
<literal>tar.bz2</literal> or <literal>tar.xz</literal> file
which you unpack into a directory full of the source files as follows:
If you are building GTK+ from a source distribution or from a Git
clone, you will need to use <application>meson</application> to
configure the project. The most commonly useful argument is the
<systemitem>--prefix</systemitem> one, which determines where the
files will go once installed. To install GTK+ under a prefix
like <filename>/opt/gtk</filename> you would run Meson as:
</para>
<programlisting>
tar xvfj gtk+-3.2.0.tar.bz2
tar xvfJ gtk+-3.2.0.tar.xz
</programlisting>
<informalexample>
<programlisting>
meson --prefix /opt/gtk builddir
</programlisting>
</informalexample>
<para>
In the toplevel directory that is created, there will be
a shell script called <filename>configure</filename> which
you then run to take the template makefiles called
<filename>Makefile.in</filename> in the package and create
makefiles customized for your operating system.
The <filename>configure</filename> script can be passed
various command line arguments to determine how the package
is built and installed. The most commonly useful argument is
the <systemitem>--prefix</systemitem> argument which
determines where the package is installed. To install a package
in <filename>/opt/gtk</filename> you would run configure as:
Meson will create the <filename>builddir</filename> directory and
place all the build artefacts there.
</para>
<programlisting>
./configure --prefix=/opt/gtk
</programlisting>
<para>
A full list of options can be found by running
<filename>configure</filename> with the
<systemitem>--help</systemitem> argument. In general, the defaults are
right and should be trusted. After you've run
<filename>configure</filename>, you then run the
<command>make</command> command to build the package and install
it.
You can get a list of all available options for the build by
running <application>meson configure</application>.
</para>
<programlisting>
make
make install
</programlisting>
<para>
After Meson successfully configured the build directory, you then
can run the build, using Ninja:
</para>
<informalexample>
<programlisting>
cd builddir
ninja
ninja install
</programlisting>
</informalexample>
<para>
If you don't have permission to write to the directory you are
installing in, you may have to change to root temporarily before
running <literal>make install</literal>. Also, if you are
installing in a system directory, on some systems (such as
Linux), you will need to run <command>ldconfig</command> after
<literal>make install</literal> so that the newly installed
libraries will be found.
running <literal>ninja install</literal>.
</para>
<para>
Several environment variables are useful to pass to set before
@@ -131,35 +111,21 @@ How to compile GTK+ itself
<para>
Before you can compile the GTK+ widget toolkit, you need to have
various other tools and libraries installed on your
system. The two tools needed during the build process (as
differentiated from the tools used in when creating GTK+
mentioned above such as <application>autoconf</application>)
are <command>pkg-config</command> and GNU make.
system. Dependencies of GTK+ have their own build systems, so
you will need to refer to their own installation instructions.
</para>
<para>
A particular important tool used by GTK+ to find its dependencies
is <application>pkg-config</application>.
</para>
<para>
<ulink url="https://www.freedesktop.org/wiki/Software/pkg-config/">pkg-config</ulink>
is a tool for tracking the compilation flags needed for
libraries that are used by the GTK+ libraries. (For each
library, a small <literal>.pc</literal> text file is installed
in a standard location that contains the compilation flags
needed for that library along with version number information.)
</para>
<itemizedlist>
<listitem>
<para>
<ulink
url="http://pkg-config.freedesktop.org">pkg-config</ulink>
is a tool for tracking the compilation flags needed for
libraries that are used by the GTK+ libraries. (For each
library, a small <literal>.pc</literal> text file is installed
in a standard location that contains the compilation flags
needed for that library along with version number information.)
</para>
</listitem>
<listitem>
<para>
The GTK+ makefiles will mostly work with different versions
of <command>make</command>, however, there tends to be
a few incompatibilities, so the GTK+ team recommends
installing <ulink url="http://www.gnu.org/software/make">GNU
make</ulink> if you don't already have it on your system
and using it. (It may be called <command>gmake</command>
rather than <command>make</command>.)
</para>
</listitem>
</itemizedlist>
<para>
Some of the libraries that GTK+ depends on are maintained by
by the GTK+ team: GLib, GdkPixbuf, Pango, ATK and GObject Introspection.
@@ -171,24 +137,21 @@ How to compile GTK+ itself
The GLib library provides core non-graphical functionality
such as high level data types, Unicode manipulation, and
an object and type system to C programs. It is available
from the <ulink url="http://ftp.gtk.org/pub/glib/">GTK+
FTP site</ulink> or
<ulink url="http://download.gnome.org/sources/glib/">here</ulink>.
from <ulink url="https://download.gnome.org/sources/glib/">here</ulink>.
</para>
</listitem>
<listitem>
<para>
The <ulink url="http://git.gnome.org/browse/gdk-pixbuf/">GdkPixbuf library</ulink>
The <ulink url="https://git.gnome.org/browse/gdk-pixbuf/">GdkPixbuf library</ulink>
provides facilities for loading images in a variety of file formats.
It is available
<ulink url="http://download.gnome.org/sources/gdk-pixbuf/">here</ulink>.
It is available <ulink url="https://download.gnome.org/sources/gdk-pixbuf/">here</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.pango.org">Pango</ulink> is a library
for internationalized text handling. It is available
<ulink url="http://download.gnome.org/sources/pango/">here</ulink>.
<ulink url="https://download.gnome.org/sources/pango/">here</ulink>.
</para>
</listitem>
<listitem>
@@ -197,7 +160,7 @@ How to compile GTK+ itself
interfaces allowing accessibility technologies such as
screen readers to interact with a graphical user interface.
It is available
<ulink url="http://download.gnome.org/sources/atk/">here</ulink>.
<ulink url="https://download.gnome.org/sources/atk/">here</ulink>.
</para>
</listitem>
<listitem>
@@ -205,7 +168,7 @@ How to compile GTK+ itself
<ulink url="https://wiki.gnome.org/Projects/GObjectIntrospection">Gobject Introspection</ulink>
is a framework for making introspection data available to
language bindings. It is available
<ulink url="http://download.gnome.org/sources/gobject-introspection/">here</ulink>.
<ulink url="https://download.gnome.org/sources/gobject-introspection/">here</ulink>.
</para>
</listitem>
</itemizedlist>
@@ -213,7 +176,7 @@ How to compile GTK+ itself
<title>External dependencies</title>
<listitem>
<para>
The <ulink url="http://www.gnu.org/software/libiconv/">GNU
The <ulink url="https://www.gnu.org/software/libiconv/">GNU
libiconv library</ulink> is needed to build GLib if your
system doesn't have the <function>iconv()</function>
function for doing conversion between character
@@ -224,7 +187,7 @@ How to compile GTK+ itself
<listitem>
<para>
The libintl library from the <ulink
url="http://www.gnu.org/software/gettext/">GNU gettext
url="https://www.gnu.org/software/gettext/">GNU gettext
package</ulink> is needed if your system doesn't have the
<function>gettext()</function> functionality for handling
message translation databases.
@@ -241,35 +204,42 @@ How to compile GTK+ itself
</listitem>
<listitem>
<para>
The <ulink url="http://www.fontconfig.org">fontconfig</ulink>
The <ulink url="https://www.freedesktop.org/wiki/Software/fontconfig/">fontconfig</ulink>
library provides Pango with a standard way of locating
fonts and matching them against font names.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.cairographics.org">Cairo</ulink>
<ulink url="https://www.cairographics.org">Cairo</ulink>
is a graphics library that supports vector graphics and image
compositing. Both Pango and GTK+ use cairo for all of their
drawing.
compositing. Both Pango and GTK+ use Cairo for drawing.
</para>
</listitem>
<listitem>
<para>
<ulink url="https://github.com/anholt/libepoxy">libepoxy</ulink>
is a library that abstracts the differences between different
OpenGL libraries. GTK+ uses it for cross-platform GL support.
OpenGL libraries. GTK+ uses it for cross-platform GL support
and for its own drawing.
</para>
</listitem>
<listitem>
<para>
The <ulink url="http://wayland.freedesktop.org">Wayland</ulink> libraries
<ulink url="https://github.com/anholt/libepoxy">Graphene</ulink>
is a library that provides vector and matrix types for 2D and
3D transformations. GTK+ uses it internally for drawing.
</para>
</listitem>
<listitem>
<para>
The <ulink url="https://wayland.freedesktop.org">Wayland</ulink> libraries
are needed to build GTK+ with the Wayland backend.
</para>
</listitem>
<listitem>
<para>
The <ulink url="http://www.freedesktop.org/wiki/Software/shared-mime-info">shared-mime-info</ulink>
The <ulink url="https://www.freedesktop.org/wiki/Software/shared-mime-info">shared-mime-info</ulink>
package is not a hard dependency of GTK+, but it contains definitions
for mime types that are used by GIO and, indirectly, by GTK+.
gdk-pixbuf will use GIO for mime type detection if possible. For this
@@ -284,35 +254,32 @@ How to compile GTK+ itself
<title>Building and testing GTK+</title>
<para>
First make sure that you have the necessary external
dependencies installed: <command>pkg-config</command>, GNU make,
dependencies installed: <command>pkg-config</command>, Meson, Ninja,
the JPEG, PNG, and TIFF libraries, FreeType, and, if necessary,
libiconv and libintl. To get detailed information about building
these packages, see the documentation provided with the
individual packages.
On a Linux system, it's quite likely you'll have all of these
installed already except for <command>pkg-config</command>.
individual packages. On any average Linux system, it's quite likely
you'll have all of these installed already, or they will be easily
accessible through your operating system package repositories.
</para>
<para>
Then build and install the GTK+ libraries in the order:
GLib, Pango, ATK, then GTK+. For each library, follow the
steps of <literal>configure</literal>, <literal>make</literal>,
<literal>make install</literal> mentioned above. If you're
lucky, this will all go smoothly, and you'll be ready to
<link linkend="gtk-compiling">start compiling your own GTK+
applications</link>. You can test your GTK+ installation
by running the <command>gtk3-demo</command> program that
GLib, Cairo, Pango, ATK, then GTK+. For each library, follow the
instructions they provide, and make sure to share common settings
between them and the GTK+ build; if you are using a separate prefix
for GTK+, for instance, you will need to use the same prefix for all
its dependencies you build. If you're lucky, this will all go smoothly,
and you'll be ready to <link linkend="gtk-compiling">start compiling
your own GTK+ applications</link>. You can test your GTK+ installation
by running the <command>gtk4-demo</command> program that
GTK+ installs.
</para>
<para>
If one of the <filename>configure</filename> scripts fails or running
<command>make</command> fails, look closely at the error
messages printed; these will often provide useful information
as to what went wrong. When <filename>configure</filename>
fails, extra information, such as errors that a test compilation
ran into, is found in the file <filename>config.log</filename>.
Looking at the last couple of hundred lines in this file will
frequently make clear what went wrong. If all else fails, you
can ask for help on the gtk-list mailing list.
If one of the projects you're configuring or building fails, look
closely at the error messages printed; these will often provide useful
information as to what went wrong. Every build system has its own
log that can help you understand the issue you're encountering. If all
else fails, you can ask for help on the gtk-list mailing list.
See <xref linkend="gtk-resources"/> for more information.
</para>
</refsect1>
@@ -320,129 +287,128 @@ How to compile GTK+ itself
<title>Extra Configuration Options</title>
<para>
In addition to the normal options, the
<command>configure</command> script for the GTK+ library
supports a number of additional arguments. (Command line
arguments for the other GTK+ libraries are described in
the documentation distributed with the those libraries.)
In addition to the normal options provided by Meson, GTK+ defines
various arguments that modify what should be built.
<cmdsynopsis>
<command>configure</command>
<command>meson</command>
<sbr/>
<group>
<arg choice="plain">--disable-modules</arg>
<arg choice="plain">--enable-modules</arg>
<arg choice="plain">-Ddisable-modules=true</arg>
<arg choice="plain">-Ddisable-modules=false</arg>
</group>
<sbr/>
<group>
<arg>--with-included-immodules=MODULE1,MODULE2,...</arg>
<arg choice="plain">-Dwith-included-immodules=MODULE1,MODULE2,...</arg>
<arg choice="plain">-Dwith-included-immodules=all</arg>
<arg choice="plain">-Dwith-included-immodules=none</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-debug=[no/minimum/yes]</arg>
<arg choice="plain">-Ddocumentation=true</arg>
<arg choice="plain">-Ddocumentation=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--disable-Bsymbolic</arg>
<arg choice="plain">--enable-Bsymbolic</arg>
<arg choice="plain">-Dman-pages=true</arg>
<arg choice="plain">-Dman-pages=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--disable-xkb</arg>
<arg choice="plain">--enable-xkb</arg>
<arg choice="plain">-Denable-cups-print-backend=yes</arg>
<arg choice="plain">-Denable-cups-print-backend=no</arg>
<arg choice="plain">-Denable-cups-print-backend=auto</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--disable-xinerama</arg>
<arg choice="plain">--enable-xinerama</arg>
<arg choice="plain">-Denable-papi-print-backend=yes</arg>
<arg choice="plain">-Denable-papi-print-backend=no</arg>
<arg choice="plain">-Denable-papi-print-backend=auto</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--disable-gtk-doc</arg>
<arg choice="plain">--enable-gtk-doc</arg>
<arg choice="plain">-Denable-cloudprint-print-backend=yes</arg>
<arg choice="plain">-Denable-cloudprint-print-backend=no</arg>
<arg choice="plain">-Denable-cloudprint-print-backend=auto</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--disable-cups</arg>
<arg choice="plain">--enable-cups</arg>
<arg choice="plain">-Denable-test-print-backend=yes</arg>
<arg choice="plain">-Denable-test-print-backend=no</arg>
<arg choice="plain">-Denable-test-print-backend=auto</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--disable-papi</arg>
<arg choice="plain">--enable-papi</arg>
<arg choice="plain">-Denable-colord=yes</arg>
<arg choice="plain">-Denable-colord=no</arg>
<arg choice="plain">-Denable-colord=auto</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-xinput</arg>
<arg choice="plain">--disable-xinput</arg>
<arg choice="plain">-Denable-vulkan=yes</arg>
<arg choice="plain">-Denable-vulkan=no</arg>
<arg choice="plain">-Denable-vulkan=auto</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-packagekit</arg>
<arg choice="plain">--disable-packagekit</arg>
<arg choice="plain">-Denable-x11-backend=true</arg>
<arg choice="plain">-Denable-x11-backend=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-x11-backend</arg>
<arg choice="plain">--disable-x11-backend</arg>
<arg choice="plain">-Denable-xinerama=true</arg>
<arg choice="plain">-Denable-xinerama=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-win32-backend</arg>
<arg choice="plain">--disable-win32-backend</arg>
<arg choice="plain">-Denable-win32-backend=true</arg>
<arg choice="plain">-Denable-win32-backend=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-quartz-backend</arg>
<arg choice="plain">--disable-quartz-backend</arg>
<arg choice="plain">-Denable-quartz-backend=true</arg>
<arg choice="plain">-Denable-quartz-backend=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-broadway-backend</arg>
<arg choice="plain">--disable-broadway-backend</arg>
<arg choice="plain">-Denable-broadway-backend=true</arg>
<arg choice="plain">-Denable-broadway-backend=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-wayland-backend</arg>
<arg choice="plain">--disable-wayland-backend</arg>
<arg choice="plain">-Denable-wayland-backend=true</arg>
<arg choice="plain">-Denable-wayland-backend=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-mir-backend</arg>
<arg choice="plain">--disable-mir-backend</arg>
<arg choice="plain">-Denable-mir-backend=true</arg>
<arg choice="plain">-Denable-mir-backend=false</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-introspection=[no/auto/yes]</arg>
</group>
<sbr/>
<group>
<arg choice="plain">--enable-installed-tests</arg>
<arg choice="plain">--disable-installed-tests</arg>
<arg choice="plain">-Dintrospection=true</arg>
<arg choice="plain">-Dintrospection=false</arg>
</group>
</cmdsynopsis>
</para>
<formalpara>
<title><systemitem>--disable-modules</systemitem> and
<systemitem>--enable-modules</systemitem></title>
<title><systemitem>disable-modules</systemitem></title>
<para>
Normally GTK+ will try to build the input method modules
as little shared libraries that are loaded on demand.
The <systemitem>--disable-modules</systemitem> argument
The <systemitem>disable-modules</systemitem> option
indicates that they should all be built statically
into the GTK+ library instead. This is useful for
people who need to produce statically-linked binaries.
If neither <systemitem>--disable-modules</systemitem> nor
<systemitem>--enable-modules</systemitem> is specified,
If <systemitem>disable-modules</systemitem> is not specified,
then the <command>configure</command> script will try to
auto-detect whether shared modules work on your system.
</para>
</formalpara>
<formalpara>
<title><systemitem>--with-included-immodules</systemitem></title>
<title><systemitem>with-included-immodules</systemitem></title>
<para>
This option allows you to specify which input method modules you
@@ -452,101 +418,18 @@ How to compile GTK+ itself
</formalpara>
<formalpara>
<title><systemitem>--enable-debug</systemitem></title>
<title><systemitem>enable-xinerama</systemitem></title>
<para>
Turns on various amounts of debugging support. Setting this to
'no' disables g_assert(), g_return_if_fail(), g_return_val_if_fail() and all cast checks between different object types. Setting it
to 'minimum' disables only cast checks. Setting it to 'yes' enables
<link linkend="GTK-Debug-Options">runtime debugging</link>.
The default is 'minimum'.
Note that 'no' is fast, but dangerous as it tends to destabilize
even mostly bug-free software by changing the effect of many bugs
from simple warnings into fatal crashes. Thus
<option>--enable-debug=no</option> should <emphasis>not</emphasis>
be used for stable releases of GTK+.
By default GTK+ will try to link against the Xinerama libraries
if they are found. This options can be used to explicitly control
whether Xinerama should be used.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-Bsymbolic</systemitem> and
<systemitem>--enable-Bsymbolic</systemitem></title>
<para>
The option <systemitem>--disable-Bsymbolic</systemitem>
turns off the use of the -Bsymbolic-functions linker flag.
This is only necessary if you want to override GTK+ functions
by using <envar>LD_PRELOAD</envar>.
</para>
</formalpara>
<formalpara>
<title><systemitem>--enable-explicit-deps</systemitem> and
<systemitem>--disable-explicit-deps</systemitem></title>
<para>
If <systemitem>--enable-explicit-deps</systemitem> is
specified then GTK+ will write the full set of libraries
that GTK+ depends upon into its <literal>.pc</literal> files to be used when
programs depending on GTK+ are linked. Otherwise, GTK+
only will include the GTK+ libraries themselves, and
will depend on system library dependency facilities to
bring in the other libraries.
By default GTK+ will disable explicit dependencies unless
it detects that they are needed on the system. (If you
specify <systemitem>--enable-static</systemitem> to force
building of static libraries, then explicit dependencies
will be written since library dependencies don't work
for static libraries.) Specifying
<systemitem>--enable-explicit-deps</systemitem> or
<systemitem>--enable-static</systemitem> can cause
compatibility
problems when libraries that GTK+ depends upon change
their versions, and should be avoided if possible.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-xkb</systemitem> and
<systemitem>--enable-xkb</systemitem></title>
<para>
By default the <command>configure</command> script will try
to auto-detect whether the XKB extension is supported by
the X libraries GTK+ is linked with.
These options can be used to explicitly control whether
GTK+ will support the XKB extension.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-xinerama</systemitem> and
<systemitem>--enable-xinerama</systemitem></title>
<para>
By default the <command>configure</command> script will try
to link against the Xinerama libraries if they are found.
These options can be used to explicitly control whether
Xinerama should be used.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-xinput</systemitem> and
<systemitem>--enable-xinput</systemitem></title>
<para>
Controls whether GTK+ is built with support for the XInput
or XInput2 extension. These extensions provide an extended
interface to input devices such as graphics tablets.
When this support is compiled in, specially written
GTK+ programs can get access to subpixel positions,
multiple simultaneous input devices, and extra "axes"
provided by the device such as pressure and tilt
information.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-gtk-doc</systemitem> and
<systemitem>--enable-gtk-doc</systemitem></title>
<title><systemitem>enable-documentation</systemitem> and
<systemitem>enable-man-pages</systemitem></title>
<para>
The <application>gtk-doc</application> package is
@@ -557,93 +440,73 @@ How to compile GTK+ itself
<application>gtk-doc</application> installed and
are modifying GTK+, you may want to enable
<application>gtk-doc</application> support by passing
in <systemitem>--enable-gtk-doc</systemitem>. If not
enabled, pre-generated HTML files distributed with GTK+
will be installed.
in <systemitem>enable-documentation</systemitem>.
</para>
<para>
Additionally, some tools provided by GTK+ have their own
manual pages generated using a similar set of dependencies;
if you have <application>xsltproc</application> then you
can generate manual pages by passing <systemitem>enable-man-pages</systemitem>
when configuring the build.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-cups</systemitem> and
<systemitem>--enable-cups</systemitem></title>
<title><systemitem>enable-cups-print-backend</systemitem>,
<systemitem>enable-papi-print-backend</systemitem>,
<systemitem>enable-cloudprint-print-backend</systemitem>, and
<systemitem>enable-test-print-backend</systemitem></title>
<para>
By default the <command>configure</command> script will try
to build the cups print backend if the cups libraries are found.
These options can be used to explicitly control whether
the cups print backend should be built.
By default, GTK+ will try to build various print backends if
their dependencies are found. These options can be used to
explicitly control whether each print backend should be built
or not.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-papi</systemitem> and
<systemitem>--enable-papi</systemitem></title>
<title><systemitem>enable-x11-backend</systemitem>,
<systemitem>enable-win32-backend</systemitem>,
<systemitem>enable-quartz-backend</systemitem>,
<systemitem>enable-broadway-backend</systemitem>,
<systemitem>enable-wayland-backend</systemitem>, and
<systemitem>enable-mir-backend</systemitem></title>
<para>
By default the <command>configure</command> script will try
to build the papi print backend if the papi libraries are found.
These options can be used to explicitly control whether
the papi print backend should be built.
Enable specific backends for GDK. If none of these options
are given, the Wayland backend will be enabled by default,
if the platform is Linux; the X11 backend will also be enabled
by default, unless the platform is Windows, in which case the
default is win32, or the platform is macOS, in which case the
default is quartz. If any backend is explicitly enabled or disabled,
no other platform will be enabled automatically.
</para>
</formalpara>
<formalpara>
<title><systemitem>--disable-packagekit</systemitem> and
<systemitem>--enable-packagekit</systemitem></title>
<title><systemitem>introspection</systemitem></title>
<para>
By default the <command>configure</command> script will try
to build the PackageKit support for the open-with dialog if
the PackageKit libraries are found.
These options can be used to explicitly control whether
PackageKit support should be built.
Allows to disable building introspection support. This is option
is mainly useful for shortening turnaround times on developer
systems. Installed builds of GTK+ should always have introspection
support.
</para>
</formalpara>
<formalpara>
<title><systemitem>--enable-x11-backend</systemitem>,
<systemitem>--disable-x11-backend</systemitem>,
<systemitem>--enable-win32-backend</systemitem>,
<systemitem>--disable-win32-backend</systemitem>,
<systemitem>--enable-quartz-backend</systemitem>,
<systemitem>--disable-quartz-backend</systemitem>,
<systemitem>--enable-broadway-backend</systemitem>,
<systemitem>--disable-broadway-backend</systemitem>,
<systemitem>--enable-wayland-backend</systemitem>,
<systemitem>--disable-wayland-backend</systemitem>
<systemitem>--enable-mir-backend</systemitem>, and
<systemitem>--disable-mir-backend</systemitem></title>
<title><systemitem>build-tests</systemitem>
<systemitem>demos</systemitem></title>
<para>
Enables specific backends for GDK. If none of these options
are given, the x11 backend will be enabled by default,
unless the platform is Windows, in which case the default is
win32. If any backend is explicitly enabled or disabled, no
other platform will be enabled automatically. Other
supported backends are the quartz backend for OS X.
By default, GTK+ will build quite a few tests and demos.
While these are useful on a developer system, they are not
needed when GTK+ is built e.g. for a flatpak runtime. These
options allow to disable building tests and demos.
</para>
</formalpara>
<formalpara>
<title><systemitem>--enable-introspection</systemitem></title>
<para>
Build with or without introspection support.
The default is 'auto'.
</para>
</formalpara>
<formalpara>
<title><systemitem>--enable-installed-tests</systemitem> or
<systemitem>--disable-installed-tests</systemitem></title>
<para>
Whether to install tests on the system. If enabled, tests
and their data are installed in <filename>${libexecdir}/gtk+/installed-tests</filename>.
Metadata for the tests is installed in <filename>${prefix}/share/installed-tests/gtk+</filename>.
To run the installed tests, gnome-desktop-testing-runner
can be used.
</para>
</formalpara>
</refsect1>
</refentry>

View File

@@ -46,7 +46,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<para>
We loosely follow the CSS
<ulink url="http://www.w3.org/TR/css-values/#value-defs">value definition</ulink>
<ulink url="https://www.w3.org/TR/css-values/#value-defs">value definition</ulink>
specification in the formatting of syntax productions.
<simplelist>
<member>Nonterminals are enclosed in angle backets (〈〉), all other strings that are not listed here are literals</member>
@@ -123,7 +123,7 @@ scale[.fine-tune]
<programlisting><![CDATA[
button, entry {
color: #ff00ea;
font: Comic Sans 12
font: 12px "Comic Sans"
}
]]></programlisting>
</example>
@@ -154,7 +154,7 @@ button, entry {
<para>
To learn more about the @import rule, you can read the
<ulink url="http://www.w3.org/TR/css3-cascade/#at-import">Cascading</ulink>
<ulink url="https://www.w3.org/TR/css3-cascade/#at-import">Cascading</ulink>
module of the CSS specification.
</para>
@@ -216,7 +216,7 @@ notebook > entry {
<title>Theme any widget within a GtkBox</title>
<programlisting><![CDATA[
box * {
font: Sans 20
font: 20px Sans
}
]]></programlisting>
</example>
@@ -225,7 +225,7 @@ box * {
<title>Theme a label named title-label</title>
<programlisting><![CDATA[
label#title-label {
font: Sans 15
font: 15px Sans
}
]]></programlisting>
</example>
@@ -329,7 +329,7 @@ label:focus {
</example>
<example>
<title>Theme inconsistent checkbuttons</title>
<title>Theme indeterminate checkbuttons</title>
<programlisting><![CDATA[
checkbutton:indeterminate {
background-color: #20395a;
@@ -360,87 +360,87 @@ checkbutton:indeterminate {
<row>
<entry>*</entry>
<entry>any node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#universal-selector">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#universal-selector">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E</entry>
<entry>any node with name E</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#type-selectors">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#type-selectors">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E.class</entry>
<entry>any E node with the given style class</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#class-html">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#class-html">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E#id</entry>
<entry>any E node with the given ID</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#id-selectors">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#id-selectors">CSS</ulink></entry>
<entry>GTK+ uses the widget name as ID</entry>
</row>
<row>
<entry>E:nthchild(〈nthchild〉)</entry>
<entry>any E node which is the n-th child of its parent node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E:nthlastchild(〈nthchild〉)</entry>
<entry>any E node which is the n-th child of its parent node, counting from the end</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E:firstchild</entry>
<entry>any E node which is the first child of its parent node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E:lastchild</entry>
<entry>any E node which is the last child of its parent node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E:onlychild</entry>
<entry>any E node which is the only child of its parent node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#structural-pseudos">CSS</ulink></entry>
<entry>Equivalent to E:first-child:last-child</entry>
</row>
<row>
<entry>E:link, E:visited</entry>
<entry>any E node which represents a hyperlink, not yet visited (:link) or already visited (:visited)</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#link">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#link">CSS</ulink></entry>
<entry>Corresponds to GTK_STATE_FLAG_LINK and GTK_STATE_FLAGS_VISITED</entry>
</row>
<row>
<entry>E:active, E:hover, E:focus</entry>
<entry>any E node which is part of a widget with the corresponding state</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#useraction-pseudos">CSS</ulink></entry>
<entry>Corresponds to GTK_STATE_FLAG_ACTIVE, GTK_STATE_FLAG_PRELIGHT and GTK_STATE_FLAGS_FOCUSED; GTK+ also allows E:prelight and E:focused</entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#useraction-pseudos">CSS</ulink></entry>
<entry>Correspond to GTK_STATE_FLAG_ACTIVE, GTK_STATE_FLAG_PRELIGHT and GTK_STATE_FLAGS_FOCUSED respectively</entry>
</row>
<row>
<entry>E:disabled</entry>
<entry>any E node which is part of a widget with is disabled</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#UIstates">CSS</ulink></entry>
<entry>Corresponds to GTK_STATE_FLAG_INSENSITIVE; GTK+ also allows E:insensitive</entry>
<entry>any E node which is part of a widget which is disabled</entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#UIstates">CSS</ulink></entry>
<entry>Corresponds to GTK_STATE_FLAG_INSENSITIVE</entry>
</row>
<row>
<entry>E:checked</entry>
<entry>any E node which is part of a widget (e.g. radio- or checkbuttons) which is checked</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#UIstates">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#UIstates">CSS</ulink></entry>
<entry>Corresponds to GTK_STATE_FLAG_CHECKED</entry>
</row>
<row>
<entry>E:indeterminate</entry>
<entry>any E node which is part of a widget (e.g. radio- or checkbuttons) which is in an inconsistent state</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#indeterminate">CSS3</ulink>,
<entry>any E node which is part of a widget (e.g. radio- or checkbuttons) which is in an indeterminate state</entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#indeterminate">CSS3</ulink>,
<ulink url="https://drafts.csswg.org/selectors/#indeterminate">CSS4</ulink></entry>
<entry>Corresponds to GTK_STATE_FLAG_INCONSISTENT; GTK+ also allows E:inconsistent</entry>
<entry>Corresponds to GTK_STATE_FLAG_INCONSISTENT</entry>
</row>
<row>
<entry>E:backdrop, E:selected</entry>
@@ -451,7 +451,7 @@ checkbutton:indeterminate {
<row>
<entry>E:not(〈selector〉)</entry>
<entry>any E node which does not match the simple selector 〈selector〉</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#negation">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#negation">CSS</ulink></entry>
<entry></entry>
</row>
<row>
@@ -469,25 +469,25 @@ checkbutton:indeterminate {
<row>
<entry>E F</entry>
<entry>any F node which is a descendent of an E node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#descendent-combinators">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#descendent-combinators">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E > F</entry>
<entry>any F node which is a child of an E node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#child-combinators">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#child-combinators">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E ~ F</entry>
<entry>any F node which is preceded by an E node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#general-sibling-combinators">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#general-sibling-combinators">CSS</ulink></entry>
<entry></entry>
</row>
<row>
<entry>E + F</entry>
<entry>any F node which is immediately preceded by an E node</entry>
<entry><ulink url="http://www.w3.org/TR/css3-selectors/#adjacent-sibling-combinators">CSS</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-selectors/#adjacent-sibling-combinators">CSS</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -499,7 +499,7 @@ checkbutton:indeterminate {
<para>
To learn more about selectors in CSS, read the
<ulink url="http://www.w3.org/TR/css3-selectors/">Selectors</ulink>
<ulink url="https://www.w3.org/TR/css3-selectors/">Selectors</ulink>
module of the CSS specification.
</para>
@@ -532,7 +532,7 @@ checkbutton:indeterminate {
<para>
For a list of valid color names and for more background on colors in
CSS, see the <ulink url="http://www.w3.org/TR/css3-color/#svg-color">Color</ulink>
CSS, see the <ulink url="https://www.w3.org/TR/css3-color/#svg-color">Color</ulink>
module of the CSS specification.
</para>
@@ -654,7 +654,7 @@ button {
<para>
A crossfade lets you specify an image as an intermediate between two
images. Crossfades are specified in the draft of the level 4
<ulink url="http://www.w3.org/TR/css4-images">Image</ulink>
<ulink url="https://www.w3.org/TR/css4-images">Image</ulink>
module of the CSS specification.
</para>
@@ -734,7 +734,7 @@ label {
To learn more about gradients in CSS, including details of how color stops
are placed on the gradient line and keywords for specifying radial sizes,
you can read the
<ulink url="http://www.w3.org/TR/css3-images/#gradients">Image</ulink>
<ulink url="https://www.w3.org/TR/css3-images/#gradients">Image</ulink>
module of the CSS specification.
</para>

View File

@@ -94,7 +94,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
The calc() notation adds considerable expressive power. There are limits
on what types can be combined in such an expression (e.g. it does not make
sense to add a number and a time). For the full details, see the
<ulink url="http://www.w3.org/TR/css3-values/#calc-notation">CSS3 Values and
<ulink url="https://www.w3.org/TR/css3-values/#calc-notation">CSS3 Values and
Units</ulink> spec.
</para>
@@ -134,8 +134,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>rgba(1,1,1,1)</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-color">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-color/#foreground">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-color">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-color/#foreground">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -144,7 +144,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>1</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-color/#opacity">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-color/#opacity">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -193,8 +193,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>gtk-font-name setting</entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-family">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-fonts/#font-family-prop">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-family">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-fonts/#font-family-prop">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -203,8 +203,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>gtk-font-name setting</entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#font-size-props">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-fonts/#font-size-prop">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#font-size-props">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-fonts/#font-size-prop">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -213,8 +213,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>normal</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-style">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-fonts/#font-style-prop">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-style">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-fonts/#font-style-prop">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -223,8 +223,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>normal</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-variant">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-fonts/#descdef-font-variant">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-variant">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-fonts/#descdef-font-variant">CSS3</ulink></entry>
<entry>only CSS2 values supported</entry>
</row>
<row>
@@ -233,8 +233,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>normal</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-weight">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-fonts/#font-weight-prop">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#propdef-font-weight">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-fonts/#font-weight-prop">CSS3</ulink></entry>
<entry>normal is synonymous with 400, bold with 700</entry>
</row>
<row>
@@ -243,7 +243,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>normal</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-fonts/#font-stretch-prop">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-fonts/#font-stretch-prop">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -266,8 +266,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>font</entry>
<entry><code>[ 〈font-style〉 || 〈font-variant〉 || 〈font-weight〉 || 〈font-stretch〉 ]? 〈font-size〉 〈font-family〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#font-shorthand">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-fonts/#font-prop">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/fonts.html#font-shorthand">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-fonts/#font-prop">CSS3</ulink></entry>
<entry>CSS allows line-height, etc</entry>
</row>
</tbody>
@@ -299,7 +299,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>currentColor</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-ui/#caret-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-ui/#caret-color">CSS3</ulink></entry>
<entry>CSS allows an auto value</entry>
</row>
<row>
@@ -335,7 +335,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-text/#letter-spacing">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-text/#letter-spacing">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -344,8 +344,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/text.html#propdef-text-decoration">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css-text-decor-3/#text-decoration-line-property">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/text.html#propdef-text-decoration">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css-text-decor-3/#text-decoration-line-property">CSS3</ulink></entry>
<entry>CSS allows overline</entry>
</row>
<row>
@@ -354,7 +354,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>currentColor</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css-text-decor-3/#text-decoration-color-property">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css-text-decor-3/#text-decoration-color-property">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -363,7 +363,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>solid</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css-text-decor-3/#text-decoration-style-property">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css-text-decor-3/#text-decoration-style-property">CSS3</ulink></entry>
<entry>CSS allows dashed and dotted</entry>
</row>
<row>
@@ -372,7 +372,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css-text-decor-3/#text-shadow-property">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css-text-decor-3/#text-shadow-property">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -386,7 +386,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>textdecoration</entry>
<entry><code>〈text-decoration-line〉 || 〈text-decoration-style〉 || 〈text-decoration-color〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/css-text-decor-3/#text-decoration-property">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css-text-decor-3/#text-decoration-property">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -527,8 +527,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html#propdef-min-width">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#min-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html#propdef-min-width">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#min-width">CSS3</ulink></entry>
<entry>CSS allows percentages</entry>
</row>
<row>
@@ -537,8 +537,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html#propdef-min-height">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#min-height">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html#propdef-min-height">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#min-height">CSS3</ulink></entry>
<entry>CSS allows percentages</entry>
</row>
<row>
@@ -547,8 +547,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-top">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#margin-top">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-top">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#margin-top">CSS3</ulink></entry>
<entry>CSS allows percentages or auto</entry>
</row>
<row>
@@ -557,8 +557,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-right">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#margin-right">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-right">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#margin-right">CSS3</ulink></entry>
<entry>CSS allows percentages or auto</entry>
</row>
<row>
@@ -567,8 +567,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-bottom">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#margin-bottom">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-bottom">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#margin-bottom">CSS3</ulink></entry>
<entry>CSS allows percentages or auto</entry>
</row>
<row>
@@ -577,8 +577,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-left">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#margin-left">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin-left">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#margin-left">CSS3</ulink></entry>
<entry>CSS allows percentages or auto</entry>
</row>
<row>
@@ -587,8 +587,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-top">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#padding-top">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-top">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#padding-top">CSS3</ulink></entry>
<entry>CSS allows percentages</entry>
</row>
<row>
@@ -597,8 +597,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-right">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#padding-right">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-right">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#padding-right">CSS3</ulink></entry>
<entry>CSS allows percentages</entry>
</row>
<row>
@@ -607,8 +607,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-bottom">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#padding-bottom">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-bottom">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#padding-bottom">CSS3</ulink></entry>
<entry>CSS allows percentages</entry>
</row>
<row>
@@ -617,8 +617,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-left">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#padding-left">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding-left">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#padding-left">CSS3</ulink></entry>
<entry>CSS allows percentages</entry>
</row>
</tbody>
@@ -632,16 +632,16 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>margin</entry>
<entry><code>〈length〉{1,4}</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#margin">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-margin">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#margin">CSS3</ulink></entry>
<entry>a 'four sides' shorthand</entry>
</row>
<row>
<entry>padding</entry>
<entry><code>〈length〉{1,4}</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-box/#padding">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-padding">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-box/#padding">CSS3</ulink></entry>
<entry>a 'four sides' shorthand</entry>
</row>
</tbody>
@@ -663,8 +663,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-width">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-width">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry>CSS allows other values</entry>
</row>
<row>
@@ -673,8 +673,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-width">CSS2</ulink>,
<ulink url="http://www.w3.org/css3-background/#the-border-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-width">CSS2</ulink>,
<ulink url="https://www.w3.org/css3-background/#the-border-width">CSS3</ulink></entry>
<entry>CSS allows other values</entry>
</row>
<row>
@@ -683,8 +683,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-width">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-width">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry>CSS allows other values</entry>
</row>
<row>
@@ -693,8 +693,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-width">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-width">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry>CSS allows other values</entry>
</row>
<row>
@@ -703,8 +703,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-style">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-style">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -713,8 +713,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-style">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-style">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -723,8 +723,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-style">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-style">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -733,8 +733,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-left-style">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-left-style">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -743,8 +743,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-right-radius">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-right-radius">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -753,8 +753,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-right-radius">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-right-radius">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -763,8 +763,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-left-radius">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-left-radius">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -773,8 +773,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-left-radius">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-left-radius">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-radius">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -783,8 +783,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>currentColor</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-color">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top-color">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -793,8 +793,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>currentColor</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-color">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right-color">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -803,8 +803,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>currentColor</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-color">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom-color">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -813,8 +813,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>currentColor</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-left-color">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-left-color">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-color">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -823,7 +823,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#the-border-image-source">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#the-border-image-source">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -832,7 +832,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>stretch</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR//css3-background/#the-border-image-repeat">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR//css3-background/#the-border-image-repeat">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -841,7 +841,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>100%</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR//css3-background/#the-border-image-slice">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR//css3-background/#the-border-image-slice">CSS3</ulink></entry>
<entry>a 'four sides' shorthand</entry>
</row>
<row>
@@ -850,7 +850,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>1</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR//css3-background/#the-border-image-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR//css3-background/#the-border-image-width">CSS3</ulink></entry>
<entry>a 'four sides' shorthand</entry>
</row>
@@ -865,77 +865,77 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>borderwidth</entry>
<entry><code>〈length〉{1,4}</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-width">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-width">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-width">CSS3</ulink></entry>
<entry>a 'four sides' shorthand</entry>
</row>
<row>
<entry>borderstyle</entry>
<entry><code>〈border style〉{1,4}</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-style">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-style">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#the-border-style">CSS3</ulink></entry>
<entry>a 'four sides' shorthand</entry>
</row>
<row>
<entry>bordercolor</entry>
<entry><code>〈color〉{1,4}</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#border-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#border-color">CSS3</ulink></entry>
<entry>a 'four sides' shorthand</entry>
</row>
<row>
<entry>bordertop</entry>
<entry><code>〈length〉 || 〈border style〉 || 〈color〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#border-top">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-top">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#border-top">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
<entry>borderleft</entry>
<entry><code>〈length〉 || 〈border style〉 || 〈color〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-left">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#border-left">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-left">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#border-left">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
<entry>borderbottom</entry>
<entry><code>〈length〉 || 〈border style〉 || 〈color〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#border-bottom">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-bottom">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#border-bottom">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
<entry>borderright</entry>
<entry><code>〈length〉 || 〈border style〉 || 〈color〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#border-right">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#border-right">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
<entry>border</entry>
<entry><code>〈length〉 || 〈border style〉 || 〈color〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#border">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/box.html#propdef-border-right">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#border">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
<entry>borderradius</entry>
<entry><code>[ 〈length〉 | 〈percentage〉 ]{1,4} [ / [ 〈length〉 | 〈percentage> ]{1,4} ]?</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#border-radius">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#border-radius">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
<entry>borderimage</entry>
<entry><code>〈border-image-source〉 || 〈border-image-slice〉 [ / 〈border-image-width〉 | / 〈border-image-width〉? / 〈border-image-outset〉 ]? || 〈border-image-repeat〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#border-image">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#border-image">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -961,8 +961,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline-style">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-ui/#outline-style">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline-style">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-ui/#outline-style">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -971,8 +971,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline-width">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-ui/#outline-width">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline-width">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-ui/#outline-width">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -981,8 +981,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>currentColor</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline-color">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-ui/#outline-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline-color">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-ui/#outline-color">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -991,7 +991,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0px</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-ui/#outline-offset">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-ui/#outline-offset">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1041,8 +1041,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>outline</entry>
<entry><code>〈outline-color〉 || 〈outline-style〉 || 〈outline-width〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-ui/#propdef-outline">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#propdef-outline">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-ui/#propdef-outline">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1075,8 +1075,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>rgba(0,0,0,0)</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-color">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#background-color">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-color">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#background-color">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1085,7 +1085,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>border-box</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#background-clip">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#background-clip">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1094,7 +1094,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>padding-box</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#background-origin">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#background-origin">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1103,7 +1103,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>auto</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#background-size">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#background-size">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1112,8 +1112,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-position">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#background-position">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-position">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#background-position">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1122,8 +1122,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>repeat</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-repeat">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#background-repeat">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-repeat">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#background-repeat">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1132,8 +1132,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-image">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#background-image">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background-image">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#background-image">CSS3</ulink></entry>
<entry>not supported: urls without quotes, colors in crossfades</entry>
</row>
<row>
@@ -1151,7 +1151,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-background/#box-shadow">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-background/#box-shadow">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -1165,8 +1165,8 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><para>background</para></entry>
<entry><code>[ 〈bg-layer〉 , ]* 〈final-bg-layer〉</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background">CSS2</ulink>,
<ulink url="http://www.w3.org/TR/css3-background/#background">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-background">CSS2</ulink>,
<ulink url="https://www.w3.org/TR/css3-background/#background">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -1208,7 +1208,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>all</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-transitions/#transition-property">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-transitions/#transition-property">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1217,7 +1217,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0s</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-transitions/#transition-duration">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-transitions/#transition-duration">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1226,7 +1226,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>ease</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-transitions/#transition-timing-function">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-transitions/#transition-timing-function">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1235,7 +1235,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0s</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-transitions/#transition-delay">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-transitions/#transition-delay">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -1249,7 +1249,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>transition</entry>
<entry><code>〈single-transition〉 [ , 〈single-transition〉 ]*</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/css3-transitions/#transition">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-transitions/#transition">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -1277,7 +1277,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-name">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-name">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1286,7 +1286,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0s</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-duration">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-duration">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1295,7 +1295,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>ease</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-timing-function">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-timing-function">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1304,7 +1304,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>1</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-iteration-count">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-iteration-count">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1313,7 +1313,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>normal</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-direction">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-direction">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1322,7 +1322,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>running</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-play-state">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-play-state">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1331,7 +1331,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>0s</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-delay">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-delay">CSS3</ulink></entry>
<entry></entry>
</row>
<row>
@@ -1340,7 +1340,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry><code>none</code></entry>
<entry></entry>
<entry></entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation-fill-mode">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation-fill-mode">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>
@@ -1354,7 +1354,7 @@ We use <literallayout> for syntax productions, and each line is put in a <code>
<entry>animation</entry>
<entry><code>〈singleanimation〉 [ , 〈singleanimation〉]*</code></entry>
<entry>see individual properties</entry>
<entry><ulink url="http://www.w3.org/TR/css3-animations/#animation">CSS3</ulink></entry>
<entry><ulink url="https://www.w3.org/TR/css3-animations/#animation">CSS3</ulink></entry>
<entry></entry>
</row>
</tbody>

View File

@@ -342,81 +342,6 @@ my_widget_init (MyWidget *widget)
</refsect2>
</refsect1>
<refsect1 id="app-paintable-widgets">
<title>App-paintable widgets</title>
<para>
Generally, applications use the pre-defined widgets in GTK+ and
they do not draw extra things on top of them (the exception
being <classname>GtkDrawingArea</classname>). However,
applications may sometimes find it convenient to draw directly
on certain widgets like toplevel windows or event boxes. When
this is the case, GTK+ needs to be told not to overwrite your
drawing afterwards, when the window gets to drawing its default
contents.
</para>
<para>
<classname>GtkWindow</classname> and
<classname>GtkEventBox</classname> are the two widgets that allow
turning off drawing of default contents by calling
<function>gtk_widget_set_app_paintable()</function>. If you call
this function, they will not draw their contents and let you do
it instead.
</para>
<para>
Since the #GtkWidget::draw signal runs user-connected handlers
<emphasis>before</emphasis> the widget's default handler, what
usually happens is this:
</para>
<orderedlist>
<listitem>
<para>
Your own draw handler gets run. It paints something
on the window or the event box.
</para>
</listitem>
<listitem>
<para>
The widget's default draw handler gets run. If
<function>gtk_widget_set_app_paintable()</function> has not
been called to turn off widget drawing (this
is the default), <emphasis>your drawing will be
overwritten</emphasis>. An app paintable widget will not
draw its default contents however and preserve your drawing
instead.
</para>
</listitem>
<listitem>
<para>
The draw handler for the parent class gets run.
Since both <classname>GtkWindow</classname> and
<classname>GtkEventBox</classname> are descendants of
<classname>GtkContainer</classname>, their no-window
children will be asked to draw themselves recursively, as
described in <xref linkend="hierarchical-drawing"/>.
</para>
</listitem>
</orderedlist>
<formalpara>
<title>Summary of app-paintable widgets</title>
<para>
Call <function>gtk_widget_set_app_paintable()</function> if you
intend to draw your own content directly on a
<classname>GtkWindow</classname> and
<classname>GtkEventBox</classname>. You seldom need to draw
on top of other widgets, and
<classname>GtkDrawingArea</classname> ignores this flag, as it
<emphasis>is</emphasis> intended to be drawn on.
</para>
</formalpara>
</refsect1>
</refentry>
<!--

View File

@@ -256,7 +256,7 @@
<example>
<title>Packing buttons with GtkBuilder</title>
<para>Create a new file with the following content named example-4.c.</para>
<para>Create a new file with the following content named example-3.c.</para>
<programlisting><xi:include href="../../../../examples/builder.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
<para>Create a new file with the following content named builder.ui.</para>
<programlisting><xi:include href="../../../../examples/builder.ui" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
@@ -264,7 +264,7 @@
<para>
You can compile the program above with GCC using:
<literallayout>
<literal>gcc `pkg-config --cflags gtk+-3.0` -o example-4 example-4.c `pkg-config --libs gtk+-3.0`</literal>
<literal>gcc `pkg-config --cflags gtk+-3.0` -o example-3 example-3.c `pkg-config --libs gtk+-3.0`</literal>
</literallayout>
</para>
@@ -1072,13 +1072,13 @@ example_app_window_init (ExampleAppWindow *win)
<example id="gtk-getting-started-drawing">
<title>Drawing in response to input</title>
<para>Create a new file with the following content named example-3.c.</para>
<para>Create a new file with the following content named example-4.c.</para>
<programlisting><xi:include href="../../../../examples/drawing.c" parse="text"><xi:fallback>MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting>
</example>
<para>
You can compile the program above with GCC using:
<literallayout>
<literal>gcc `pkg-config --cflags gtk+-3.0` -o example-3 example-3.c `pkg-config --libs gtk+-3.0`</literal>
<literal>gcc `pkg-config --cflags gtk+-3.0` -o example-4 example-4.c `pkg-config --libs gtk+-3.0`</literal>
</literallayout>
</para>
</section>

View File

@@ -12,9 +12,9 @@
<releaseinfo>
This document is for the GTK+ 4 library, version &version;.
The latest versions can be found online at
<ulink role="online-location" url="http://developer.gnome.org/gtk4/">http://developer.gnome.org/gtk4/</ulink>.
<ulink role="online-location" url="https://developer.gnome.org/gtk4/">https://developer.gnome.org/gtk4/</ulink>.
If you are looking for the older GTK+ 3 series of libraries,
see <ulink role="online-location" url="http://developer.gnome.org/gtk3/">http://developer.gnome.org/gtk3/</ulink>.
see <ulink role="online-location" url="https://developer.gnome.org/gtk3/">https://developer.gnome.org/gtk3/</ulink>.
</releaseinfo>
</bookinfo>
@@ -68,6 +68,7 @@
<chapter id="LayoutContainers">
<title>Layout Containers</title>
<xi:include href="xml/gtkbox.xml" />
<xi:include href="xml/gtkcenterbox.xml" />
<xi:include href="xml/gtkgrid.xml" />
<xi:include href="xml/gtkrevealer.xml" />
<xi:include href="xml/gtklistbox.xml" />
@@ -252,7 +253,6 @@
<xi:include href="xml/gtkcalendar.xml" />
<xi:include href="xml/gtkdrawingarea.xml" />
<xi:include href="xml/gtkglarea.xml" />
<xi:include href="xml/gtkeventbox.xml" />
<xi:include href="xml/gtkimcontextsimple.xml" />
<xi:include href="xml/gtkimmulticontext.xml" />
<xi:include href="xml/gtksizegroup.xml" />

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