Compare commits

..

154 Commits

Author SHA1 Message Date
Chun-wei Fan 127685ef22 laguage-names.c: Windows: Look for iso-codes dynamically
Use the internal APIs _gtk_get_localedir() and gtk_get_datadir() to look for
the XML files and translations for iso-codes, instead of using a path defined
at build time, on Windows.
2022-01-06 17:54:37 +08:00
Jordi Mas be81f6b4ab Update Catalan translation 2022-01-06 08:25:29 +01:00
Aleksandr Melman 716e0b97bd Update Russian translation 2022-01-05 11:03:11 +00:00
Matthias Clasen ff862dc926 Merge branch 'wip/smcv/gresource-internal' into 'main'
build: Tell glib-compile-resources to make symbols internal where possible

See merge request GNOME/gtk!4334
2022-01-04 18:58:14 +00:00
Simon McVittie 17c2a1cb4e build: Tell glib-compile-resources to make symbols internal where possible
Partial solution to https://gitlab.gnome.org/GNOME/gtk/-/issues/4598

Signed-off-by: Simon McVittie <smcv@debian.org>
2022-01-04 18:08:22 +00:00
Aleksandr Melman 895e640fd0 Update Russian translation 2022-01-04 17:00:55 +00:00
Emmanuele Bassi e8f5f86ad5 Merge branch 'label-fix-section-link' into 'main'
docs: Fix link to section in GtkLabel

See merge request GNOME/gtk!4333
2022-01-04 15:54:05 +00:00
Marco Melorio 5055b41ee7 docs: Fix link to section in GtkLabel 2022-01-04 16:33:00 +01:00
Matthias Clasen 7efd08ca2e Merge branch 'fix-hc-warning' into 'main'
gdk/display-wayland: Don't bypass portal for theme entries

Closes #4593

See merge request GNOME/gtk!4331
2022-01-04 14:51:05 +00:00
Hugo Carvalho 76b421e064 Update Portuguese translation 2022-01-04 14:12:59 +00:00
Luca Bacci 063e6baa0a Merge branch 'gtk-grab-file-chooser-native-win32' into 'main'
GTK grab for GtkFileChooserNativeWin32

Closes #4582

See merge request GNOME/gtk!4329
2022-01-04 13:59:08 +00:00
Florian Müllner 9e5d412a8b gdk/display-wayland: Don't bypass portal for theme entries
When commit 49589e1da added support for the new high-contrast key,
it missed that the getter should only use the setting directly when
not going through the portal.

https://gitlab.gnome.org/GNOME/gtk/-/issues/4593
2022-01-04 14:58:58 +01:00
Daniel Mustieles fa9b634d8f Updated Spanish translation 2022-01-04 14:38:09 +01:00
Matthias Clasen d76379428d Merge branch 'noexecstack' into 'main'
Make our stack noexec

Closes #4598

See merge request GNOME/gtk!4330
2022-01-04 13:09:39 +00:00
Matthias Clasen 46509b6dd2 Make our stack noexec
The change to use ld and objcopy for resources
had some side-effects: it leaked a few symbols
and made our stack executable. We don't want that.

Use -z nonexecstack and --strip-all to avoid this.

Fixes: #4598
2022-01-04 07:51:56 -05:00
Daniel Mustieles 89dbf9cc81 Updated Spanish translation 2022-01-04 12:18:11 +01:00
Luca Bacci c138aaabf3 Use a GTK grab when showing a modal GtkFileChooserNativeWin32 2022-01-04 10:46:20 +01:00
Yuri Chornoivan 7cef454c86 Update Ukrainian translation 2022-01-03 20:51:23 +00:00
Emmanuele Bassi 5cb8d15505 Merge branch 'fredmorcos-master-patch-48389' into 'main'
Minor doc fix

See merge request GNOME/gtk!4325
2022-01-03 13:34:00 +00:00
Luca Bacci 2aab55983d Merge branch 'wgl-legacy' into 'main'
GSK/GL: Relax check for GL 3.x+ legacy contexts

See merge request GNOME/gtk!4187
2022-01-03 13:11:04 +00:00
Fred Morcos 31714e5c1d Minor doc fix 2022-01-03 10:27:51 +00:00
Luca Bacci 96c351e792 Merge branch 'for-main' into 'main'
For main

See merge request GNOME/gtk!4322
2022-01-03 09:51:10 +00:00
Matthias Clasen edd57004d3 Merge branch 'matthiasc/for-main' into 'main'
fontchooser: Use new hb api

See merge request GNOME/gtk!4323
2022-01-03 02:52:45 +00:00
Matthias Clasen 234d20641c fontbutton: Pass the fontmap to the dialog 2022-01-02 21:37:32 -05:00
Matthias Clasen dd802f21e7 fontchooser: Cosmetics
Use harfbuzz api to format variations and features.
That matches what pango uses to parse them.
2022-01-02 21:37:32 -05:00
Matthias Clasen dbbc990c72 fontchooser: Use new hb api
Use hb_font_get_var_coords_design if we have it.
This should fix our handling of fonts with AVAR.
2022-01-02 21:37:32 -05:00
Matthias Clasen 3a6e772cba Merge branch 'wip/antoniof/expression-autocleanup' into 'main'
gtk: Define the GtkExpression autocleanup func

See merge request GNOME/gtk!4319
2022-01-02 17:49:49 +00:00
António Fernandes c9fa16fcfa gtk: Define the GtkExpression autocleanup func 2022-01-02 17:49:48 +00:00
Luca Bacci 07b04fbea9 Remove some unneeded files from gdk/win32
bdfcursor.c, cursor.bdf and libwntab32x.la
2022-01-02 18:49:44 +01:00
Luca Bacci 1c633cbea2 Add hid.lib to pkg-config file listing 2022-01-02 18:45:17 +01:00
Luca Bacci 2f685d5d2a Remove leftover code dealing with input-only windows 2022-01-02 18:42:33 +01:00
Luca Bacci 0fdf2cc195 Fix compilation with clang
From https://github.com/msys2/MINGW-packages/pull/9509
2022-01-02 18:42:33 +01:00
Luca Bacci 4f7d18a28f Do not use GetProcAddress for FlashWindowEx
It's available since Windows XP
2022-01-02 18:42:32 +01:00
Luca Bacci c77272a7d7 Remove call to ShowOwnedPopups (FALSE) to hide owned windows
This is needed to fully support windows with the property
"destroy-with-parent" set to FALSE.
2022-01-02 18:42:31 +01:00
Luca Bacci 7a1004df73 Remove WM_SYNCPAINT message handler
It was added to work around what seemed to be an OS or graphics
driver issue on Windows XP. The issue was not reproducible on
Windows Vista anyway.

References:
* https://bugzilla.gnome.org/show_bug.cgi?id=153567
* https://gitlab.gnome.org/GNOME/gtk/-/commit/c8fef535
* https://devblogs.microsoft.com/oldnewthing/20120723-00/?p=7073
2022-01-02 18:42:31 +01:00
Matthias Clasen 0e86d2b345 Merge branch 'ebassi/issue-4576' into 'main'
Update the accessible description of MenuButton

Closes #4576

See merge request GNOME/gtk!4317
2022-01-02 01:12:53 +00:00
Matthias Clasen 2441bdb900 Merge branch 'radioactiveman-main-patch-13472' into 'main'
texture: Fix typo in error message

See merge request GNOME/gtk!4311
2022-01-02 00:51:43 +00:00
Matthias Clasen 57679b7b7f Merge branch 'wip-fontchooser-tewaks' into 'main'
Revert "fontchoserwidget: Do our own face filtering"

See merge request GNOME/gtk!4314
2022-01-02 00:50:57 +00:00
Emmanuele Bassi 37063e7a05 Update the accessible description of MenuButton
We update the labelled-by relation, but we never update the described-by
one.

Fixes: #4576
2022-01-02 00:35:53 +00:00
Matthias Clasen 791dc7b9be fontchooser: Speed up fature examples
We were doing unnecessary work here, which could
get really slow with some fonts. Just compute
the reverse charmap once and reuse it.
2022-01-01 15:38:04 -05:00
Matthias Clasen ff24dfb2e7 Revert "fontchooserwidget: Revise handling of named instances"
This reverts commit 2dc56a6e9b.

This wasn't ready yet.
2022-01-01 15:36:29 -05:00
Matthias Clasen 4db60fa5a8 Revert "fontchoserwidget: Do our own face filtering"
This reverts commit b7b6c147f9.

This was premature.
2022-01-01 15:36:27 -05:00
Emmanuele Bassi 5301367630 Merge branch 'bilelmoussaoui/g-i' into 'main'
gdk: add missing nullable annotations

See merge request GNOME/gtk!4310
2022-01-01 20:22:18 +00:00
Bilal Elmoussaoui 9409b7ef7d gtk: mark few GtkPrinterSettings as nullable
Everything that makes use of gtk_printer_settings_get should be nullable
Because the hashtable might not contain the key and there's no default value provided
2022-01-01 19:20:29 +01:00
Bilal Elmoussaoui afeb7f668b gtk: mark few GtkFileChooser functions as nullable
- get_file, if no file is selected returns a NULL
- get_id, if the interface doesn't implement such function returns NULL
2022-01-01 19:11:10 +01:00
Bilal Elmoussaoui 38b8da0f5f gtk: mark gtk_flatten_list_model_get_model_for_item as nullable 2022-01-01 19:07:13 +01:00
Bilal Elmoussaoui d029b62d23 gtk: mark gtk_mount_operation_get_parent as nullable 2022-01-01 19:05:33 +01:00
Bilal Elmoussaoui 1e9bdb4647 gtk: mark gtk_list_box_get_adjustment as nullable
similar to its setter function
2022-01-01 19:05:06 +01:00
Bilal Elmoussaoui 1d72024605 gtk: mark MenuButton::get_label/get_icon_name as nullable 2022-01-01 18:38:56 +01:00
Bilal Elmoussaoui 06570443b7 gtk: mark gtk_icon_view_create_drag_icon as nullable 2022-01-01 18:33:29 +01:00
Bilal Elmoussaoui 77f7caf18d gtk: mark gtk_glarea_get_context as nullable 2022-01-01 18:26:40 +01:00
Thomas Lange 8767ffde2f texture: Fix typo in error message 2022-01-01 17:23:22 +00:00
Bilal Elmoussaoui d58b7fa779 gtk: mark gtk_text_mark_get_buffer as nullable 2022-01-01 18:19:41 +01:00
Bilal Elmoussaoui dcbf3f8879 gtk: mark gtk_lock_button_get_permission as nullable
like the constructor/setter
2022-01-01 18:17:31 +01:00
Bilal Elmoussaoui 30d8c8e17c gtk: mark buildable_get_id as nullable
the vfunc can return a nullable
2022-01-01 18:12:05 +01:00
Bilal Elmoussaoui b803bb5edb gtk: mark MultiSelection::get_model as nullable
the constructor & setter takes a nullable model
2022-01-01 18:04:24 +01:00
Bilal Elmoussaoui 985a39d41f gtk: mark gtk_native_get_for_surface as nullable 2022-01-01 17:59:35 +01:00
Bilal Elmoussaoui f846eec894 gtk: mark gtk_no_selection_get_model nullable
The constructor is nullable so should the getter be
2022-01-01 17:56:07 +01:00
Bilal Elmoussaoui e7fc8ad1f5 gtk: fix PasswordEntry annotation 2022-01-01 17:49:11 +01:00
Bilal Elmoussaoui 95169ad54b gtk: add nullable annotations to PopoverMenuBar/PopoverMenu
The constructor/setter accepts a null as a model so should the getter
2022-01-01 17:47:21 +01:00
Bilal Elmoussaoui ddb2e91a42 gtk: add nullable annotations for Scrollable getters
The adjustment setters takes a nullable and so should the getters be annotated
2022-01-01 17:39:45 +01:00
Bilal Elmoussaoui 90357193c9 gtk: add nullable annotation to gtk_css_section_get_file
The constructor takes a nullable file param
2022-01-01 17:31:38 +01:00
Bilal Elmoussaoui a336fe2850 gdk: add missing nullable annotations 2022-01-01 17:03:10 +01:00
Matthias Clasen fcb8e4cf37 Merge branch 'fontchooser-tweaks' into 'main'
fontchooserwidget: Avoid a crash

See merge request GNOME/gtk!4309
2021-12-31 18:32:49 +00:00
Matthias Clasen b7b6c147f9 fontchoserwidget: Do our own face filtering
Pango may not do this for us, so don't rely on it.
We only show one face with a given name, and we
prefer a variable face over a non-variable one.

The check for variable faces requires new Pango
API that will be in Pango 1.52.
2021-12-31 09:58:26 -05:00
Emmanuele Bassi 35ee82ca07 Merge branch 'wip/baedert/for-master' into 'main'
baseline = -1 means no baseline

Closes #4385

See merge request GNOME/gtk!4307
2021-12-31 14:55:20 +00:00
Matthias Clasen 2dc56a6e9b fontchooserwidget: Revise handling of named instances
Allowing to tweak the axes of named instances does
not do any harm. If we don't, we have to worry that
we need at least one non-named-instance in the face
list, and make it more obvious how to pick it out.
2021-12-31 09:50:47 -05:00
Matthias Clasen e12ef76de5 fontchooserwidget: Avoid a crash
languages may be NULL, we need to be more careful here.
2021-12-31 09:49:40 -05:00
Matthias Clasen 536b05e35b maplistmodel: Cosmetics 2021-12-31 09:48:34 -05:00
Timm Bäder 1354854d23 inspector: Fix coding style
ffs
2021-12-31 14:41:35 +01:00
Timm Bäder 2b062d60f2 baseline = -1 means no baseline
Fixes #4385
2021-12-31 13:08:01 +01:00
Matthias Clasen c8bdb4c7fb Merge branch 'fontchooser-cleanups' into 'main'
fontchooser: Stop using pangofc api

See merge request GNOME/gtk!4306
2021-12-31 04:30:04 +00:00
Matthias Clasen 80328e8a4f fontchooser: Stop using pangofc api
Pango now has backend-independent api for all
we need, so we can drop all the ifdefs.
2021-12-30 22:52:52 -05:00
Emmanuele Bassi 1138e3770b Merge branch 'bilelmoussaoui/g-i' into 'main'
g-i: add missing nullable annotation

See merge request GNOME/gtk!4304
2021-12-30 17:12:59 +00:00
Bilal Elmoussaoui ec58013b22 g-i: add missing nullable annotation
the constructor takes a nullable expression parameter, so should the getter be
2021-12-30 16:52:53 +00:00
Matthias Clasen 70cb61fb71 4.6.0 2021-12-30 10:31:52 -05:00
Yuri Chornoivan 8e6a0ec23d Update Ukrainian translation 2021-12-29 22:17:32 +00:00
Matthias Clasen e2ab334636 Merge branch 'doc-window' into 'main'
Document built-in actions on GtkWindow

See merge request GNOME/gtk!4297
2021-12-29 17:23:16 +00:00
Matthias Clasen dd0effe957 Merge branch 'wip/chergert/4575-fix-texthistory-selection' into 'main'
testsuite: ignore texthistory selection on delete/backspace

Closes #4575

See merge request GNOME/gtk!4287
2021-12-29 14:58:53 +00:00
Hofer-Julian ac210c1765 docs: Add missing star to block comment 2021-12-29 15:46:59 +01:00
Hofer-Julian c58e48e648 doc: Fix docs of window.minimize 2021-12-29 15:45:44 +01:00
Hofer-Julian acdadab617 docs: Document built-in actions on GtkWindow 2021-12-29 15:45:43 +01:00
Matthias Clasen aa19194f7b Merge branch 'wip/exalm/inspector' into 'main'
inspector: Register extension on startup

See merge request GNOME/gtk!4296
2021-12-29 14:38:28 +00:00
Matthias Clasen 9319a6e39b Merge branch 'matthiasc/for-main' into 'main'
tests: Make fontchooser test build on macOS

See merge request GNOME/gtk!4300
2021-12-29 14:34:26 +00:00
Matthias Clasen b41206abab tests: Make fontchooser test build on macOS
Not sure what changed here, but we want to
be able to build this without fontconfig too.
2021-12-29 09:15:26 -05:00
Matthias Clasen 07c3dc6b6f Merge branch 'nullable' into 'main'
popover: Add missing nullable annotation

Closes #4556

See merge request GNOME/gtk!4295
2021-12-29 00:28:09 +00:00
Matthias Clasen fa71a2a993 Merge branch 'wip/baedert/for-master' into 'main'
application demo: Resolve a keyboard shortcut conflict

See merge request GNOME/gtk!4290
2021-12-29 00:24:46 +00:00
Alexander Mikhaylenko b997d1e892 inspector: Register extension on startup 2021-12-29 04:42:51 +05:00
Alexander Mikhaylenko 4b71fba540 Revert "inspector: Export gtk_inspector_init"
This reverts commit 3f5107cea5.
2021-12-29 04:12:16 +05:00
Ian Douglas Scott 48d39c0a57 popover: Add missing nullable annotation
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/4556.

Looks like the other `Popover` methods are have correct nullable
annotations.
2021-12-28 09:43:06 -08:00
Hugo Carvalho 0aad053507 Update Portuguese translation 2021-12-27 22:53:20 +00:00
Matthias Clasen 6ed14b2a5f Merge branch 'm-shinder-master-patch-90567' into 'main'
gdk_content_provider_get_value() argument should have 'out' direction

See merge request GNOME/gtk!4283
2021-12-27 15:08:48 +00:00
Matthias Clasen c7df5ef957 Merge branch 'get-key-capture-widget-nullable' into 'main'
GtkSearchBar - Mark get_key_capture_widget() return value as nullable

See merge request GNOME/gtk!4286
2021-12-27 15:06:56 +00:00
Yuri Chornoivan a9013febcf Update Ukrainian translation 2021-12-27 14:08:03 +00:00
Benjamin Otte 815c430ba1 Merge branch 'wip/otte/for-main' into 'main'
inspector: Add dnd inspection support

See merge request GNOME/gtk!4289
2021-12-27 13:54:27 +00:00
Timm Bäder e94d5bf006 applicationwindow: Don't pass for_size < -1 to measure()
If the application window is measured with for_size -1 horizontally,
this code clearly passes something lower to the parent class measure()
implementation. Only subtract the menubar_height if we're passed a
for_size > -1.
2021-12-27 12:15:02 +01:00
Timm Bäder a00480f4a1 application demo: Resolve a keyboard shortcut conflict
There were two menu entries side-by-side with the same keyboard shortcut
2021-12-27 10:02:03 +01:00
Benjamin Otte 6da952100c inspector: Add dnd inspection support
This has lots of issues:
 * It randomly crashes when data is loading while the dnd goes away.
 * The data gets randomly reset at the wrong time
 * Can't scroll the window on Wayland
 * ...

But it's better than nothing, so better get it committed.
2021-12-27 05:59:16 +01:00
Benjamin Otte df8588e9b7 Merge branch 'wip/otte/for-main' into 'main'
widget: Don't queue an allocate on a nonexisting parent

See merge request GNOME/gtk!4288
2021-12-26 23:20:34 +00:00
Benjamin Otte fce9b35e4d css: Don't crash on invalid rotate3d() 2021-12-26 22:58:09 +01:00
m-shinder 6fd4421add Merge branch 'main' into 'm-shinder-master-patch-90567'
# Conflicts:
#   NEWS
2021-12-26 21:20:33 +00:00
Benjamin Otte 7149bfd100 widget: Don't queue an allocate on a nonexisting parent
No test, no idea how to trigger this reliably.
2021-12-26 22:17:54 +01:00
Christian Hergert 344ad0355e textview: scroll insert onscreen after undo/redo
After performing an action such as undo/redo, we need to actually scroll
to the position where the operation occurred.

I do note that the scroll here seems to often get invalidated if it is
pages away, and we never make the full scroll. But I've seen this all over
the place elsewhere too and that needs to be handled, most likely, as a
more comprehensive fix for scrolling during line validation.

Related #4575
2021-12-26 12:56:42 -08:00
Christian Hergert e7871fbc43 texthistory: always track selection bounds
It's cheap to store the selection position, so always set it even if we
are in a user section. Otherwise, we risk not having the right position
when starting a delete action within a begin_user_action(),
end_user_action() pair.

Related #4575
2021-12-26 12:47:45 -08:00
Christian Hergert 99d8dd751e testsuite: add failing test for delete selection
This adds a test to expose the failure of #4575 which results in the
selection being incorrect when performing a delete as we are likely
already in a begin_user_action()/end_user_action() pair.

Related #4575
2021-12-26 12:46:16 -08:00
Christian Hergert 22b1abb36d testsuite: ignore texthistory selection on delete/backspace
We don't need to apply these here, as it will clear the selection which is
needed for the undo. Otherwise we won't be able to test that we end up at
the right selection afterwards.
2021-12-26 12:43:22 -08:00
Sebastian Dröge aa289d1023 GtkSearchBar - Mark get_key_capture_widget() return value as nullable
The setter allows setting NULL so this can clearly also return NULL
under normal circumstances.

Same for the corresponding API in GtkSearchEntry.
2021-12-26 11:06:34 +02:00
Emmanuele Bassi ef51e02767 Merge branch 'ebassi/build-fixes' into 'main'
build: Replace source_root()

See merge request GNOME/gtk!4281
2021-12-25 17:26:06 +00:00
Benjamin Otte 7118127139 Merge branch 'wip/otte/gles' into 'main'
Fix GLES

Closes #4571

See merge request GNOME/gtk!4285
2021-12-25 15:34:01 +00:00
Benjamin Otte 2ce2afa036 gles: Be picky abpout glGetFramebufferAttachmentParameter()
This function does not at all work like in OpenGL - if it works at all.
So make it behave accordingly.

Fixes #4571
2021-12-25 15:07:44 +01:00
Benjamin Otte 5803dd765d gles: glGetTexLevelParameter() isn't supported 2021-12-25 15:07:44 +01:00
Benjamin Otte 6a310b5069 gles: GLES 2 doesn't have glDrawBuffers()
So don't call it.
2021-12-25 15:07:44 +01:00
Benjamin Otte 2caab68be9 gl: Change gdk_gl_context_check_version()
Instead of just passing major/minor, pass them twice, once for GL and
once for GLES. This way, we don't need to check for GL and GLES
separately.

If something is supported unconditionally, passing 0/0 works fine.

That said, I'd like to group the arguments somehow, because otherwise
it's just a confusing list of numbers - but I have no idea how to do
that.
2021-12-25 15:07:44 +01:00
Benjamin Otte 4e2dbc1258 glcontext: Use different log levels for GL debug
We want critical GL debug messages to be critical, so that the testsuite
sudokus itself when they appear.

This is relevant in particular for GLES warnings in the GLES runner,
because its warnings can cause crashes on GL drivers less forgiving than
Mesa.

Related: #4571
2021-12-25 15:07:44 +01:00
Emmanuele Bassi 40eca1a68e Apply 1 suggestion(s) to 1 file(s) 2021-12-25 13:29:07 +00:00
m-shinder 98f937ba15 Fix: Set direction for value parameter 2021-12-25 10:04:43 +00:00
Emmanuele Bassi a70988ecd5 build: Remove deprecated get_pkgconfig_variable()
Replace it with `get_variable(pkgconfig:...)`.
2021-12-24 15:55:26 +00:00
Emmanuele Bassi 6f2ff620bd build: Replace deprecated 'gui_app'
Use `win_subsystem: 'windows'` instead.
2021-12-24 15:51:11 +00:00
Emmanuele Bassi bd772610b1 build: Replace source_root()
Use project_source_root(), which replaces the deprecated source_root().
2021-12-24 15:48:06 +00:00
Matthias Clasen de42b5bfae sizerequest: Remove critical warning for now
At last as long as widgets like GtkFlowBox and
GtkGrid still trigger this, it is not a great
idea to have this warning in a stable release.
So remove it for 4.6
2021-12-23 16:59:26 -05:00
Benjamin Otte fcdd5173bd Merge branch 'wip/otte/for-main' into 'main'
gl: Clear current when destroying current's surface

Closes #4554

See merge request GNOME/gtk!4279
2021-12-22 19:45:53 +00:00
Benjamin Otte c419799313 gl: Clear current when destroying current's surface
When destroying the EGLSurface or GLXDrawable of a GdkSurface, make sure
the current context is not still bound to it.

If it is, clear the current context.

Fixes #4554
2021-12-22 20:00:52 +01:00
Matthias Clasen c5973a630b Merge branch 'wip/baedert/for-master' into 'main'
label: Fix get_natural_wrap_mode() precondition check

See merge request GNOME/gtk!4278
2021-12-22 16:54:18 +00:00
Timm Bäder e5a88b64b1 label: Fix get_natural_wrap_mode() precondition check 2021-12-22 17:38:33 +01:00
Hugo Carvalho 74f58a49b9 Update Portuguese translation 2021-12-22 14:05:50 +00:00
Yuri Chornoivan cff9d9f5eb Update Ukrainian translation 2021-12-22 12:52:52 +00:00
Timm Bäder ddd64f2918 Merge branch 'fix_typos' into 'main'
Fix minor typo

See merge request GNOME/gtk!4275
2021-12-22 08:08:38 +00:00
Yuri Chornoivan 9f06f53a59 Fix minor typo 2021-12-21 23:42:12 +02:00
Yuri Chornoivan 4c00d7a306 Update Ukrainian translation 2021-12-21 21:36:53 +00:00
Matthias Clasen 88726e12f7 Merge branch 'high-contrast-4' into 'main'
gdk/wayland: Support new `high-contrast` key

See merge request GNOME/gtk!4271
2021-12-21 19:20:34 +00:00
Matthias Clasen 248bb148af Merge branch 'discrete-scroll' into 'main'
Don't keep discrete scroll events in the queue

See merge request GNOME/gtk!4274
2021-12-21 18:22:53 +00:00
Florian Müllner 49589e1da1 gdk/wayland: Support new high-contrast key
We now have a boolean setting that determines whether the high-contrast
theme should be used. Support it by automatically setting the existing
`gtk-theme-name` and `gtk-icon-theme-name` properties when enabled.

With that, it is no longer necessary to change the regular theme settings
for high-contrast, so toggling between high-contrast and a non-default
theme finally works reliably.
2021-12-21 14:02:02 +01:00
Matthias Clasen 552267b93d Don't keep discrete scroll events in the queue
We are not going to compress those anyway.
2021-12-20 14:51:37 -05:00
Matthias Clasen 855357f871 Merge branch 'testsuite-introspection-extend-envvars' into 'main'
testsuite: introspection: Do not override environment variables.

See merge request GNOME/gtk!4268
2021-12-20 19:08:59 +00:00
Benjamin Otte c83cba2322 Merge branch 'wip/otte/diff' into 'main'
Make render node diffing not slow

Closes #4560 and #2396

See merge request GNOME/gtk!4269
2021-12-20 19:01:52 +00:00
Benjamin Otte 20dcc31d19 rendernode: Limit diff region
Limit the diff region to 30 rectangles (randomly chosen because it
looked big enough to not trigger by accident and small enough to not
cause performance issues).

If the diff region gets more complicated, we abort to the parent node
and use its bounds as the diff region instead and then continue diffing
the rest of the node tree.

Fixes: #4560
Fixes: #2396
2021-12-20 18:40:02 +01:00
Maxim Cournoyer 29e6cc5808 testsuite: introspection: Do not override environment variables.
Functional package managers such as GNU Guix rely on environment
variables such as GI_TYPELIB_PATH to discover the system libraries and
resources; extend rather than override them.

* testsuite/introspection/meson.build (env): New variable that extends
rather than override the GI_TYPELIB_PATH and LD_PRELOAD environment
variables.
(api): Use the above as the value of the 'env' keyword argument.
2021-12-20 11:22:41 -05:00
Benjamin Otte 4e6ee28bcb gsk: Allow diffing code to abort
Now the vfuncs can decide they don't want to diff anymore, not just the
actual diff function.
2021-12-20 17:08:15 +01:00
Hugo Carvalho 4b3247576a Update Portuguese translation 2021-12-20 16:07:31 +00:00
Matthias Clasen 69edf17c2a Merge branch 'wip/otte/wrapping-is-natural' into 'main'
label: Add gtk_label_set_natural_wrap_mode()

See merge request GNOME/gtk!4267
2021-12-20 15:49:05 +00:00
Matthias Clasen d91a4ad1dd Merge branch 'progressbar-queue-allocate' into 'main'
progressbar: Queue allocate when setting "inverted"

See merge request GNOME/gtk!4264
2021-12-20 15:45:36 +00:00
Matthias Clasen 9b750ef69f Merge branch 'ebassi/find-gi' into 'main'
build: Check for the gi python module

See merge request GNOME/gtk!4266
2021-12-20 15:41:51 +00:00
Fran Dieguez 0bf22ee3ce Update Galician translation 2021-12-20 08:50:36 +00:00
Benjamin Otte 981ed22dff label: Add gtk_label_set_natural_wrap_mode()
Allows influencing natural size requests so that labels can request more
width than necessary for a given height.

Related: !4245
Related: #4535
2021-12-20 02:28:37 +01:00
Emmanuele Bassi d40321ef63 ci: Add pygobject to the MSYS2 job 2021-12-19 16:26:37 +00:00
Emmanuele Bassi c94996e8e8 build: Check for the gi python module
The introspection tests depend on the pygobject module, but we currently
are not checking if it's available at configuration time, which means we
can get build failures like:

> ModuleNotFoundError: No module named 'gi'

when running the test suite.
2021-12-19 16:06:49 +00:00
Marco Melorio 4b19dd46dd progressbar: Queue allocate when setting "inverted" 2021-12-18 18:45:28 +01:00
Piotr Drąg 942e841cbc Update POTFILES.skip 2021-12-18 13:36:19 +01:00
Yuri Chornoivan e0a595273a Update Ukrainian translation 2021-12-18 06:29:43 +00:00
Matthias Clasen 92ca52822c Merge branch 'meson-msvc-cleanup' into 'main'
Remove Visual Studio 2013 bits from Meson files

See merge request GNOME/gtk!4249
2021-12-17 12:58:01 +00:00
Hugo Carvalho f89dbce93c Update Portuguese translation 2021-12-17 12:41:33 +00:00
Chun-wei Fan e2b4108377 Revert "gtk/meson.build: Fix linking on Visual Studio 2013"
We now require a Pango version that requires Visual Studio 2015 or later to
build, and non-UCRT-based (VS2013) binaries may not bode well with
UCRT-based binaries (VS2015+). Drop the support for VS2013 as a result.

This reverts commit e208e0e07886248d4d86118aa5591c9882f0ed5c.
2021-12-14 10:29:28 +08:00
Chun-wei Fan a619e8af4a gskglcompiler.c: Relax check for GL 3.x+ legacy contexts
On Windows with nVidia drivers at least, when we create a legacy context
via wglCreateContext(), we may still get a (W)GL 4.x context.  Allow
such contexts to also use GLSL version 130 instead of 110, so that
things do continue to work.
2021-12-01 17:29:02 +08:00
Matthias Clasen 0579220546 Mention 'main' branch in NEWS
The default development branch is now `main`.
This commit only exists on `master` to point people
towards that.
2021-11-29 18:13:06 -05:00
105 changed files with 9163 additions and 14288 deletions
+2 -1
View File
@@ -31,7 +31,8 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-pango \
mingw-w64-$MSYS2_ARCH-fribidi \
mingw-w64-$MSYS2_ARCH-gst-plugins-bad \
mingw-w64-$MSYS2_ARCH-shared-mime-info
mingw-w64-$MSYS2_ARCH-shared-mime-info \
mingw-w64-$MSYS2_ARCH-python-gobject
mkdir -p _ccache
export CCACHE_BASEDIR="$(pwd)"
+36
View File
@@ -1,3 +1,39 @@
Overview of Changes
===================
* GtkProgressBar:
- Fix handling of "inverted"
* GtkLabel:
- Add a "natural wrap mode" property to influence how
natural width is determined
* GtkTextView
- Scroll insertion on-screen after undo / redo
* gsk:
- Abort region diffing when changes are too complex
* gdk:
- Avoid compressing discrete scroll events
- Fix problems with hiding windows
- Improve GL and GLES version checks
* Wayland:
- Support new high-contrast setting
* Inspector:
- Add DND inspection support
* build:
- Avoid deprecated meson apis
* Translation updates
Galician
Portuguese
Ukrainian
Overview of Changes in 4.5.1, 16-12-2021
========================================
+1 -1
View File
@@ -17,7 +17,7 @@ executable('gtk4-constraint-editor',
c_args: common_cflags,
dependencies: libgtk_dep,
include_directories: confinc,
gui_app: true,
win_subsystem: 'windows',
link_args: extra_demo_ldflags,
install: false,
)
+1 -1
View File
@@ -21,7 +21,7 @@
<item>
<attribute name="label" translatable="yes">Save _As...</attribute>
<attribute name="action">app.save-as</attribute>
<attribute name="accel">&lt;Control&gt;s</attribute>
<attribute name="accel">&lt;Control&gt;&lt;Shift&gt;s</attribute>
</item>
</section>
<section>
+2 -2
View File
@@ -242,7 +242,7 @@ executable('gtk4-demo',
c_args: gtkdemo_args + demo_cflags,
dependencies: gtkdemo_deps,
include_directories: confinc,
gui_app: true,
win_subsystem: 'windows',
link_args: extra_demo_ldflags,
install: true,
)
@@ -252,7 +252,7 @@ executable('gtk4-demo-application',
c_args: gtkdemo_args + common_cflags,
dependencies: gtkdemo_deps,
include_directories: confinc,
gui_app: true,
win_subsystem: 'windows',
link_args: extra_demo_ldflags,
install: true,
)
+1 -1
View File
@@ -16,7 +16,7 @@ executable('gtk4-icon-browser',
c_args: common_cflags,
dependencies: [ libgtk_dep, demo_conf_h ],
include_directories: confinc,
gui_app: true,
win_subsystem: 'windows',
link_args: extra_demo_ldflags,
install: true,
)
+1 -1
View File
@@ -3,7 +3,7 @@ demo_profile = get_option('profile')
demo_conf_h = declare_dependency(
sources: custom_target('demo-header',
command: [gen_demo_header, meson.source_root(), demo_profile],
command: [gen_demo_header, meson.project_source_root(), demo_profile],
capture: true,
output: 'demo_conf.h',
build_by_default: true,
+1 -1
View File
@@ -17,7 +17,7 @@ executable('gtk4-node-editor',
c_args: [
'-DNODE_EDITOR_SOURCE_DIR="@0@/../../testsuite/gsk/compare/"'.format(meson.current_source_dir())
] + common_cflags,
gui_app: true,
win_subsystem: 'windows',
link_args: extra_demo_ldflags,
install: false,
)
+1 -1
View File
@@ -3,7 +3,7 @@ executable('gtk4-print-editor',
c_args: common_cflags,
dependencies: [ libgtk_dep, demo_conf_h ],
include_directories: confinc,
gui_app: true,
win_subsystem: 'windows',
link_args: extra_demo_ldflags,
install: true,
)
+1 -1
View File
@@ -74,7 +74,7 @@ executable('gtk4-widget-factory',
c_args: common_cflags,
dependencies: [ libgtk_dep, demo_conf_h ],
include_directories: confinc,
gui_app: true,
win_subsystem: 'windows',
link_args: extra_demo_ldflags,
install: true,
)
+1 -1
View File
@@ -264,7 +264,7 @@ gdk_content_deserializer_get_priority (GdkContentDeserializer *deserializer)
*
* This is the `GCancellable` that was passed to [func@Gdk.content_deserialize_async].
*
* Returns: (transfer none): the cancellable for the current operation
* Returns: (transfer none) (nullable): the cancellable for the current operation
*/
GCancellable *
gdk_content_deserializer_get_cancellable (GdkContentDeserializer *deserializer)
+1 -1
View File
@@ -342,7 +342,7 @@ gdk_content_provider_write_mime_type_finish (GdkContentProvider *provider,
/**
* gdk_content_provider_get_value:
* @provider: a `GdkContentProvider`
* @value: the `GValue` to fill
* @value: (out caller-allocates): the `GValue` to fill
* @error: a `GError` location to store the error occurring
*
* Gets the contents of @provider stored in @value.
+1 -1
View File
@@ -270,7 +270,7 @@ gdk_content_serializer_get_priority (GdkContentSerializer *serializer)
*
* This is the `GCancellable` that was passed to [func@content_serialize_async].
*
* Returns: (transfer none): the cancellable for the current operation
* Returns: (transfer none) (nullable): the cancellable for the current operation
*/
GCancellable *
gdk_content_serializer_get_cancellable (GdkContentSerializer *serializer)
+1 -2
View File
@@ -47,8 +47,7 @@
* Cursors by themselves are not very interesting: they must be bound to a
* window for users to see them. This is done with [method@Gdk.Surface.set_cursor]
* or [method@Gdk.Surface.set_device_cursor]. Applications will typically
* use higher-level GTK functions such as [method@Gtk.Widget.set_cursor]`
* instead.
* use higher-level GTK functions such as [method@Gtk.Widget.set_cursor] instead.
*
* Cursors are not bound to a given [class@Gdk.Display], so they can be shared.
* However, the appearance of cursors may vary when used on different
+3 -2
View File
@@ -522,7 +522,8 @@ _gdk_event_queue_find_first (GdkDisplay *display)
if (pending_motion)
return pending_motion;
if ((event->event_type == GDK_MOTION_NOTIFY || event->event_type == GDK_SCROLL) &&
if ((event->event_type == GDK_MOTION_NOTIFY ||
(event->event_type == GDK_SCROLL && gdk_scroll_event_get_direction (event) == GDK_SCROLL_SMOOTH)) &&
(event->flags & GDK_EVENT_FLUSHED) == 0)
pending_motion = tmp_list;
else
@@ -1224,7 +1225,7 @@ gdk_event_get_event_type (GdkEvent *event)
*
* Extracts the surface associated with an event.
*
* Returns: (transfer none): The `GdkSurface` associated with the event
* Returns: (transfer none) (nullable): The `GdkSurface` associated with the event
*/
GdkSurface *
gdk_event_get_surface (GdkEvent *event)
+69 -11
View File
@@ -151,6 +151,12 @@ unmask_context (MaskedContext *mask)
return GDK_GL_CONTEXT (GSIZE_TO_POINTER (GPOINTER_TO_SIZE (mask) & ~(gsize) 1));
}
static inline gboolean
mask_is_surfaceless (MaskedContext *mask)
{
return GPOINTER_TO_SIZE (mask) & (gsize) 1;
}
static void
unref_unmasked (gpointer data)
{
@@ -574,8 +580,8 @@ gdk_gl_context_real_begin_frame (GdkDrawContext *draw_context,
glViewport (0, 0, ww, wh);
#ifdef HAVE_EGL
if (priv->egl_context)
glDrawBuffers (1, (GLenum[1]) { GL_BACK_LEFT });
if (priv->egl_context && gdk_gl_context_check_version (context, 0, 0, 3, 0))
glDrawBuffers (1, (GLenum[1]) { gdk_gl_context_get_use_es (context) ? GL_BACK : GL_BACK_LEFT });
#endif
}
@@ -997,16 +1003,33 @@ gdk_gl_context_set_required_version (GdkGLContext *context,
}
gboolean
gdk_gl_context_check_version (GdkGLContext *context,
int required_major,
int required_minor)
gdk_gl_context_check_version (GdkGLContext *self,
int required_gl_major,
int required_gl_minor,
int required_gles_major,
int required_gles_minor)
{
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (self);
g_return_val_if_fail (GDK_IS_GL_CONTEXT (context), FALSE);
g_return_val_if_fail (required_minor < 10, FALSE);
g_return_val_if_fail (GDK_IS_GL_CONTEXT (self), FALSE);
g_return_val_if_fail (required_gl_minor < 10, FALSE);
g_return_val_if_fail (required_gles_minor < 10, FALSE);
return priv->gl_version >= required_major * 10 + required_minor;
if (!gdk_gl_context_is_realized (self))
return FALSE;
switch (priv->api)
{
case GDK_GL_API_GL:
return priv->gl_version >= required_gl_major * 10 + required_gl_minor;
case GDK_GL_API_GLES:
return priv->gl_version >= required_gles_major * 10 + required_gles_minor;
default:
g_return_val_if_reached (FALSE);
}
}
/**
@@ -1323,6 +1346,7 @@ gl_debug_message_callback (GLenum source,
const char *message_source;
const char *message_type;
const char *message_severity;
GLogLevelFlags log_level;
if (severity == GL_DEBUG_SEVERITY_NOTIFICATION)
return;
@@ -1384,22 +1408,31 @@ gl_debug_message_callback (GLenum source,
{
case GL_DEBUG_SEVERITY_HIGH:
message_severity = "High";
log_level = G_LOG_LEVEL_CRITICAL;
break;
case GL_DEBUG_SEVERITY_MEDIUM:
message_severity = "Medium";
log_level = G_LOG_LEVEL_WARNING;
break;
case GL_DEBUG_SEVERITY_LOW:
message_severity = "Low";
log_level = G_LOG_LEVEL_MESSAGE;
break;
case GL_DEBUG_SEVERITY_NOTIFICATION:
message_severity = "Notification";
log_level = G_LOG_LEVEL_INFO;
break;
default:
message_severity = "Unknown";
log_level = G_LOG_LEVEL_MESSAGE;
}
g_warning ("OPENGL:\n Source: %s\n Type: %s\n Severity: %s\n Message: %s",
message_source, message_type, message_severity, message);
/* There's no higher level function taking a log level argument... */
g_log_structured_standard (G_LOG_DOMAIN, log_level,
__FILE__, G_STRINGIFY (__LINE__),
G_STRFUNC,
"OPENGL:\n Source: %s\n Type: %s\n Severity: %s\n Message: %s",
message_source, message_type, message_severity, message);
}
/**
@@ -1655,6 +1688,31 @@ gdk_gl_context_clear_current (void)
}
}
/*<private>
* gdk_gl_context_clear_current_if_surface:
* @surface: surface to clear for
*
* Does a gdk_gl_context_clear_current() if the current context is attached
* to @surface, leaves the current context alone otherwise.
**/
void
gdk_gl_context_clear_current_if_surface (GdkSurface *surface)
{
MaskedContext *current;
current = g_private_get (&thread_current_context);
if (current != NULL && !mask_is_surfaceless (current))
{
GdkGLContext *context = unmask_context (current);
if (gdk_gl_context_get_surface (context) != surface)
return;
if (GDK_GL_CONTEXT_GET_CLASS (context)->clear_current (context))
g_private_replace (&thread_current_context, NULL);
}
}
/**
* gdk_gl_context_get_current:
*
+6 -2
View File
@@ -99,6 +99,8 @@ gboolean gdk_gl_backend_can_be_used (GdkGLBackend
GError **error);
void gdk_gl_backend_use (GdkGLBackend backend_type);
void gdk_gl_context_clear_current_if_surface (GdkSurface *surface);
GdkGLContext * gdk_gl_context_new (GdkDisplay *display,
GdkSurface *surface);
@@ -109,8 +111,10 @@ void gdk_gl_context_set_is_legacy (GdkGLContext
gboolean is_legacy);
gboolean gdk_gl_context_check_version (GdkGLContext *context,
int required_major,
int required_minor);
int required_gl_major,
int required_gl_minor,
int required_gles_major,
int required_gles_minor);
gboolean gdk_gl_context_has_unpack_subimage (GdkGLContext *context);
void gdk_gl_context_push_debug_group (GdkGLContext *context,
+5 -2
View File
@@ -21,6 +21,7 @@
#include "gdkgltextureprivate.h"
#include "gdkdisplayprivate.h"
#include "gdkglcontextprivate.h"
#include "gdkmemoryformatprivate.h"
#include "gdkmemorytextureprivate.h"
#include "gdktextureprivate.h"
@@ -305,9 +306,11 @@ gdk_gl_texture_determine_format (GdkGLTexture *self)
GLint active_texture;
GLint internal_format;
if (self->context != gdk_gl_context_get_current ())
/* Abort if somebody else is GL-ing here... */
if (self->context != gdk_gl_context_get_current () ||
/* ... or glGetTexLevelParameter() isn't supported */
!gdk_gl_context_check_version (self->context, 0, 0, 3, 1))
{
/* Somebody else is GL-ing here, abort! */
texture->format = GDK_MEMORY_DEFAULT;
return;
}
+1 -1
View File
@@ -187,7 +187,7 @@ gdk_popup_get_rect_anchor (GdkPopup *popup)
*
* Returns the parent surface of a popup.
*
* Returns: (transfer none): the parent surface
* Returns: (transfer none) (nullable): the parent surface
*/
GdkSurface *
gdk_popup_get_parent (GdkPopup *popup)
+2
View File
@@ -1095,6 +1095,7 @@ gdk_surface_set_egl_native_window (GdkSurface *self,
if (priv->egl_surface != NULL)
{
gdk_gl_context_clear_current_if_surface (self);
eglDestroySurface (gdk_surface_get_display (self), priv->egl_surface);
priv->egl_surface = NULL;
}
@@ -1123,6 +1124,7 @@ gdk_surface_ensure_egl_surface (GdkSurface *self,
priv->egl_surface != NULL &&
gdk_display_get_egl_config_high_depth (display) != gdk_display_get_egl_config (display))
{
gdk_gl_context_clear_current_if_surface (self);
eglDestroySurface (gdk_surface_get_display (self), priv->egl_surface);
priv->egl_surface = NULL;
}
+1 -1
View File
@@ -454,7 +454,7 @@ gdk_texture_new_from_resource (const char *resource_path)
texture = NULL;
if (texture == NULL)
g_error ("Resource path %s s not a valid image: %s", resource_path, error->message);
g_error ("Resource path %s is not a valid image: %s", resource_path, error->message);
return texture;
}
+43
View File
@@ -1662,6 +1662,7 @@ static TranslationEntry translations[] = {
{ FALSE, "org.gnome.desktop.wm.preferences", "action-middle-click-titlebar", "gtk-titlebar-middle-click", G_TYPE_STRING, { .s = "none" } },
{ FALSE, "org.gnome.desktop.wm.preferences", "action-right-click-titlebar", "gtk-titlebar-right-click", G_TYPE_STRING, { .s = "menu" } },
{ FALSE, "org.gnome.desktop.a11y", "always-show-text-caret", "gtk-keynav-use-caret", G_TYPE_BOOLEAN, { .b = FALSE } },
{ FALSE, "org.gnome.desktop.a11y.interface", "high-contrast", "high-contast", G_TYPE_NONE, { .b = FALSE } },
/* Note, this setting doesn't exist, the portal and gsd fake it */
{ FALSE, "org.gnome.fontconfig", "serial", "gtk-fontconfig-timestamp", G_TYPE_NONE, { .i = 0 } },
};
@@ -1711,6 +1712,13 @@ find_translation_entry_by_setting (const char *setting)
return NULL;
}
static void
high_contrast_changed (GdkDisplay *display)
{
gdk_display_setting_changed (display, "gtk-theme-name");
gdk_display_setting_changed (display, "gtk-icon-theme-name");
}
static void
settings_changed (GSettings *settings,
const char *key,
@@ -1724,6 +1732,8 @@ settings_changed (GSettings *settings,
{
if (entry->type != G_TYPE_NONE)
gdk_display_setting_changed (display, entry->setting);
else if (strcmp (key, "high-contrast") == 0)
high_contrast_changed (display);
else
update_xft_settings (display);
}
@@ -2090,6 +2100,36 @@ set_decoration_layout_from_entry (GdkDisplay *display,
}
}
static void
set_theme_from_entry (GdkDisplay *display,
TranslationEntry *entry,
GValue *value)
{
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
GSettings *settings = NULL;
GSettingsSchema *schema = NULL;
gboolean hc = FALSE;
if (display_wayland->settings_portal == NULL)
{
settings = (GSettings *)g_hash_table_lookup (display_wayland->settings,
"org.gnome.desktop.a11y.interface");
}
if (settings)
g_object_get (settings, "settings-schema", &schema, NULL);
if (schema && g_settings_schema_has_key (schema, "high-contrast"))
hc = g_settings_get_boolean (settings, "high-contrast");
g_clear_pointer (&schema, g_settings_schema_unref);
if (hc)
g_value_set_static_string (value, "HighContrast");
else
set_value_from_entry (display, entry, value);
}
static gboolean
set_capability_setting (GdkDisplay *display,
GValue *value,
@@ -2121,6 +2161,9 @@ gdk_wayland_display_get_setting (GdkDisplay *display,
{
if (strcmp (name, "gtk-decoration-layout") == 0)
set_decoration_layout_from_entry (display, entry, value);
else if (strcmp (name, "gtk-theme-name") == 0 ||
strcmp (name, "gtk-icon-theme-name") == 0)
set_theme_from_entry (display, entry, value);
else
set_value_from_entry (display, entry, value);
return TRUE;
-406
View File
@@ -1,406 +0,0 @@
/* GDK - The GIMP Drawing Kit
* Copyright (C) 2001 Stefan Ondrejicka
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <ctype.h>
#include <stdlib.h>
#include <glib.h>
typedef struct {
char *name;
int id;
char *bitmap;
int hotx;
int hoty;
} font_info_t;
typedef struct {
char *name;
int id;
int width;
int height;
int hotx;
int hoty;
char *data;
} cursor_info_t;
static GSList *fonts = NULL;
static GSList *cursors = NULL;
static int dw,dh;
static gboolean debug = FALSE;
#define HEX(c) (((c) >= '0' && (c) <= '9') ? \
((c) - '0') : (toupper(c) - 'A' + 10))
static void print_font(fi)
font_info_t *fi;
{
int x,y;
for (y = 0; y < dh; y++)
{
for (x = 0; x < dw; x++)
{
printf(fi->bitmap[y*dw+x]? "X" : " ");
}
printf("\n");
}
}
static void print_cursor(ci)
cursor_info_t *ci;
{
int x,y;
for (y = 0; y < ci->height; y++)
{
printf("/* ");
for (x = 0; x < ci->width; x++)
{
if (ci->hotx == x && ci->hoty == y)
printf("o");
else
switch (ci->data[y*ci->width+x])
{
case 0:
printf(" ");
break;
case 1:
printf(".");
break;
case 2:
printf("X");
break;
}
}
printf(" */\n");
}
}
static int read_bdf_font(fname)
char *fname;
{
FILE *f;
char line[2048];
int rv = 0;
gboolean startchar = FALSE, startbitmap = FALSE;
char *charname,*p,*bitmap;
int dx = 0,dy = 0;
int w,h,x,y,py;
int id,tmp;
dw = 0;
dh = 0;
if (!(f = fopen(fname, "r")))
{
perror(fname);
return -1;
}
if (fgets(line, sizeof(line), f) && strncasecmp("STARTFONT ", line, 10))
{
printf("!BDF font file\n");
fclose(f);
return -1;
}
p = line;
while (fgets(line, sizeof(line), f))
{
if (!startchar)
{
if (!strncasecmp("STARTCHAR ", line, 10))
{
startchar = TRUE;
charname = g_strndup(p + 10,
strcspn(p+10, "\r\n"));
}
else if (!strncasecmp("FONTBOUNDINGBOX ", line, 16))
sscanf(p+16, "%d %d %d %d", &dw, &dh, &dx, &dy);
}
else
{
if (!strncasecmp("ENDCHAR", line, 7))
{
font_info_t *nfi;
if (debug)
printf(" %*s*/\n", dw, "");
startchar = FALSE;
startbitmap = FALSE;
nfi = g_malloc(sizeof(font_info_t));
memset(nfi, '\0', sizeof(font_info_t));
nfi->name = charname;
nfi->id = id;
nfi->bitmap = bitmap;
nfi->hotx = 0 - dx;
nfi->hoty = 0 - dy;
fonts = g_slist_append(fonts, nfi);
}
else if (startbitmap)
{
int px,cx;
guchar mask;
px = x - dx + py * dw;
for (cx = 0; cx < w; cx++)
{
mask = 1 << (3 - (cx % 4));
bitmap[px+cx] =
(mask & HEX(line[cx/4])) != 0;
if (debug)
printf(bitmap[px+cx] ? "X" : " ");
}
py++;
if (debug)
printf(" %*s*/\n/* %*s", dw-w, "", dw+dx, "");
}
else if (!strncasecmp("BBX ", line, 4))
{
sscanf(p+4, "%d %d %d %d", &w, &h, &x, &y);
if (debug)
printf("/* %s: */\n/* %*s", charname, dw+dx, "");
}
else if (!strncasecmp("ENCODING ", line, 9))
{
if (sscanf(p+9, "%d %d", &tmp, &id) != 2)
id = tmp;
}
else if (!strncasecmp("BITMAP", line, 6))
{
py = y - dy;
startbitmap = TRUE;
bitmap = g_malloc(dw*dh);
memset(bitmap, '\0', dw*dh);
}
}
}
if (strncasecmp("ENDFONT", line, 7))
rv = -1;
fclose(f);
return rv;
}
static int font_info_compare(fi, name)
font_info_t *fi;
char *name;
{
return strcmp(name, fi->name);
}
static cursor_info_t *gen_cursor(bmap, mask)
font_info_t *bmap;
font_info_t *mask;
{
cursor_info_t *ci;
int bx = dw,by = dh,ex = 0,ey = 0;
int i,j;
for (j = 0; j < dh; j++)
{
gboolean havep = FALSE;
for (i = 0; i < dw; i++)
{
if (bmap->bitmap[j*dw+i] || mask->bitmap[j*dw+i])
{
havep = TRUE;
bx = MIN(bx, i);
ex = MAX(i+1, ex);
}
}
if (havep)
{
by = MIN(by, j);
ey = MAX(ey, j+1);
}
}
ci = g_malloc(sizeof(cursor_info_t));
ci->name = g_strdup(bmap->name);
ci->id = bmap->id;
ci->width = ex - bx;
ci->height = ey - by;
ci->hotx = bmap->hotx - bx;
ci->hoty = ci->height - (bmap->hoty - by);
ci->data = g_malloc(ci->width * ci->height);
memset(ci->data, '\0', ci->width * ci->height);
for (j = 0; j < ci->height; j++)
{
for (i = 0; i < ci->width; i++)
{
int ofs = (by + j) * dw + bx + i;
ci->data[j*ci->width + i] = mask->bitmap[ofs] *
(1 + bmap->bitmap[ofs]);
}
}
return ci;
}
static void compose_cursors_from_fonts()
{
GSList *l;
for (l = g_slist_copy (fonts); l; l = g_slist_delete_link (l,l))
{
font_info_t *fi = l->data;
char *name;
GSList *ml;
name = g_strconcat(fi->name, "_mask", NULL);
if ((ml = g_slist_find_custom(fonts, name,
(GCompareFunc) font_info_compare)))
{
cursors = g_slist_append(cursors, gen_cursor(l->data, ml->data));
fonts = g_slist_remove(fonts, l->data);
fonts = g_slist_remove(fonts, ml->data);
}
g_free(name);
}
}
static char *dump_cursor(ci, id)
cursor_info_t *ci;
int id;
{
static char cdata[8192];
char *p;
int i;
int c;
gboolean flushed;
sprintf(cdata, " { \"%s\", %d, %d, %d, %d, %d, \n \"",
ci->name, ci->id, ci->width, ci->height, ci->hotx, ci->hoty);
p = cdata + strlen(cdata);
for (i = 0; i < ci->width * ci->height; i++)
{
flushed = FALSE;
if (!(i%4))
c = 0;
c = c << 2;
c += ci->data[i];
if ((i % 4) == 3)
{
flushed = TRUE;
sprintf(p, "\\%03o", c);
p += strlen(p);
}
if (i > 0 && !(i % 64))
{
strcpy(p ,"\"\n \"");
p += strlen(p);
}
}
if (!flushed)
{
sprintf(p, "\\%03o", c);
p += strlen(p);
}
strcpy(p, "\" }");
return cdata;
}
static int dump_cursors()
{
GSList *ptr;
FILE *f = stdout;
fprintf(f, "static const struct { const char *name; int type; guchar width; guchar height; guchar hotx; guchar hoty; guchar *data; } cursors[] = {\n");
for (ptr = cursors; ptr; ptr = ptr->next)
{
if (debug)
print_cursor(ptr->data);
fprintf(f, "%s, \n", dump_cursor(ptr->data));
}
fprintf(f, " { NULL, 0, 0, 0, 0, 0, NULL },\n};\n");
return 0;
}
int main(argc, argv)
int argc;
char **argv;
{
if (argc != 2)
{
printf("missing parameters !\n");
printf("Usage: %s [BDF cursor file]\n", argv[0]);
return -1;
}
if (g_getenv ("BDFCURSOR_DEBUG") != NULL)
debug = TRUE;
if (read_bdf_font(argv[1]) || !fonts)
{
printf("Error reading font\n");
return 1;
}
compose_cursors_from_fonts();
if (!cursors)
{
printf("failed to generate cursors from font!\n");
return 1;
}
dump_cursors();
if (fonts)
{
printf("some fonts remained unconverted!\n");
return 1;
}
return 0;
}
-3385
View File
File diff suppressed because it is too large Load Diff
-24
View File
@@ -157,7 +157,6 @@ static HKL latin_locale = NULL;
static gboolean in_ime_composition = FALSE;
static UINT modal_timer;
static UINT sync_timer = 0;
static int debug_indent = 0;
@@ -1453,23 +1452,6 @@ _gdk_win32_end_modal_call (GdkWin32ModalOpKind kind)
}
}
static VOID CALLBACK
sync_timer_proc (HWND hwnd,
UINT msg,
UINT_PTR id,
DWORD time)
{
MSG message;
if (PeekMessageW (&message, hwnd, WM_PAINT, WM_PAINT, PM_REMOVE))
{
return;
}
RedrawWindow (hwnd, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN);
KillTimer (hwnd, sync_timer);
}
static gboolean
handle_nchittest (HWND hwnd,
GdkSurface *window,
@@ -2854,12 +2836,6 @@ gdk_event_translate (MSG *msg,
*ret_valp = 1;
break;
case WM_SYNCPAINT:
sync_timer = SetTimer (GDK_SURFACE_HWND (window),
1,
200, sync_timer_proc);
break;
case WM_PAINT:
handle_wm_paint (msg, window);
break;
+12 -56
View File
@@ -787,26 +787,6 @@ show_window_internal (GdkSurface *window,
if (!unminimize && !already_mapped && IsWindowVisible (GDK_SURFACE_HWND (window)))
return;
/* Other cases */
exstyle = GetWindowLong (GDK_SURFACE_HWND (window), GWL_EXSTYLE);
/* Use SetWindowPos to show transparent windows so automatic redraws
* in other windows can be suppressed.
*/
if (exstyle & WS_EX_TRANSPARENT)
{
UINT flags = SWP_SHOWWINDOW | SWP_NOREDRAW | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER;
if (GDK_IS_DRAG_SURFACE (window))
flags |= SWP_NOACTIVATE;
SetWindowPos (GDK_SURFACE_HWND (window),
SWP_NOZORDER_SPECIFIED, 0, 0, 0, 0, flags);
return;
}
/* For initial map of "normal" windows we want to emulate WM window
* positioning behaviour, which means:
* + default to the initial CW_USEDEFAULT placement,
@@ -953,6 +933,8 @@ show_window_internal (GdkSurface *window,
GtkShowWindow (window, SW_SHOW);
}
exstyle = GetWindowLong (GDK_SURFACE_HWND (window), GWL_EXSTYLE);
/* Sync STATE_ABOVE to TOPMOST */
if (!GDK_IS_DRAG_SURFACE (window) &&
(((window->state & GDK_TOPLEVEL_STATE_ABOVE) &&
@@ -989,22 +971,7 @@ gdk_win32_surface_hide (GdkSurface *window)
_gdk_surface_clear_update_area (window);
if (GDK_IS_TOPLEVEL (window))
ShowOwnedPopups (GDK_SURFACE_HWND (window), FALSE);
/* Use SetWindowPos to hide transparent windows so automatic redraws
* in other windows can be suppressed.
*/
if (GetWindowLong (GDK_SURFACE_HWND (window), GWL_EXSTYLE) & WS_EX_TRANSPARENT)
{
SetWindowPos (GDK_SURFACE_HWND (window), SWP_NOZORDER_SPECIFIED,
0, 0, 0, 0,
SWP_HIDEWINDOW | SWP_NOREDRAW | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE);
}
else
{
GtkShowWindow (window, SW_HIDE);
}
GtkShowWindow (window, SW_HIDE);
}
static void
@@ -1336,33 +1303,22 @@ gdk_win32_surface_set_urgency_hint (GdkSurface *window,
gboolean urgent)
{
FLASHWINFO flashwinfo;
typedef BOOL (WINAPI *PFN_FlashWindowEx) (FLASHWINFO*);
PFN_FlashWindowEx flashWindowEx = NULL;
g_return_if_fail (GDK_IS_SURFACE (window));
if (GDK_SURFACE_DESTROYED (window))
return;
flashWindowEx = (PFN_FlashWindowEx) GetProcAddress (GetModuleHandle ("user32.dll"), "FlashWindowEx");
if (flashWindowEx)
{
flashwinfo.cbSize = sizeof (flashwinfo);
flashwinfo.hwnd = GDK_SURFACE_HWND (window);
if (urgent)
flashwinfo.dwFlags = FLASHW_ALL | FLASHW_TIMER;
else
flashwinfo.dwFlags = FLASHW_STOP;
flashwinfo.uCount = 0;
flashwinfo.dwTimeout = 0;
flashWindowEx (&flashwinfo);
}
flashwinfo.cbSize = sizeof (flashwinfo);
flashwinfo.hwnd = GDK_SURFACE_HWND (window);
if (urgent)
flashwinfo.dwFlags = FLASHW_ALL | FLASHW_TIMER;
else
{
FlashWindow (GDK_SURFACE_HWND (window), urgent);
}
flashwinfo.dwFlags = FLASHW_STOP;
flashwinfo.uCount = 0;
flashwinfo.dwTimeout = 0;
FlashWindowEx (&flashwinfo);
}
static gboolean
-30
View File
@@ -1,30 +0,0 @@
# libwntab32x.la - a libtool library file
# Generated by hand, compatible with libtool
# Just a wrapper for libwntab32x.a, which is just a copy of wntab32x.lib
#
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libwntab32x.a'
# Libraries that this one depends upon.
dependency_libs=''
# Version information
current=0
age=0
revision=0
# Is this an already installed library?
installed=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir=''
+2
View File
@@ -71,6 +71,8 @@ gdk_x11_surface_destroy_glx_drawable (GdkX11Surface *self)
if (self->glx_drawable == None)
return;
gdk_gl_context_clear_current_if_surface (GDK_SURFACE (self));
glXDestroyWindow (gdk_x11_display_get_xdisplay (gdk_surface_get_display (GDK_SURFACE (self))),
self->glx_drawable);
+1 -1
View File
@@ -3535,7 +3535,7 @@ gdk_x11_surface_unfullscreen (GdkSurface *surface)
*
* Returns the group this surface belongs to.
*
* Returns: (transfer none): The group of this surface;
* Returns: (transfer none) (nullable): The group of this surface;
*/
GdkSurface *
gdk_x11_surface_get_group (GdkSurface *surface)
+1 -1
View File
@@ -1396,7 +1396,7 @@ gsk_gl_command_queue_do_upload_texture (GskGLCommandQueue *self,
glTexImage2D (GL_TEXTURE_2D, 0, gl_internalformat, width, height, 0, gl_format, gl_type, data);
}
else if (stride % bpp == 0 &&
(!use_es || gdk_gl_context_check_version (context, 3, 0) || gdk_gl_context_has_unpack_subimage (context)))
(gdk_gl_context_check_version (context, 0, 0, 3, 0) || gdk_gl_context_has_unpack_subimage (context)))
{
glPixelStorei (GL_UNPACK_ROW_LENGTH, stride / bpp);
+2 -1
View File
@@ -147,7 +147,8 @@ gsk_gl_compiler_new (GskGLDriver *driver,
gdk_gl_context_get_version (context, &maj, &min);
if (maj == 3)
/* On Windows, legacy contexts can give us a GL 4.x context */
if (maj >= 3)
self->glsl_version = SHADER_VERSION_GL3_LEGACY;
else
self->glsl_version = SHADER_VERSION_GL2_LEGACY;
+8 -3
View File
@@ -4117,14 +4117,19 @@ gsk_gl_render_job_set_debug_fallback (GskGLRenderJob *job,
}
static int
get_framebuffer_format (guint framebuffer)
get_framebuffer_format (GdkGLContext *context,
guint framebuffer)
{
int size;
if (!gdk_gl_context_check_version (context, 0, 0, 3, 0))
return GL_RGBA8;
glBindFramebuffer (GL_FRAMEBUFFER, framebuffer);
glGetFramebufferAttachmentParameteriv (GL_FRAMEBUFFER,
framebuffer ? GL_COLOR_ATTACHMENT0
: GL_BACK_LEFT,
: gdk_gl_context_get_use_es (context) ? GL_BACK
: GL_BACK_LEFT,
GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, &size);
if (size > 16)
@@ -4161,7 +4166,7 @@ gsk_gl_render_job_new (GskGLDriver *driver,
job->scale_x = scale_factor;
job->scale_y = scale_factor;
job->viewport = *viewport;
job->target_format = get_framebuffer_format (framebuffer);
job->target_format = get_framebuffer_format (job->command_queue->context, framebuffer);
gsk_gl_render_job_set_alpha (job, 1.0f);
gsk_gl_render_job_set_projection_from_rect (job, viewport, NULL);
+14 -5
View File
@@ -356,6 +356,8 @@ compare (gconstpointer *elem1,
const GskDiffSettings *settings,
gpointer data)
{
GskDiffResult res;
/*
* Shrink the box by walking through each diagonal snake (SW and NE).
*/
@@ -364,7 +366,9 @@ compare (gconstpointer *elem1,
if (settings->compare_func (elem1[off1], elem2[off2], data) != 0)
break;
settings->keep_func (elem1[off1], elem2[off2], data);
res = settings->keep_func (elem1[off1], elem2[off2], data);
if (res != GSK_DIFF_OK)
return res;
}
for (; off1 < lim1 && off2 < lim2; lim1--, lim2--)
@@ -372,7 +376,9 @@ compare (gconstpointer *elem1,
if (settings->compare_func (elem1[lim1 - 1], elem2[lim2 - 1], data) != 0)
break;
settings->keep_func (elem1[lim1 - 1], elem2[lim2 - 1], data);
res = settings->keep_func (elem1[lim1 - 1], elem2[lim2 - 1], data);
if (res != GSK_DIFF_OK)
return res;
}
/*
@@ -383,20 +389,23 @@ compare (gconstpointer *elem1,
{
for (; off2 < lim2; off2++)
{
settings->insert_func (elem2[off2], off2, data);
res = settings->insert_func (elem2[off2], off2, data);
if (res != GSK_DIFF_OK)
return res;
}
}
else if (off2 == lim2)
{
for (; off1 < lim1; off1++)
{
settings->delete_func (elem1[off1], off1, data);
res = settings->delete_func (elem1[off1], off1, data);
if (res != GSK_DIFF_OK)
return res;
}
}
else
{
SplitResult spl = { 0, };
GskDiffResult res;
/*
* Divide ...
+3 -3
View File
@@ -29,9 +29,9 @@ typedef enum {
GSK_DIFF_ABORTED,
} GskDiffResult;
typedef void (* GskKeepFunc) (gconstpointer elem1, gconstpointer elem2, gpointer data);
typedef void (* GskDeleteFunc) (gconstpointer elem, gsize idx, gpointer data);
typedef void (* GskInsertFunc) (gconstpointer elem, gsize idx, gpointer data);
typedef GskDiffResult (* GskKeepFunc) (gconstpointer elem1, gconstpointer elem2, gpointer data);
typedef GskDiffResult (* GskDeleteFunc) (gconstpointer elem, gsize idx, gpointer data);
typedef GskDiffResult (* GskInsertFunc) (gconstpointer elem, gsize idx, gpointer data);
typedef struct _GskDiffSettings GskDiffSettings;
+22 -13
View File
@@ -33,6 +33,12 @@
#include <hb-ot.h>
/* maximal number of rectangles we keep in a diff region before we throw
* the towel and just use the bounding box of the parent node.
* Meant to avoid performance corner cases.
*/
#define MAX_RECTS_IN_DIFF 30
static inline void
gsk_cairo_rectangle (cairo_t *cr,
const graphene_rect_t *rect)
@@ -2601,32 +2607,35 @@ gsk_container_node_draw (GskRenderNode *node,
}
}
static void
gsk_render_node_add_to_region (GskRenderNode *node,
cairo_region_t *region)
{
cairo_rectangle_int_t rect;
rectangle_init_from_graphene (&rect, &node->bounds);
cairo_region_union_rectangle (region, &rect);
}
static int
gsk_container_node_compare_func (gconstpointer elem1, gconstpointer elem2, gpointer data)
{
return gsk_render_node_can_diff ((const GskRenderNode *) elem1, (const GskRenderNode *) elem2) ? 0 : 1;
}
static void
static GskDiffResult
gsk_container_node_keep_func (gconstpointer elem1, gconstpointer elem2, gpointer data)
{
gsk_render_node_diff ((GskRenderNode *) elem1, (GskRenderNode *) elem2, data);
if (cairo_region_num_rectangles (data) > MAX_RECTS_IN_DIFF)
return GSK_DIFF_ABORTED;
return GSK_DIFF_OK;
}
static void
static GskDiffResult
gsk_container_node_change_func (gconstpointer elem, gsize idx, gpointer data)
{
gsk_render_node_add_to_region ((GskRenderNode *) elem, data);
const GskRenderNode *node = elem;
cairo_region_t *region = data;
cairo_rectangle_int_t rect;
rectangle_init_from_graphene (&rect, &node->bounds);
cairo_region_union_rectangle (region, &rect);
if (cairo_region_num_rectangles (region) > MAX_RECTS_IN_DIFF)
return GSK_DIFF_ABORTED;
return GSK_DIFF_OK;
}
static GskDiffSettings *
+1 -1
View File
@@ -140,7 +140,7 @@ gtk_css_section_get_parent (const GtkCssSection *section)
* If no such file exists, for example because the CSS was loaded via
* [method@Gtk.CssProvider.load_from_data], then `NULL` is returned.
*
* Returns: (transfer none): the `GFile` from which the `section`
* Returns: (transfer none) (nullable): the `GFile` from which the `section`
* was parsed
**/
GFile *
+3 -1
View File
@@ -435,9 +435,11 @@ gtk_application_window_measure (GtkWidget *widget,
gtk_widget_measure (priv->menubar, GTK_ORIENTATION_VERTICAL,
for_size, &menubar_height, NULL, NULL, NULL);
GTK_WIDGET_CLASS (gtk_application_window_parent_class)->measure (widget,
orientation,
for_size - menubar_height,
for_size > -1 ?
for_size - menubar_height : -1,
minimum, natural,
minimum_baseline, natural_baseline);
+1 -1
View File
@@ -83,7 +83,7 @@ gtk_buildable_set_buildable_id (GtkBuildable *buildable,
* `GtkBuilder` sets the name based on the ID attribute
* of the <object> tag used to construct the @buildable.
*
* Returns: the ID of the buildable object
* Returns: (nullable): the ID of the buildable object
**/
const char *
gtk_buildable_get_buildable_id (GtkBuildable *buildable)
+1 -1
View File
@@ -942,7 +942,7 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
while (TRUE)
{
GtkCssTransform transform;
GtkCssTransform transform = { 0, };
if (gtk_css_parser_has_function (parser, "matrix"))
{
+25
View File
@@ -285,6 +285,31 @@ typedef enum
GTK_MOVEMENT_HORIZONTAL_PAGES
} GtkMovementStep;
/**
* GtkNaturalWrapMode:
* @GTK_NATURAL_WRAP_INHERIT: Inherit the minimum size request.
* In particular, this should be used with %PANGO_WRAP_CHAR.
* @GTK_NATURAL_WRAP_NONE: Try not to wrap the text. This mode is the
* closest to GTK3's behavior but can lead to a wide label leaving
* lots of empty space below the text.
* @GTK_NATURAL_WRAP_WORD: Attempt to wrap at word boundaries. This
* is useful in particular when using %PANGO_WRAP_WORD_CHAR as the
* wrap mode.
*
* Options for selecting a different wrap mode for natural size
* requests.
*
* See for example the [property@Gtk.Label:natural-wrap-mode] property.
*
* Since: 4.6
*/
typedef enum
{
GTK_NATURAL_WRAP_INHERIT,
GTK_NATURAL_WRAP_NONE,
GTK_NATURAL_WRAP_WORD
} GtkNaturalWrapMode;
/**
* GtkScrollStep:
* @GTK_SCROLL_STEPS: Scroll in steps.
+1 -2
View File
@@ -1,4 +1,3 @@
/*
* Copyright © 2019 Benjamin Otte
*
@@ -1372,7 +1371,7 @@ gtk_property_expression_new_for_pspec (GtkExpression *expression,
* Gets the expression specifying the object of
* a property expression.
*
* Returns: (transfer none): the object expression
* Returns: (transfer none) (nullable): the object expression
*/
GtkExpression *
gtk_property_expression_get_expression (GtkExpression *expression)
+1
View File
@@ -50,6 +50,7 @@ GDK_AVAILABLE_IN_ALL
GtkExpression * gtk_expression_ref (GtkExpression *self);
GDK_AVAILABLE_IN_ALL
void gtk_expression_unref (GtkExpression *self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkExpression, gtk_expression_unref)
GDK_AVAILABLE_IN_ALL
GType gtk_expression_get_value_type (GtkExpression *self);
+2 -2
View File
@@ -523,7 +523,7 @@ gtk_file_chooser_set_file (GtkFileChooser *chooser,
* If the file chooser is in folder mode, this function returns
* the selected folder.
*
* Returns: (transfer full): a selected `GFile`. You own the
* Returns: (transfer full) (nullable): a selected `GFile`. You own the
* returned file; use g_object_unref() to release it.
*/
GFile *
@@ -794,7 +794,7 @@ gtk_file_chooser_set_choice (GtkFileChooser *chooser,
*
* Gets the currently selected option in the 'choice' with the given ID.
*
* Returns: the ID of the currently selected option
* Returns: (nullable): the ID of the currently selected option
*/
const char *
gtk_file_chooser_get_choice (GtkFileChooser *chooser,
+16
View File
@@ -41,6 +41,7 @@
#include "gtktogglebutton.h"
#include "gtkheaderbar.h"
#include "gtklabel.h"
#include "gtkmain.h"
#include "gtkfilefilterprivate.h"
#include "gtknative.h"
@@ -50,6 +51,9 @@
typedef struct {
GtkFileChooserNative *self;
GtkWidget *grab_widget;
IFileDialogEvents *events;
HWND parent;
@@ -318,6 +322,12 @@ filechooser_win32_thread_data_free (FilechooserWin32ThreadData *data)
if (data->events)
IFileDialogEvents_Release (data->events);
if (data->grab_widget)
{
gtk_grab_remove (data->grab_widget);
g_object_unref (data->grab_widget);
}
g_clear_object (&data->current_folder);
g_clear_object (&data->current_file);
g_free (data->current_name);
@@ -969,6 +979,12 @@ gtk_file_chooser_native_win32_show (GtkFileChooserNative *self)
return FALSE;
}
if (data->modal)
{
data->grab_widget = g_object_ref_sink (gtk_label_new (""));
gtk_grab_add (GTK_WIDGET (data->grab_widget));
}
return TRUE;
}
+1 -1
View File
@@ -510,7 +510,7 @@ gtk_flatten_list_model_get_model (GtkFlattenListModel *self)
*
* Returns the model containing the item at the given position.
*
* Returns: (transfer none): the model containing the item at @position
* Returns: (transfer none) (nullable): the model containing the item at @position
*/
GListModel *
gtk_flatten_list_model_get_model_for_item (GtkFlattenListModel *self,
+2
View File
@@ -433,6 +433,8 @@ gtk_font_button_font_chooser_set_font_map (GtkFontChooser *chooser,
context = gtk_widget_get_pango_context (font_button->font_label);
pango_context_set_font_map (context, font_map);
if (font_button->font_dialog)
gtk_font_chooser_set_font_map (GTK_FONT_CHOOSER (font_button->font_dialog), font_map);
}
}
+233 -198
View File
@@ -64,9 +64,6 @@
#include "gtkstringsorter.h"
#include <hb-ot.h>
#if defined(HAVE_PANGOFT) && defined(HAVE_HARFBUZZ)
#include <pango/pangofc-font.h>
#endif
#include "language-names.h"
#include "script-names.h"
@@ -155,6 +152,8 @@ struct _GtkFontChooserWidget
GList *feature_items;
GAction *tweak_action;
hb_map_t *glyphmap;
};
struct _GtkFontChooserWidgetClass
@@ -362,7 +361,6 @@ user_filter_cb (gpointer item,
!pango_font_family_is_monospace (family))
return FALSE;
#ifdef HAVE_PANGOFT
if (self->filter_by_language &&
self->filter_language)
{
@@ -370,6 +368,7 @@ user_filter_cb (gpointer item,
PangoContext *context;
PangoFont *font;
gboolean ret;
PangoLanguage **langs;
desc = pango_font_face_describe (face);
pango_font_description_set_size (desc, 20);
@@ -377,27 +376,19 @@ user_filter_cb (gpointer item,
context = gtk_widget_get_pango_context (GTK_WIDGET (self));
font = pango_context_load_font (context, desc);
ret = TRUE;
ret = FALSE;
if (PANGO_IS_FC_FONT (font))
langs = pango_font_get_languages (font);
if (langs)
{
PangoLanguage **langs;
int i;
ret = FALSE;
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
langs = pango_fc_font_get_languages (PANGO_FC_FONT (font));
G_GNUC_END_IGNORE_DEPRECATIONS
if (langs)
for (i = 0; langs[i]; i++)
{
if (langs[i] == self->filter_language)
{
ret = TRUE;
break;
}
}
for (int i = 0; langs[i]; i++)
{
if (langs[i] == self->filter_language)
{
ret = TRUE;
break;
}
}
}
g_object_unref (font);
@@ -405,7 +396,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
return ret;
}
#endif
return TRUE;
}
@@ -549,10 +539,16 @@ maybe_update_preview_text (GtkFontChooserWidget *self,
PangoFontFace *face,
PangoFontDescription *desc)
{
#if defined(HAVE_PANGOFT) && defined(HAVE_HARFBUZZ)
PangoContext *context;
PangoFont *font;
const char *sample;
PangoLanguage **languages;
GHashTable *langs = NULL;
PangoLanguage *default_lang;
PangoLanguage *alt_default = NULL;
PangoLanguage *lang = NULL;
int i;
const char *p;
/* If the user has typed text into the entry, we don't touch it */
if (self->preview_text_set)
@@ -576,88 +572,77 @@ maybe_update_preview_text (GtkFontChooserWidget *self,
context = gtk_widget_get_pango_context (GTK_WIDGET (self));
font = pango_context_load_font (context, desc);
if (PANGO_IS_FC_FONT (font))
default_lang = pango_language_get_default ();
p = pango_language_to_string (default_lang);
/* The default language tends to be of the form en-us.
* Since fontconfig languages just have the language part,
* and we want to use direct pointer comparisons, we need
* an PangoLanguage for the shortened default language.
*/
if (strchr (p, '-'))
{
PangoLanguage **languages;
GHashTable *langs = NULL;
PangoLanguage *default_lang;
PangoLanguage *alt_default = NULL;
PangoLanguage *lang = NULL;
int i;
const char *p;
char q[10];
for (i = 0; p[i] != '-' && i < 9; i++)
q[i] = p[i];
q[i] = '\0';
alt_default = pango_language_from_string (q);
}
default_lang = pango_language_get_default ();
p = pango_language_to_string (default_lang);
languages = pango_font_get_languages (font);
/* The default language tends to be of the form en-us.
* Since fontconfig languages just have the language part,
* and we want to use direct pointer comparisons, we need
* an PangoLanguage for the shortened default language.
*/
if (strchr (p, '-'))
{
char q[10];
for (i = 0; p[i] != '-' && i < 9; i++)
q[i] = p[i];
q[i] = '\0';
alt_default = pango_language_from_string (q);
}
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
languages = pango_fc_font_get_languages (PANGO_FC_FONT (font));
G_GNUC_END_IGNORE_DEPRECATIONS
/* If the font supports the default language, just use it. */
if (languages)
for (i = 0; languages[i]; i++)
/* If the font supports the default language, just use it. */
if (languages)
for (i = 0; languages[i]; i++)
{
if (languages[i] == default_lang || languages[i] == alt_default)
{
if (languages[i] == default_lang || languages[i] == alt_default)
{
lang = default_lang;
goto found;
}
lang = default_lang;
goto found;
}
}
/* Otherwise, we make a list of representative languages */
langs = g_hash_table_new (NULL, NULL);
/* Otherwise, we make a list of representative languages */
langs = g_hash_table_new (NULL, NULL);
for (i = 0; languages[i]; i++)
if (languages)
for (i = 0; languages[i]; i++)
{
const PangoScript *scripts;
int num, j;
scripts = pango_language_get_scripts (languages[i], &num);
for (j = 0; j < num; j++)
{
lang = pango_script_get_sample_language (scripts[j]);
if (lang)
g_hash_table_add (langs, lang);
}
}
/* ... and compare it to the users default and preferred languages */
if (g_hash_table_contains (langs, default_lang) ||
g_hash_table_contains (langs, alt_default))
{
lang = default_lang;
}
else
{
PangoLanguage **preferred;
preferred = pango_language_get_preferred ();
if (preferred)
{
const PangoScript *scripts;
int num, j;
scripts = pango_language_get_scripts (languages[i], &num);
for (j = 0; j < num; j++)
for (i = 0; preferred[i]; i++)
{
lang = pango_script_get_sample_language (scripts[j]);
if (lang)
g_hash_table_add (langs, lang);
}
}
/* ... and compare it to the users default and preferred languages */
if (g_hash_table_contains (langs, default_lang) ||
g_hash_table_contains (langs, alt_default))
{
lang = default_lang;
}
else
{
PangoLanguage **preferred;
preferred = pango_language_get_preferred ();
if (preferred)
{
for (i = 0; preferred[i]; i++)
if (g_hash_table_contains (langs, preferred[i]))
{
if (g_hash_table_contains (langs, preferred[i]))
{
lang = preferred[i];
break;
}
lang = preferred[i];
break;
}
}
}
g_hash_table_unref (langs);
found:
@@ -667,7 +652,6 @@ found:
}
g_object_unref (font);
#endif
}
@@ -1027,7 +1011,6 @@ axis_free (gpointer v)
g_free (a);
}
#ifdef HAVE_PANGOFT
static void
select_added (GListModel *model,
guint position,
@@ -1051,6 +1034,10 @@ add_languages_from_font (GtkFontChooserWidget *self,
PangoFontDescription *desc;
PangoFont *font;
PangoContext *context;
GtkSelectionModel *model = gtk_list_view_get_model (GTK_LIST_VIEW (self->language_list));
PangoLanguage *default_lang = pango_language_get_default ();
PangoLanguage **langs;
int i;
if (PANGO_IS_FONT_FAMILY (item))
face = pango_font_family_get_face (PANGO_FONT_FAMILY (item), NULL);
@@ -1066,44 +1053,35 @@ add_languages_from_font (GtkFontChooserWidget *self,
context = gtk_widget_get_pango_context (GTK_WIDGET (self));
font = pango_context_load_font (context, desc);
if (PANGO_IS_FC_FONT (font))
langs = pango_font_get_languages (font);
if (langs)
{
GtkSelectionModel *model = gtk_list_view_get_model (GTK_LIST_VIEW (self->language_list));
PangoLanguage *default_lang = pango_language_get_default ();
PangoLanguage **langs;
int i;
for (i = 0; langs[i]; i++)
{
if (!g_hash_table_contains (self->language_table, langs[i]))
{
g_hash_table_add (self->language_table, langs[i]);
if (get_language_name (langs[i]))
{
const char *l = pango_language_to_string (langs[i]);
gulong id = 0;
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
langs = pango_fc_font_get_languages (PANGO_FC_FONT (font));
G_GNUC_END_IGNORE_DEPRECATIONS
if (langs)
for (i = 0; langs[i]; i++)
{
if (!g_hash_table_contains (self->language_table, langs[i]))
{
g_hash_table_add (self->language_table, langs[i]);
if (get_language_name (langs[i]))
{
const char *l = pango_language_to_string (langs[i]);
gulong id = 0;
/* Pre-select the default language */
if (pango_language_matches (default_lang, l))
id = g_signal_connect (model, "items-changed", G_CALLBACK (select_added), NULL);
/* Pre-select the default language */
if (pango_language_matches (default_lang, l))
id = g_signal_connect (model, "items-changed", G_CALLBACK (select_added), NULL);
gtk_string_list_append (self->languages, l);
gtk_string_list_append (self->languages, l);
if (id)
g_signal_handler_disconnect (model, id);
}
}
}
if (id)
g_signal_handler_disconnect (model, id);
}
}
}
}
g_object_unref (font);
pango_font_description_free (desc);
}
#endif
static gboolean
gtk_font_chooser_widget_ensure_matching_selection (GtkFontChooserWidget *self);
@@ -1130,7 +1108,6 @@ add_to_fontlist (GtkWidget *widget,
n = gtk_slice_list_model_get_size (model);
#ifdef HAVE_PANGOFT
for (i = n; i < n + 10; i++)
{
gpointer item = g_list_model_get_item (child_model, i);
@@ -1139,7 +1116,6 @@ add_to_fontlist (GtkWidget *widget,
add_languages_from_font (self, item);
g_object_unref (item);
}
#endif
n += 10;
@@ -1179,7 +1155,6 @@ update_fontlist (GtkFontChooserWidget *self)
g_object_unref (model);
}
#ifdef HAVE_PANGOFT
static void
setup_lang_item (GtkSignalListItemFactory *factory,
gpointer item,
@@ -1269,7 +1244,6 @@ setup_language_list (GtkFontChooserWidget *self)
return TRUE;
}
#endif
static void
gtk_font_chooser_widget_init (GtkFontChooserWidget *self)
@@ -1310,12 +1284,7 @@ gtk_font_chooser_widget_init (GtkFontChooserWidget *self)
gtk_custom_filter_set_filter_func (self->user_filter, user_filter_cb, self, NULL);
#ifdef HAVE_PANGOFT
setup_language_list (self);
#else
gtk_widget_hide (GTK_WIDGET (self->language_button));
gtk_widget_hide (GTK_WIDGET (self->language_frame));
#endif
}
/**
@@ -1501,26 +1470,23 @@ add_font_variations (GtkFontChooserWidget *fontchooser,
{
GHashTableIter iter;
Axis *axis;
const char *sep = "";
char buf[G_ASCII_DTOSTR_BUF_SIZE];
g_hash_table_iter_init (&iter, fontchooser->axes);
while (g_hash_table_iter_next (&iter, (gpointer *)NULL, (gpointer *)&axis))
{
char tag[5];
double value;
char buf[128];
value = gtk_adjustment_get_value (axis->adjustment);
if (value == axis->default_value)
continue;
tag[0] = (axis->tag >> 24) & 0xff;
tag[1] = (axis->tag >> 16) & 0xff;
tag[2] = (axis->tag >> 8) & 0xff;
tag[3] = (axis->tag >> 0) & 0xff;
tag[4] = '\0';
g_string_append_printf (s, "%s%s=%s", sep, tag, g_ascii_dtostr (buf, sizeof(buf), value));
sep = ",";
hb_variation_to_string (&(hb_variation_t) { axis->tag, value }, buf, sizeof (buf));
if (s->len > 0)
g_string_append_c (s, ',');
g_string_append (s, buf);
}
}
@@ -1549,10 +1515,7 @@ adjustment_changed (GtkAdjustment *adjustment,
static gboolean
should_show_axis (hb_ot_var_axis_info_t *ax)
{
if (ax->flags & HB_OT_VAR_AXIS_FLAG_HIDDEN)
return FALSE;
return TRUE;
return (ax->flags & HB_OT_VAR_AXIS_FLAG_HIDDEN) == 0;
}
static gboolean
@@ -1566,11 +1529,11 @@ static struct {
guint32 tag;
const char *name;
} axis_names[] = {
{ HB_OT_TAG_VAR_AXIS_WIDTH, N_("Width") },
{ HB_OT_TAG_VAR_AXIS_WEIGHT, N_("Weight") },
{ HB_OT_TAG_VAR_AXIS_ITALIC, N_("Italic") },
{ HB_OT_TAG_VAR_AXIS_SLANT, N_("Slant") },
{ HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE, N_("Optical Size") },
{ HB_OT_TAG_VAR_AXIS_WIDTH, NC_("Font variation axis", "Width") },
{ HB_OT_TAG_VAR_AXIS_WEIGHT, NC_("Font variation axis", "Weight") },
{ HB_OT_TAG_VAR_AXIS_ITALIC, NC_("Font variation axis", "Italic") },
{ HB_OT_TAG_VAR_AXIS_SLANT, NC_("Font variation axis", "Slant") },
{ HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE, NC_("Font variation axis", "Optical Size") },
};
static gboolean
@@ -1601,7 +1564,7 @@ add_axis (GtkFontChooserWidget *fontchooser,
{
if (axis_names[i].tag == ax->tag)
{
name = _(axis_names[i].name);
name = g_dpgettext2 (NULL, "Font variation axis", axis_names[i].name);
break;
}
}
@@ -1643,6 +1606,33 @@ add_axis (GtkFontChooserWidget *fontchooser,
return TRUE;
}
#if HB_VERSION_ATLEAST (3, 3, 0)
static void
get_axes_and_values (hb_font_t *font,
unsigned int n_axes,
hb_ot_var_axis_info_t *axes,
float *coords)
{
const float *dcoords;
unsigned int length = n_axes;
hb_ot_var_get_axis_infos (hb_font_get_face (font), 0, &length, axes);
dcoords = hb_font_get_var_coords_design (font, &length);
if (dcoords)
memcpy (coords, dcoords, sizeof (float) * length);
else
{
for (int i = 0; i < n_axes; i++)
{
hb_ot_var_axis_info_t *axis = &axes[i];
coords[axis->axis_index] = axis->default_value;
}
}
}
#else
/* FIXME: This doesn't work if the font has an avar table */
static float
denorm_coord (hb_ot_var_axis_info_t *axis, int coord)
@@ -1655,16 +1645,40 @@ denorm_coord (hb_ot_var_axis_info_t *axis, int coord)
return axis->default_value + r * (axis->max_value - axis->default_value);
}
static void
get_axes_and_values (hb_font_t *font,
unsigned int n_axes,
hb_ot_var_axis_info_t *axes,
float *coords)
{
const int *ncoords;
unsigned int length = n_axes;
hb_ot_var_get_axis_infos (hb_font_get_face (font), 0, &length, axes);
ncoords = hb_font_get_var_coords_normalized (font, &length);
for (int i = 0; i < n_axes; i++)
{
hb_ot_var_axis_info_t *axis = &axes[i];
int idx = axis->axis_index;
if (ncoords)
coords[idx] = denorm_coord (axis, ncoords[idx]);
else
coords[idx] = axis->default_value;
}
}
#endif
static gboolean
gtk_font_chooser_widget_update_font_variations (GtkFontChooserWidget *fontchooser)
{
PangoFont *pango_font;
hb_font_t *hb_font;
hb_face_t *hb_face;
const int *coords;
unsigned int n_coords;
unsigned int n_axes;
hb_ot_var_axis_info_t *axes;
float *coords;
gboolean has_axis = FALSE;
int i;
@@ -1685,24 +1699,17 @@ gtk_font_chooser_widget_update_font_variations (GtkFontChooserWidget *fontchoose
if (!hb_ot_var_has_data (hb_face))
return FALSE;
coords = hb_font_get_var_coords_normalized (hb_font, &n_coords);
n_axes = hb_ot_var_get_axis_count (hb_face);
axes = g_new0 (hb_ot_var_axis_info_t, n_axes);
hb_ot_var_get_axis_infos (hb_face, 0, &n_axes, axes);
axes = g_alloca (sizeof (hb_ot_var_axis_info_t) * n_axes);
coords = g_alloca (sizeof (float) * n_axes);
get_axes_and_values (hb_font, n_axes, axes, coords);
for (i = 0; i < n_axes; i++)
{
float value;
if (coords && i < n_coords)
value = denorm_coord (&axes[i], coords[i]);
else
value = axes[i].default_value;
if (add_axis (fontchooser, hb_font, &axes[i], value, i + 4))
if (add_axis (fontchooser, hb_font, &axes[i], coords[axes[i].axis_index], i + 4))
has_axis = TRUE;
}
g_free (axes);
g_object_unref (pango_font);
return has_axis;
@@ -1827,11 +1834,12 @@ feat_pressed (GtkGestureClick *gesture,
}
static char *
find_affected_text (hb_tag_t feature_tag,
hb_font_t *hb_font,
hb_tag_t script_tag,
hb_tag_t lang_tag,
int max_chars)
find_affected_text (GtkFontChooserWidget *fontchooser,
hb_tag_t feature_tag,
hb_font_t *hb_font,
hb_tag_t script_tag,
hb_tag_t lang_tag,
int max_chars)
{
hb_face_t *hb_face;
unsigned int script_index = 0;
@@ -1881,24 +1889,35 @@ find_affected_text (hb_tag_t feature_tag,
glyphs_after,
glyphs_output);
gid = -1;
while (hb_set_next (glyphs_input, &gid)) {
hb_codepoint_t ch;
if (n_chars == max_chars)
{
g_string_append (chars, "");
break;
}
for (ch = 0; ch < 0xffff; ch++) {
hb_codepoint_t glyph = 0;
hb_font_get_nominal_glyph (hb_font, ch, &glyph);
if (glyph == gid) {
g_string_append_unichar (chars, (gunichar)ch);
n_chars++;
break;
}
if (!fontchooser->glyphmap)
{
fontchooser->glyphmap = hb_map_create ();
for (hb_codepoint_t ch = 0; ch < 0xffff; ch++)
{
hb_codepoint_t glyph = 0;
if (hb_font_get_nominal_glyph (hb_font, ch, &glyph) &&
!hb_map_has (fontchooser->glyphmap, glyph))
hb_map_set (fontchooser->glyphmap, glyph, ch);
}
}
}
while (hb_set_next (glyphs_input, &gid))
{
hb_codepoint_t ch;
if (n_chars == max_chars)
{
g_string_append (chars, "");
break;
}
ch = hb_map_get (fontchooser->glyphmap, gid);
if (ch != HB_MAP_VALUE_INVALID)
{
g_string_append_unichar (chars, (gunichar)ch);
n_chars++;
}
}
hb_set_destroy (glyphs_input);
}
}
@@ -1907,7 +1926,8 @@ find_affected_text (hb_tag_t feature_tag,
}
static void
update_feature_example (FeatureItem *item,
update_feature_example (GtkFontChooserWidget *fontchooser,
FeatureItem *item,
hb_font_t *hb_font,
hb_tag_t script_tag,
hb_tag_t lang_tag,
@@ -1962,9 +1982,9 @@ update_feature_example (FeatureItem *item,
else if (strcmp (item->name, "frac") == 0)
input = g_strdup ("1/2 2/3 7/8");
else if (strcmp (item->name, "nalt") == 0)
input = find_affected_text (item->tag, hb_font, script_tag, lang_tag, 3);
input = find_affected_text (fontchooser, item->tag, hb_font, script_tag, lang_tag, 3);
else
input = find_affected_text (item->tag, hb_font, script_tag, lang_tag, 10);
input = find_affected_text (fontchooser, item->tag, hb_font, script_tag, lang_tag, 10);
if (input[0] != '\0')
{
@@ -2244,7 +2264,7 @@ gtk_font_chooser_widget_update_font_features (GtkFontChooserWidget *fontchooser)
gtk_widget_show (item->top);
gtk_widget_show (gtk_widget_get_parent (item->top));
update_feature_example (item, hb_font, script_tag, lang_tag, fontchooser->font_desc);
update_feature_example (fontchooser, item, hb_font, script_tag, lang_tag, fontchooser->font_desc);
if (GTK_IS_CHECK_BUTTON (item->feat))
{
@@ -2260,6 +2280,12 @@ gtk_font_chooser_widget_update_font_features (GtkFontChooserWidget *fontchooser)
}
}
}
if (fontchooser->glyphmap)
{
hb_map_destroy (fontchooser->glyphmap);
fontchooser->glyphmap = NULL;
}
}
g_object_unref (pango_font);
@@ -2272,6 +2298,7 @@ update_font_features (GtkFontChooserWidget *fontchooser)
{
GString *s;
GList *l;
char buf[128];
s = g_string_new ("");
@@ -2287,17 +2314,24 @@ update_font_features (GtkFontChooserWidget *fontchooser)
if (gtk_check_button_get_active (GTK_CHECK_BUTTON (item->feat)) &&
strcmp (item->name, "xxxx") != 0)
{
g_string_append_printf (s, "%s\"%s\" %d", s->len > 0 ? ", " : "", item->name, 1);
hb_feature_to_string (&(hb_feature_t) { item->tag, 1, 0, -1 }, buf, sizeof (buf));
if (s->len > 0)
g_string_append_c (s, ',');
g_string_append (s, buf);
}
}
else if (GTK_IS_CHECK_BUTTON (item->feat))
{
guint32 value;
if (gtk_check_button_get_inconsistent (GTK_CHECK_BUTTON (item->feat)))
continue;
g_string_append_printf (s, "%s\"%s\" %d",
s->len > 0 ? ", " : "", item->name,
gtk_check_button_get_active (GTK_CHECK_BUTTON (item->feat)));
value = gtk_check_button_get_active (GTK_CHECK_BUTTON (item->feat));
hb_feature_to_string (&(hb_feature_t) { item->tag, value, 0, -1 }, buf, sizeof (buf));
if (s->len > 0)
g_string_append_c (s, ',');
g_string_append (s, buf);
}
}
@@ -2335,7 +2369,8 @@ gtk_font_chooser_widget_merge_font_desc (GtkFontChooserWidget *fontchooser
{
double font_size = (double) pango_font_description_get_size (fontchooser->font_desc) / PANGO_SCALE;
/* XXX: This clamps, which can cause it to reloop into here, do we need
* to block its signal handler? */
* to block its signal handler?
*/
gtk_range_set_value (GTK_RANGE (fontchooser->size_slider), font_size);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (fontchooser->size_spin), font_size);
}
+1 -1
View File
@@ -1317,7 +1317,7 @@ gtk_gl_area_set_auto_render (GtkGLArea *area,
*
* Retrieves the `GdkGLContext` used by @area.
*
* Returns: (transfer none): the `GdkGLContext`
* Returns: (transfer none) (nullable): the `GdkGLContext`
*/
GdkGLContext *
gtk_gl_area_get_context (GtkGLArea *area)
+1 -1
View File
@@ -6519,7 +6519,7 @@ gtk_icon_view_get_dest_item_at_pos (GtkIconView *icon_view,
* Creates a `GdkPaintable` representation of the item at @path.
* This image is used for a drag icon.
*
* Returns: (transfer full): a newly-allocated `GdkPaintable` of the drag icon.
* Returns: (transfer full) (nullable): a newly-allocated `GdkPaintable` of the drag icon.
**/
GdkPaintable *
gtk_icon_view_create_drag_icon (GtkIconView *icon_view,
+102 -9
View File
@@ -55,6 +55,7 @@
#include "gtkjoinedmenuprivate.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>
/**
@@ -272,6 +273,7 @@ struct _GtkLabel
guint ellipsize : 3;
guint use_markup : 1;
guint wrap_mode : 3;
guint natural_wrap_mode : 3;
guint single_line_mode : 1;
guint in_click : 1;
guint track_links : 1;
@@ -380,6 +382,7 @@ enum {
PROP_JUSTIFY,
PROP_WRAP,
PROP_WRAP_MODE,
PROP_NATURAL_WRAP_MODE,
PROP_SELECTABLE,
PROP_MNEMONIC_KEYVAL,
PROP_MNEMONIC_WIDGET,
@@ -484,6 +487,9 @@ gtk_label_set_property (GObject *object,
case PROP_WRAP_MODE:
gtk_label_set_wrap_mode (self, g_value_get_enum (value));
break;
case PROP_NATURAL_WRAP_MODE:
gtk_label_set_natural_wrap_mode (self, g_value_get_enum (value));
break;
case PROP_SELECTABLE:
gtk_label_set_selectable (self, g_value_get_boolean (value));
break;
@@ -551,6 +557,9 @@ gtk_label_get_property (GObject *object,
case PROP_WRAP_MODE:
g_value_set_enum (value, self->wrap_mode);
break;
case PROP_NATURAL_WRAP_MODE:
g_value_set_enum (value, self->natural_wrap_mode);
break;
case PROP_SELECTABLE:
g_value_set_boolean (value, gtk_label_get_selectable (self));
break;
@@ -604,6 +613,7 @@ gtk_label_init (GtkLabel *self)
self->jtype = GTK_JUSTIFY_LEFT;
self->wrap = FALSE;
self->wrap_mode = PANGO_WRAP_WORD;
self->natural_wrap_mode = GTK_NATURAL_WRAP_INHERIT;
self->ellipsize = PANGO_ELLIPSIZE_NONE;
self->use_underline = FALSE;
@@ -1218,8 +1228,6 @@ get_width_for_height (GtkLabel *self,
gtk_label_ensure_layout (self);
layout = pango_layout_copy (self->layout);
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_NONE);
if (self->wrap_mode == PANGO_WRAP_WORD_CHAR)
pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
/* binary search for the smallest width where the height doesn't
* eclipse the given height */
@@ -1228,8 +1236,19 @@ get_width_for_height (GtkLabel *self,
pango_layout_set_width (layout, -1);
pango_layout_get_size (layout, &max, NULL);
*natural_width = my_pango_layout_get_width_for_height (layout, height, min, max);
/* first, do natural width */
if (self->natural_wrap_mode == GTK_NATURAL_WRAP_NONE)
{
*natural_width = max;
}
else
{
if (self->natural_wrap_mode == GTK_NATURAL_WRAP_WORD)
pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
*natural_width = my_pango_layout_get_width_for_height (layout, height, min, max);
}
/* then, do minimum width */
if (self->ellipsize != PANGO_ELLIPSIZE_NONE)
{
g_object_unref (layout);
@@ -1237,14 +1256,14 @@ get_width_for_height (GtkLabel *self,
pango_layout_get_size (layout, minimum_width, NULL);
*minimum_width = MAX (*minimum_width, minimum_default);
}
else if (self->wrap_mode == PANGO_WRAP_WORD_CHAR)
else if (self->natural_wrap_mode == GTK_NATURAL_WRAP_INHERIT)
{
pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR);
*minimum_width = my_pango_layout_get_width_for_height (layout, height, min, *natural_width);
*minimum_width = *natural_width;
}
else
{
*minimum_width = *natural_width;
pango_layout_set_wrap (layout, self->wrap_mode);
*minimum_width = my_pango_layout_get_width_for_height (layout, height, min, *natural_width);
}
}
@@ -2375,6 +2394,9 @@ gtk_label_class_init (GtkLabelClass *class)
* This only affects the formatting if line wrapping is on (see the
* [property@Gtk.Label:wrap] property). The default is %PANGO_WRAP_WORD,
* which means wrap on word boundaries.
*
* For sizing behavior, also consider the [property@Gtk.Label:natural-wrap-mode]
* property.
*/
label_props[PROP_WRAP_MODE] =
g_param_spec_enum ("wrap-mode",
@@ -2384,6 +2406,27 @@ gtk_label_class_init (GtkLabelClass *class)
PANGO_WRAP_WORD,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
/**
* GtkLabel:natural-wrap-mode: (attributes org.gtk.Property.get=gtk_label_get_natural_wrap_mode org.gtk.Property.set=gtk_label_set_natural_wrap_mode)
*
* Select the line wrapping for the natural size request.
*
* This only affects the natural size requested. For the actual wrapping used,
* see the [property@Gtk.Label:wrap-mode] property.
*
* The default is %GTK_NATURAL_WRAP_INHERIT, which inherits the behavior of the
* [property@Gtk.Label:wrap-mode] property.
*
* Since: 4.6
*/
label_props[PROP_NATURAL_WRAP_MODE] =
g_param_spec_enum ("natural-wrap-mode",
P_("Natural wrap mode"),
P_("If wrap is set, controls linewrapping for natural size requests"),
GTK_TYPE_NATURAL_WRAP_MODE,
GTK_NATURAL_WRAP_INHERIT,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
/**
* GtkLabel:selectable: (attributes org.gtk.Property.get=gtk_label_get_selectable og.gtk.Property.set=gtk_label_set_selectable)
*
@@ -2450,7 +2493,7 @@ gtk_label_class_init (GtkLabelClass *class)
*
* If this property is set to -1, the width will be calculated automatically.
*
* See the section on [text layout](#text-layout) for details of how
* See the section on [text layout](class.Label.html#text-layout) for details of how
* [property@Gtk.Label:width-chars] and [property@Gtk.Label:max-width-chars]
* determine the width of ellipsized and wrapped labels.
*/
@@ -2486,7 +2529,7 @@ gtk_label_class_init (GtkLabelClass *class)
*
* If this property is set to -1, the width will be calculated automatically.
*
* See the section on [text layout](#text-layout) for details of how
* See the section on [text layout](class.Label.html#text-layout) for details of how
* [property@Gtk.Label:width-chars] and [property@Gtk.Label:max-width-chars]
* determine the width of ellipsized and wrapped labels.
*/
@@ -3998,6 +4041,9 @@ gtk_label_get_wrap (GtkLabel *self)
* This only affects the label if line wrapping is on. (See
* [method@Gtk.Label.set_wrap]) The default is %PANGO_WRAP_WORD
* which means wrap on word boundaries.
*
* For sizing behavior, also consider the [property@Gtk.Label:natural-wrap-mode]
* property.
*/
void
gtk_label_set_wrap_mode (GtkLabel *self,
@@ -4032,6 +4078,53 @@ gtk_label_get_wrap_mode (GtkLabel *self)
return self->wrap_mode;
}
/**
* gtk_label_set_natural_wrap_mode: (attributes org.gtk.Method.set_property=natural-wrap-mode)
* @self: a `GtkLabel`
* @wrap_mode: the line wrapping mode
*
* Select the line wrapping for the natural size request.
*
* This only affects the natural size requested, for the actual wrapping used,
* see the [property@Gtk.Label:wrap-mode] property.
*
* Since: 4.6
*/
void
gtk_label_set_natural_wrap_mode (GtkLabel *self,
GtkNaturalWrapMode wrap_mode)
{
g_return_if_fail (GTK_IS_LABEL (self));
if (self->natural_wrap_mode != wrap_mode)
{
self->natural_wrap_mode = wrap_mode;
g_object_notify_by_pspec (G_OBJECT (self), label_props[PROP_NATURAL_WRAP_MODE]);
gtk_widget_queue_resize (GTK_WIDGET (self));
}
}
/**
* gtk_label_get_natural_wrap_mode: (attributes org.gtk.Method.get_property=natural-wrap-mode)
* @self: a `GtkLabel`
*
* Returns line wrap mode used by the label.
*
* See [method@Gtk.Label.set_natural_wrap_mode].
*
* Returns: the natural line wrap mode
*
* Since: 4.6
*/
GtkNaturalWrapMode
gtk_label_get_natural_wrap_mode (GtkLabel *self)
{
g_return_val_if_fail (GTK_IS_LABEL (self), GTK_NATURAL_WRAP_INHERIT);
return self->natural_wrap_mode;
}
static void
gtk_label_clear_layout (GtkLabel *self)
{
+5
View File
@@ -122,6 +122,11 @@ void gtk_label_set_wrap_mode (GtkLabel *self,
PangoWrapMode wrap_mode);
GDK_AVAILABLE_IN_ALL
PangoWrapMode gtk_label_get_wrap_mode (GtkLabel *self);
GDK_AVAILABLE_IN_4_6
void gtk_label_set_natural_wrap_mode (GtkLabel *self,
GtkNaturalWrapMode wrap_mode);
GDK_AVAILABLE_IN_4_6
GtkNaturalWrapMode gtk_label_get_natural_wrap_mode(GtkLabel *self);
GDK_AVAILABLE_IN_ALL
void gtk_label_set_selectable (GtkLabel *self,
gboolean setting);
+1 -1
View File
@@ -1078,7 +1078,7 @@ gtk_list_box_set_adjustment (GtkListBox *box,
* Gets the adjustment (if any) that the widget uses to
* for vertical scrolling.
*
* Returns: (transfer none): the adjustment
* Returns: (transfer none) (nullable): the adjustment
*/
GtkAdjustment *
gtk_list_box_get_adjustment (GtkListBox *box)
+1 -1
View File
@@ -535,7 +535,7 @@ gtk_lock_button_new (GPermission *permission)
*
* Obtains the `GPermission` object that controls @button.
*
* Returns: (transfer none): the `GPermission` of @button
* Returns: (transfer none) (nullable): the `GPermission` of @button
*/
GPermission *
gtk_lock_button_get_permission (GtkLockButton *button)
+3
View File
@@ -68,6 +68,7 @@
#include "gtknative.h"
#include "gtkpopcountprivate.h"
#include "inspector/init.h"
#include "inspector/window.h"
#include "gdk/gdkeventsprivate.h"
@@ -566,6 +567,8 @@ do_post_parse_initialization (void)
g_signal_connect (display_manager, "notify::default-display",
G_CALLBACK (default_display_notify_cb),
NULL);
gtk_inspector_register_extension ();
}
#ifdef G_PLATFORM_WIN32
+1 -2
View File
@@ -45,8 +45,7 @@
*
* widgets = gtk_widget_observe_children (widget);
*
* controllers = gtk_map_list_model_new (G_TYPE_LIST_MODEL,
* widgets,
* controllers = gtk_map_list_model_new (widgets,
* map_to_controllers,
* NULL, NULL);
*
+4 -2
View File
@@ -1028,6 +1028,7 @@ gtk_menu_button_set_icon_name (GtkMenuButton *menu_button,
*/
gtk_accessible_update_relation (GTK_ACCESSIBLE (menu_button->button),
GTK_ACCESSIBLE_RELATION_LABELLED_BY, menu_button, NULL,
GTK_ACCESSIBLE_RELATION_DESCRIBED_BY, menu_button, NULL,
-1);
image_widget = g_object_new (GTK_TYPE_IMAGE,
@@ -1059,7 +1060,7 @@ gtk_menu_button_set_icon_name (GtkMenuButton *menu_button,
*
* Gets the name of the icon shown in the button.
*
* Returns: the name of the icon shown in the button
* Returns: (nullable): the name of the icon shown in the button
*/
const char *
gtk_menu_button_get_icon_name (GtkMenuButton *menu_button)
@@ -1164,6 +1165,7 @@ gtk_menu_button_set_label (GtkMenuButton *menu_button,
gtk_accessible_update_relation (GTK_ACCESSIBLE (menu_button->button),
GTK_ACCESSIBLE_RELATION_LABELLED_BY, menu_button->label_widget, NULL,
GTK_ACCESSIBLE_RELATION_DESCRIBED_BY, menu_button->label_widget, NULL,
-1);
menu_button->image_widget = NULL;
@@ -1182,7 +1184,7 @@ gtk_menu_button_set_label (GtkMenuButton *menu_button,
*
* Gets the label shown in the button
*
* Returns: the label shown in the button
* Returns: (nullable): the label shown in the button
*/
const char *
gtk_menu_button_get_label (GtkMenuButton *menu_button)
+1 -1
View File
@@ -1873,7 +1873,7 @@ gtk_mount_operation_set_parent (GtkMountOperation *op,
*
* Gets the transient parent used by the `GtkMountOperation`.
*
* Returns: (transfer none): the transient parent for windows shown by @op
* Returns: (transfer none) (nullable): the transient parent for windows shown by @op
*/
GtkWindow *
gtk_mount_operation_get_parent (GtkMountOperation *op)
+1 -1
View File
@@ -396,7 +396,7 @@ gtk_multi_selection_new (GListModel *model)
*
* Returns the underlying model of @self.
*
* Returns: (transfer none): the underlying model
* Returns: (transfer none) (nullable): the underlying model
*/
GListModel *
gtk_multi_selection_get_model (GtkMultiSelection *self)
+1 -1
View File
@@ -267,7 +267,7 @@ gtk_native_get_surface_transform (GtkNative *self,
*
* Finds the `GtkNative` associated with the surface.
*
* Returns: (transfer none): the `GtkNative` that is associated with @surface
* Returns: (transfer none) (nullable): the `GtkNative` that is associated with @surface
*/
GtkNative *
gtk_native_get_for_surface (GdkSurface *surface)
+1 -1
View File
@@ -242,7 +242,7 @@ gtk_no_selection_new (GListModel *model)
*
* Gets the model that @self is wrapping.
*
* Returns: (transfer none): The model being wrapped
* Returns: (transfer none) (nullable): The model being wrapped
*/
GListModel *
gtk_no_selection_get_model (GtkNoSelection *self)
+1 -1
View File
@@ -729,7 +729,7 @@ gtk_password_entry_set_extra_menu (GtkPasswordEntry *entry,
*
* Gets the menu model set with gtk_password_entry_set_extra_menu().
*
* Returns: (transfer none): (nullable): the menu model
* Returns: (transfer none) (nullable): the menu model
*/
GMenuModel *
gtk_password_entry_get_extra_menu (GtkPasswordEntry *entry)
+1 -1
View File
@@ -2103,7 +2103,7 @@ gtk_popover_buildable_init (GtkBuildableIface *iface)
/**
* gtk_popover_set_pointing_to: (attributes org.gtk.Method.set_property=pointing-to)
* @popover: a `GtkPopover`
* @rect: rectangle to point to
* @rect: (nullable): rectangle to point to
*
* Sets the rectangle that @popover points to.
*
+1 -1
View File
@@ -819,7 +819,7 @@ gtk_popover_menu_set_menu_model (GtkPopoverMenu *popover,
*
* Returns the menu model used to populate the popover.
*
* Returns: (transfer none): the menu model of @popover
* Returns: (transfer none) (nullable): the menu model of @popover
*/
GMenuModel *
gtk_popover_menu_get_menu_model (GtkPopoverMenu *popover)
+1 -1
View File
@@ -746,7 +746,7 @@ gtk_popover_menu_bar_set_menu_model (GtkPopoverMenuBar *bar,
*
* Returns the model from which the contents of @bar are taken.
*
* Returns: (transfer none): a `GMenuModel`
* Returns: (transfer none) (nullable): a `GMenuModel`
*/
GMenuModel *
gtk_popover_menu_bar_get_menu_model (GtkPopoverMenuBar *bar)
+9 -9
View File
@@ -154,7 +154,7 @@ gtk_print_settings_copy (GtkPrintSettings *other)
*
* Looks up the string value associated with @key.
*
* Returns: the string value for @key
* Returns: (nullable): the string value for @key
*/
const char *
gtk_print_settings_get (GtkPrintSettings *settings,
@@ -480,7 +480,7 @@ gtk_print_settings_foreach (GtkPrintSettings *settings,
* Convenience function to obtain the value of
* %GTK_PRINT_SETTINGS_PRINTER.
*
* Returns: the printer name
* Returns: (nullable): the printer name
*/
const char *
gtk_print_settings_get_printer (GtkPrintSettings *settings)
@@ -574,7 +574,7 @@ gtk_print_settings_set_orientation (GtkPrintSettings *settings,
* Gets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
* converted to a `GtkPaperSize`.
*
* Returns: the paper size
* Returns: (nullable): the paper size
*/
GtkPaperSize *
gtk_print_settings_get_paper_size (GtkPrintSettings *settings)
@@ -779,7 +779,7 @@ gtk_print_settings_set_collate (GtkPrintSettings *settings,
*
* Gets the value of %GTK_PRINT_SETTINGS_REVERSE.
*
* Returns: whether to reverse the order of the printed pages
* Returns: whether to reverse the order of the printed pages
*/
gboolean
gtk_print_settings_get_reverse (GtkPrintSettings *settings)
@@ -1415,7 +1415,7 @@ gtk_print_settings_set_page_ranges (GtkPrintSettings *settings,
*
* Gets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
*
* Returns: the default source
* Returns: (nullable): the default source
*/
const char *
gtk_print_settings_get_default_source (GtkPrintSettings *settings)
@@ -1445,7 +1445,7 @@ gtk_print_settings_set_default_source (GtkPrintSettings *settings,
*
* The set of media types is defined in PWG 5101.1-2002 PWG.
*
* Returns: the media type
* Returns: (nullable): the media type
*/
const char *
gtk_print_settings_get_media_type (GtkPrintSettings *settings)
@@ -1475,7 +1475,7 @@ gtk_print_settings_set_media_type (GtkPrintSettings *settings,
*
* Gets the value of %GTK_PRINT_SETTINGS_DITHER.
*
* Returns: the dithering that is used
* Returns: (nullable): the dithering that is used
*/
const char *
gtk_print_settings_get_dither (GtkPrintSettings *settings)
@@ -1503,7 +1503,7 @@ gtk_print_settings_set_dither (GtkPrintSettings *settings,
*
* Gets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
*
* Returns: the finishings
* Returns: (nullable): the finishings
*/
const char *
gtk_print_settings_get_finishings (GtkPrintSettings *settings)
@@ -1531,7 +1531,7 @@ gtk_print_settings_set_finishings (GtkPrintSettings *settings,
*
* Gets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
*
* Returns: the output bin
* Returns: (nullable): the output bin
*/
const char *
gtk_print_settings_get_output_bin (GtkPrintSettings *settings)
+1
View File
@@ -1025,6 +1025,7 @@ gtk_progress_bar_set_inverted (GtkProgressBar *pbar,
pbar->inverted = inverted;
gtk_widget_queue_allocate (pbar->trough_widget);
update_node_classes (pbar);
g_object_notify_by_pspec (G_OBJECT (pbar), progress_props[PROP_INVERTED]);
+2 -2
View File
@@ -130,7 +130,7 @@ gtk_scrollable_default_init (GtkScrollableInterface *iface)
*
* Retrieves the `GtkAdjustment` used for horizontal scrolling.
*
* Returns: (transfer none): horizontal `GtkAdjustment`.
* Returns: (transfer none) (nullable): horizontal `GtkAdjustment`.
*/
GtkAdjustment *
gtk_scrollable_get_hadjustment (GtkScrollable *scrollable)
@@ -174,7 +174,7 @@ gtk_scrollable_set_hadjustment (GtkScrollable *scrollable,
*
* Retrieves the `GtkAdjustment` used for vertical scrolling.
*
* Returns: (transfer none): vertical `GtkAdjustment`.
* Returns: (transfer none) (nullable): vertical `GtkAdjustment`.
*/
GtkAdjustment *
gtk_scrollable_get_vadjustment (GtkScrollable *scrollable)
+1 -1
View File
@@ -663,7 +663,7 @@ gtk_search_bar_set_key_capture_widget (GtkSearchBar *bar,
*
* Gets the widget that @bar is capturing key events from.
*
* Returns: (transfer none): The key capture widget.
* Returns: (nullable) (transfer none): The key capture widget.
**/
GtkWidget *
gtk_search_bar_get_key_capture_widget (GtkSearchBar *bar)
+1 -1
View File
@@ -763,7 +763,7 @@ gtk_search_entry_set_key_capture_widget (GtkSearchEntry *entry,
*
* Gets the widget that @entry is capturing key events from.
*
* Returns: (transfer none): The key capture widget.
* Returns: (nullable) (transfer none): The key capture widget.
*/
GtkWidget *
gtk_search_entry_get_key_capture_widget (GtkSearchEntry *entry)
+3 -7
View File
@@ -461,9 +461,9 @@ gtk_widget_query_size_for_orientation (GtkWidget *widget,
* @minimum: (out) (optional): location to store the minimum size
* @natural: (out) (optional): location to store the natural size
* @minimum_baseline: (out) (optional): location to store the baseline
* position for the minimum size
* position for the minimum size, or -1 to report no baseline
* @natural_baseline: (out) (optional): location to store the baseline
* position for the natural size
* position for the natural size, or -1 to report no baseline
*
* Measures @widget in the orientation @orientation and for the given @for_size.
*
@@ -493,11 +493,7 @@ gtk_widget_measure (GtkWidget *widget,
int min_opposite_size;
gtk_widget_measure (widget, OPPOSITE_ORIENTATION (orientation), -1, &min_opposite_size, NULL, NULL, NULL);
if (for_size < min_opposite_size)
{
g_critical ("gtk_widget_measure: assertion 'for_size >= minimum opposite size' failed: %u >= %u",
for_size, min_opposite_size);
for_size = min_opposite_size;
}
for_size = min_opposite_size;
}
/* This is the main function that checks for a cached size and
+2 -5
View File
@@ -981,11 +981,8 @@ gtk_text_history_selection_changed (GtkTextHistory *self,
return_if_applying (self);
return_if_irreversible (self);
if (self->in_user == 0 && self->irreversible == 0)
{
self->selection.insert = CLAMP (selection_insert, -1, G_MAXINT);
self->selection.bound = CLAMP (selection_bound, -1, G_MAXINT);
}
self->selection.insert = CLAMP (selection_insert, -1, G_MAXINT);
self->selection.bound = CLAMP (selection_bound, -1, G_MAXINT);
}
void
+1 -1
View File
@@ -346,7 +346,7 @@ gtk_text_mark_get_deleted (GtkTextMark *mark)
*
* Returns %NULL if the mark is deleted.
*
* Returns: (transfer none): the marks `GtkTextBuffer`
* Returns: (transfer none) (nullable): the marks `GtkTextBuffer`
*/
GtkTextBuffer*
gtk_text_mark_get_buffer (GtkTextMark *mark)
+10 -2
View File
@@ -10101,7 +10101,11 @@ gtk_text_view_real_undo (GtkWidget *widget,
GtkTextView *text_view = GTK_TEXT_VIEW (widget);
if (gtk_text_view_get_editable (text_view))
gtk_text_buffer_undo (text_view->priv->buffer);
{
gtk_text_buffer_undo (text_view->priv->buffer);
gtk_text_view_scroll_mark_onscreen (text_view,
gtk_text_buffer_get_insert (text_view->priv->buffer));
}
}
static void
@@ -10112,7 +10116,11 @@ gtk_text_view_real_redo (GtkWidget *widget,
GtkTextView *text_view = GTK_TEXT_VIEW (widget);
if (gtk_text_view_get_editable (text_view))
gtk_text_buffer_redo (text_view->priv->buffer);
{
gtk_text_buffer_redo (text_view->priv->buffer);
gtk_text_view_scroll_mark_onscreen (text_view,
gtk_text_buffer_get_insert (text_view->priv->buffer));
}
}
static void
+2 -1
View File
@@ -4971,7 +4971,8 @@ gtk_widget_real_css_changed (GtkWidget *widget,
{
gtk_widget_queue_resize (widget);
}
else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TRANSFORM))
else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TRANSFORM) &&
priv->parent)
{
gtk_widget_queue_allocate (priv->parent);
}
+9 -1
View File
@@ -148,6 +148,14 @@
* # Accessibility
*
* `GtkWindow` uses the %GTK_ACCESSIBLE_ROLE_WINDOW role.
*
* # Actions
*
* `GtkWindow` defines a set of built-in actions:
* - `default.activate`: Activate the default widget.
* - `window.minimize`: Minimize the window.
* - `window.toggle-maximized`: Maximize or restore the window.
* - `window.close`: Close the window.
*/
#define MENU_BAR_ACCEL GDK_KEY_F10
@@ -1200,7 +1208,7 @@ gtk_window_class_init (GtkWindowClass *klass)
/**
* GtkWindow|window.minimize:
*
* Close the window.
* Minimize the window.
*/
gtk_widget_class_install_action (widget_class, "window.minimize", NULL,
gtk_window_activate_minimize);
+131 -38
View File
@@ -25,6 +25,7 @@
#include "gtkbinlayout.h"
#include "gtkbox.h"
#include "gtkdebug.h"
#include "gtkdropcontrollermotion.h"
#include "gtklabel.h"
#include "gtklistbox.h"
#include "gtktogglebutton.h"
@@ -37,6 +38,9 @@ struct _GtkInspectorClipboard
GtkWidget *swin;
GtkWidget *dnd_formats;
GtkWidget *dnd_info;
GtkWidget *clipboard_formats;
GtkWidget *clipboard_info;
@@ -56,12 +60,17 @@ load_gtype_value (GObject *source,
GAsyncResult *res,
gpointer data)
{
GdkClipboard *clipboard = GDK_CLIPBOARD (source);
GtkDataViewer *viewer = data;
const GValue *value;
GError *error = NULL;
value = gdk_clipboard_read_value_finish (clipboard, res, &error);
if (GDK_IS_CLIPBOARD (source))
value = gdk_clipboard_read_value_finish (GDK_CLIPBOARD (source), res, &error);
else if (GDK_IS_DROP (source))
value = gdk_drop_read_value_finish (GDK_DROP (source), res, &error);
else
g_assert_not_reached ();
if (value == NULL)
gtk_data_viewer_load_error (viewer, error);
else
@@ -75,14 +84,30 @@ load_gtype (GtkDataViewer *viewer,
GCancellable *cancellable,
gpointer gtype)
{
GdkClipboard *clipboard = g_object_get_data (G_OBJECT (viewer), "clipboard");
GObject *data_source = g_object_get_data (G_OBJECT (viewer), "data-source");
gdk_clipboard_read_value_async (clipboard,
GPOINTER_TO_SIZE (gtype),
G_PRIORITY_DEFAULT,
cancellable,
load_gtype_value,
g_object_ref (viewer));
if (GDK_IS_CLIPBOARD (data_source))
{
gdk_clipboard_read_value_async (GDK_CLIPBOARD (data_source),
GPOINTER_TO_SIZE (gtype),
G_PRIORITY_DEFAULT,
cancellable,
load_gtype_value,
g_object_ref (viewer));
}
else if (GDK_IS_DROP (data_source))
{
gdk_drop_read_value_async (GDK_DROP (data_source),
GPOINTER_TO_SIZE (gtype),
G_PRIORITY_DEFAULT,
cancellable,
load_gtype_value,
g_object_ref (viewer));
}
else
{
g_assert_not_reached ();
}
return TRUE;
}
@@ -92,13 +117,18 @@ load_mime_type_stream (GObject *source,
GAsyncResult *res,
gpointer data)
{
GdkClipboard *clipboard = GDK_CLIPBOARD (source);
GtkDataViewer *viewer = data;
GInputStream *stream;
GError *error = NULL;
const char *mime_type;
stream = gdk_clipboard_read_finish (clipboard, res, &mime_type, &error);
if (GDK_IS_CLIPBOARD (source))
stream = gdk_clipboard_read_finish (GDK_CLIPBOARD (source), res, &mime_type, &error);
else if (GDK_IS_DROP (source))
stream = gdk_drop_read_finish (GDK_DROP (source), res, &mime_type, &error);
else
g_assert_not_reached ();
if (stream == NULL)
gtk_data_viewer_load_error (viewer, error);
else
@@ -112,23 +142,48 @@ load_mime_type (GtkDataViewer *viewer,
GCancellable *cancellable,
gpointer mime_type)
{
GdkClipboard *clipboard = g_object_get_data (G_OBJECT (viewer), "clipboard");
GObject *data_source = g_object_get_data (G_OBJECT (viewer), "data-source");
gdk_clipboard_read_async (clipboard,
(const char *[2]) { mime_type, NULL },
G_PRIORITY_DEFAULT,
cancellable,
load_mime_type_stream,
g_object_ref (viewer));
if (GDK_IS_CLIPBOARD (data_source))
{
gdk_clipboard_read_async (GDK_CLIPBOARD (data_source),
(const char *[2]) { mime_type, NULL },
G_PRIORITY_DEFAULT,
cancellable,
load_mime_type_stream,
g_object_ref (viewer));
}
else if (GDK_IS_DROP (data_source))
{
gdk_drop_read_async (GDK_DROP (data_source),
(const char *[2]) { mime_type, NULL },
G_PRIORITY_DEFAULT,
cancellable,
load_mime_type_stream,
g_object_ref (viewer));
}
else
{
g_assert_not_reached ();
}
return TRUE;
}
static void
on_drop_row_enter (GtkDropControllerMotion *motion,
double x,
double y,
GtkWidget *viewer)
{
gtk_widget_set_visible (viewer, TRUE);
}
static void
add_content_type_row (GtkInspectorClipboard *self,
GtkListBox *list,
const char *type_name,
GdkClipboard *clipboard,
GObject *data_source,
GCallback load_func,
gpointer load_func_data)
{
@@ -146,19 +201,39 @@ add_content_type_row (GtkInspectorClipboard *self,
gtk_widget_set_hexpand (label, TRUE);
gtk_box_append (GTK_BOX (hbox), label);
button = gtk_toggle_button_new_with_label (_("Show"));
gtk_widget_set_halign (button, GTK_ALIGN_END);
gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
gtk_box_append (GTK_BOX (hbox), button);
viewer = gtk_data_viewer_new ();
g_signal_connect (viewer, "load", load_func, load_func_data);
g_object_set_data (G_OBJECT (viewer), "clipboard", clipboard);
g_object_bind_property (G_OBJECT (button), "active",
G_OBJECT (viewer), "visible",
G_BINDING_SYNC_CREATE);
g_object_set_data (G_OBJECT (viewer), "data-source", data_source);
gtk_box_append (GTK_BOX (vbox), viewer);
if (GDK_IS_CLIPBOARD (data_source))
{
button = gtk_toggle_button_new_with_label (_("Show"));
gtk_widget_set_halign (button, GTK_ALIGN_END);
gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
gtk_box_append (GTK_BOX (hbox), button);
g_object_bind_property (G_OBJECT (button), "active",
G_OBJECT (viewer), "visible",
G_BINDING_SYNC_CREATE);
}
else
{
GtkEventController *controller = gtk_drop_controller_motion_new ();
g_signal_connect (controller, "enter", G_CALLBACK (on_drop_row_enter), viewer);
gtk_widget_add_controller (vbox, controller);
gtk_widget_set_visible (viewer, FALSE);
label = gtk_label_new (_("Hover to load"));
g_object_bind_property (G_OBJECT (viewer), "visible",
G_OBJECT (label), "visible",
G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN);
gtk_widget_set_halign (label, GTK_ALIGN_END);
gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
gtk_box_append (GTK_BOX (hbox), label);
}
row = gtk_list_box_row_new ();
gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), vbox);
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
@@ -169,10 +244,10 @@ add_content_type_row (GtkInspectorClipboard *self,
static void
init_formats (GtkInspectorClipboard *self,
GtkListBox *list,
GdkClipboard *clipboard)
GdkContentFormats *formats,
GObject *data_source)
{
GtkListBoxRow *row;
GdkContentFormats *formats;
const char * const *mime_types;
const GType *gtypes;
gsize i, n;
@@ -180,15 +255,13 @@ init_formats (GtkInspectorClipboard *self,
while ((row = gtk_list_box_get_row_at_index (list, 1)))
gtk_list_box_remove (list, GTK_WIDGET (row));
formats = gdk_clipboard_get_formats (clipboard);
gtypes = gdk_content_formats_get_gtypes (formats, &n);
for (i = 0; i < n; i++)
add_content_type_row (self, list, g_type_name (gtypes[i]), clipboard, G_CALLBACK (load_gtype), GSIZE_TO_POINTER (gtypes[i]));
add_content_type_row (self, list, g_type_name (gtypes[i]), data_source, G_CALLBACK (load_gtype), GSIZE_TO_POINTER (gtypes[i]));
mime_types = gdk_content_formats_get_mime_types (formats, &n);
for (i = 0; i < n; i++)
add_content_type_row (self, list, mime_types[i], clipboard, G_CALLBACK (load_mime_type), (gpointer) mime_types[i]);
add_content_type_row (self, list, mime_types[i], data_source, G_CALLBACK (load_mime_type), (gpointer) mime_types[i]);
}
static void
@@ -219,7 +292,7 @@ clipboard_notify (GdkClipboard *clipboard,
{
if (g_str_equal (pspec->name, "formats"))
{
init_formats (self, GTK_LIST_BOX (self->clipboard_formats), clipboard);
init_formats (self, GTK_LIST_BOX (self->clipboard_formats), gdk_clipboard_get_formats (clipboard), G_OBJECT (clipboard));
}
init_info (self, GTK_LABEL (self->clipboard_info), clipboard);
@@ -232,12 +305,28 @@ primary_notify (GdkClipboard *clipboard,
{
if (g_str_equal (pspec->name, "formats"))
{
init_formats (self, GTK_LIST_BOX (self->primary_formats), clipboard);
init_formats (self, GTK_LIST_BOX (self->primary_formats), gdk_clipboard_get_formats (clipboard), G_OBJECT (clipboard));
}
init_info (self, GTK_LABEL (self->primary_info), clipboard);
}
static void
on_drop_enter (GtkDropControllerMotion *motion,
double x,
double y,
GtkInspectorClipboard *self)
{
GdkDrop *drop = gtk_drop_controller_motion_get_drop (motion);
init_formats (self, GTK_LIST_BOX (self->dnd_formats), gdk_drop_get_formats (drop), G_OBJECT (drop));
if (gdk_drop_get_drag (drop))
gtk_label_set_text (GTK_LABEL (self->dnd_info), C_("clipboard", "local"));
else
gtk_label_set_text (GTK_LABEL (self->dnd_info), C_("clipboard", "remote"));
}
static void
gtk_inspector_clipboard_unset_display (GtkInspectorClipboard *self)
{
@@ -281,11 +370,15 @@ gtk_inspector_clipboard_class_init (GtkInspectorClipboardClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/clipboard.ui");
gtk_widget_class_bind_template_child (widget_class, GtkInspectorClipboard, swin);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorClipboard, dnd_formats);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorClipboard, dnd_info);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorClipboard, clipboard_formats);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorClipboard, clipboard_info);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorClipboard, primary_formats);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorClipboard, primary_info);
gtk_widget_class_bind_template_callback (widget_class, on_drop_enter);
gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
}
@@ -304,12 +397,12 @@ gtk_inspector_clipboard_set_display (GtkInspectorClipboard *self,
clipboard = gdk_display_get_clipboard (display);
g_signal_connect (clipboard, "notify", G_CALLBACK (clipboard_notify), self);
init_formats (self, GTK_LIST_BOX (self->clipboard_formats), clipboard);
init_formats (self, GTK_LIST_BOX (self->clipboard_formats), gdk_clipboard_get_formats (clipboard), G_OBJECT (clipboard));
init_info (self, GTK_LABEL (self->clipboard_info), clipboard);
clipboard = gdk_display_get_primary_clipboard (display);
g_signal_connect (clipboard, "notify", G_CALLBACK (primary_notify), self);
init_formats (self, GTK_LIST_BOX (self->primary_formats), clipboard);
init_formats (self, GTK_LIST_BOX (self->primary_formats), gdk_clipboard_get_formats (clipboard), G_OBJECT (clipboard));
init_info (self, GTK_LABEL (self->primary_info), clipboard);
}
+44
View File
@@ -12,6 +12,50 @@
<property name="margin-top">60</property>
<property name="margin-bottom">60</property>
<property name="spacing">10</property>
<child>
<object class="GtkFrame">
<child>
<object class="GtkListBox" id="dnd_formats">
<property name="selection-mode">none</property>
<style>
<class name="rich-list"/>
</style>
<child>
<object class="GtkListBoxRow">
<property name="activatable">0</property>
<child>
<object class="GtkBox">
<property name="spacing">40</property>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Drag and hold here</property>
<property name="halign">start</property>
<property name="valign">baseline</property>
<property name="xalign">0.0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="dnd_info">
<property name="selectable">1</property>
<property name="halign">end</property>
<property name="valign">baseline</property>
<property name="ellipsize">end</property>
<property name="hexpand">1</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkDropControllerMotion">
<signal name="enter" handler="on_drop_enter" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame">
<child>
+21 -17
View File
@@ -55,10 +55,14 @@
#include "gtkmodulesprivate.h"
static GIOExtensionPoint *extension_point = NULL;
void
gtk_inspector_init (void)
{
static GIOExtensionPoint *extension_point = NULL;
GIOModuleScope *scope;
char **paths;
int i;
g_type_ensure (G_TYPE_LIST_STORE);
@@ -89,26 +93,26 @@ gtk_inspector_init (void)
g_type_ensure (GTK_TYPE_INSPECTOR_VISUAL);
g_type_ensure (GTK_TYPE_INSPECTOR_WINDOW);
if (extension_point == NULL)
{
GIOModuleScope *scope;
char **paths;
int i;
paths = _gtk_get_module_path ("inspector");
scope = g_io_module_scope_new (G_IO_MODULE_SCOPE_BLOCK_DUPLICATES);
extension_point = g_io_extension_point_register ("gtk-inspector-page");
g_io_extension_point_set_required_type (extension_point, GTK_TYPE_WIDGET);
for (i = 0; paths[i] != NULL; i++)
g_io_modules_load_all_in_directory_with_scope (paths[i], scope);
paths = _gtk_get_module_path ("inspector");
scope = g_io_module_scope_new (G_IO_MODULE_SCOPE_BLOCK_DUPLICATES);
for (i = 0; paths[i] != NULL; i++)
g_io_modules_load_all_in_directory_with_scope (paths[i], scope);
g_strfreev (paths);
g_io_module_scope_free (scope);
}
g_strfreev (paths);
g_io_module_scope_free (scope);
gtk_css_provider_set_keep_css_sections ();
}
void
gtk_inspector_register_extension (void)
{
if (extension_point == NULL)
{
extension_point = g_io_extension_point_register ("gtk-inspector-page");
g_io_extension_point_set_required_type (extension_point, GTK_TYPE_WIDGET);
}
}
// vim: set et sw=2 ts=2:
+2 -4
View File
@@ -18,12 +18,10 @@
#ifndef _GTK_INSPECTOR_INIT_H_
#define _GTK_INSPECTOR_INIT_H_
#include <gdk/gdkversionmacros.h>
G_BEGIN_DECLS
GDK_AVAILABLE_IN_ALL
void gtk_inspector_init (void);
void gtk_inspector_init (void);
void gtk_inspector_register_extension (void);
G_END_DECLS
+16 -2
View File
@@ -18,6 +18,7 @@
#include <hb-ot.h>
#include "language-names.h"
#include "gtkprivate.h"
#ifndef ISO_CODES_PREFIX
#define ISO_CODES_PREFIX "/usr"
@@ -200,11 +201,22 @@ languages_variant_init (const char *variant)
char *filename;
GError *error;
bindtextdomain (variant, ISO_CODES_LOCALESDIR);
char *iso_codes_datadir;
char *iso_codes_localedir;
#ifdef G_OS_WIN32
iso_codes_datadir = g_build_filename (_gtk_get_datadir (), "xml", "iso-codes", NULL);
iso_codes_localedir = _gtk_get_localedir ();
#else
iso_codes_datadir = g_strdup (ISO_CODES_DATADIR);
iso_codes_localedir = g_strdup (ISO_CODES_LOCALESDIR);
#endif
bindtextdomain (variant, iso_codes_localedir);
bind_textdomain_codeset (variant, "UTF-8");
error = NULL;
filename = g_strconcat (ISO_CODES_DATADIR, "/", variant, ".xml", NULL);
filename = g_strconcat (iso_codes_datadir, "/", variant, ".xml", NULL);
res = g_file_get_contents (filename, &buf, &buf_len, &error);
if (res)
{
@@ -230,6 +242,8 @@ languages_variant_init (const char *variant)
g_free (filename);
g_free (buf);
g_free (iso_codes_datadir);
g_free (iso_codes_localedir);
}
static void
+7 -19
View File
@@ -883,6 +883,7 @@ if not meson.is_cross_build() and build_machine.system() == 'linux' and objcopy.
depfile : 'gtk.gresource.d',
command : [glib_compile_resources,
'--generate',
'--internal',
'--target=@OUTPUT@',
'--dependency-file=@DEPFILE@',
'--sourcedir=' + meson.current_source_dir(),
@@ -897,6 +898,7 @@ if not meson.is_cross_build() and build_machine.system() == 'linux' and objcopy.
depfile : 'gtkresources.c.d',
command : [glib_compile_resources,
'--generate-source',
'--internal',
'--target=@OUTPUT@',
'--dependency-file=@DEPFILE@',
'--sourcedir=' + meson.current_source_dir(),
@@ -913,6 +915,7 @@ if not meson.is_cross_build() and build_machine.system() == 'linux' and objcopy.
depfile : 'gtkresources.h.d',
command : [glib_compile_resources,
'--generate-header',
'--internal',
'--target=@OUTPUT@',
'--dependency-file=@DEPFILE@',
'--sourcedir=' + meson.current_source_dir(),
@@ -927,6 +930,7 @@ if not meson.is_cross_build() and build_machine.system() == 'linux' and objcopy.
input : gtk_gresource,
output : 'gtkresources_blob.o',
command : [ld,
'-z', 'noexecstack',
'-r',
'-b','binary',
'@INPUT@',
@@ -937,6 +941,7 @@ if not meson.is_cross_build() and build_machine.system() == 'linux' and objcopy.
input : gtk_resources_binary,
output : 'gtkresources_blob2.o',
command : [objcopy,
'--strip-all',
'--add-symbol','_gtk_resource_data=.data:0',
'@INPUT@',
'@OUTPUT@'])
@@ -1101,7 +1106,7 @@ if harfbuzz_dep.found() and pangoft_dep.found()
endif
if x11_enabled
x11_data_prefix = dependency('x11').get_pkgconfig_variable('prefix')
x11_data_prefix = dependency('x11').get_variable(pkgconfig: 'prefix')
gtk_cargs += [ '-DX11_DATA_PREFIX="@0@"'.format(x11_data_prefix), ]
gtk_sources += gtk_x11_sources
@@ -1205,28 +1210,11 @@ libgtk_static = static_library('gtk',
link_with: [libgtk_css, libgdk, libgsk ],
)
# `link_whole:` is actually only supported on Visual Studio 2015 Update 2
# or later via the linker flag `/WHOLEARCHIVE:<static_lib>`, so we need
# to work around it for Visual Studio 2013. Note that all needed static
# libs are required so that we grab the object files from each of them to
# link the final GTK DLL.
whole_archives = []
gtk4_objs = []
if cc.get_id() == 'msvc' and cc.version().split('.').get(0) < '19'
foreach target : [ libgtk_static, libgtk_css, libgdk, libgdk_win32, libgsk, libgsk_f16c ]
gtk4_objs += target.extract_all_objects(recursive: false)
endforeach
else
whole_archives = [libgtk_static, libgtk_css, libgdk, libgsk ]
endif
libgtk = shared_library('gtk-4',
c_args: gtk_cargs + common_cflags,
include_directories: [confinc, gdkinc, gskinc, gtkinc],
dependencies: gtk_deps + [libgtk_css_dep, libgdk_dep, libgsk_dep],
link_whole: whole_archives,
objects: gtk4_objs,
link_whole: [libgtk_static, libgtk_css, libgdk, libgsk ],
link_args: common_ldflags,
soversion: gtk_soversion,
version: gtk_library_version,
+6 -6
View File
@@ -1,5 +1,5 @@
project('gtk', 'c',
version: '4.5.1',
version: '4.6.0',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
@@ -456,7 +456,7 @@ colord_dep = dependency('colord', version: '>= 0.1.9', required: get_option('col
cdata.set('HAVE_COLORD', colord_dep.found())
if iso_codes_dep.found()
cdata.set_quoted('ISO_CODES_PREFIX', iso_codes_dep.get_pkgconfig_variable('prefix'))
cdata.set_quoted('ISO_CODES_PREFIX', iso_codes_dep.get_variable(pkgconfig: 'prefix'))
else
cdata.set_quoted('ISO_CODES_PREFIX', '/usr')
endif
@@ -515,7 +515,7 @@ if wayland_enabled
if not wlprotocolsdep.found()
wlproto_dir = subproject('wayland-protocols').get_variable('wayland_protocols_srcdir')
else
wlproto_dir = wlprotocolsdep.get_pkgconfig_variable('pkgdatadir')
wlproto_dir = wlprotocolsdep.get_variable(pkgconfig: 'pkgdatadir')
endif
wayland_pkgs = [
@@ -614,7 +614,7 @@ if win32_enabled
else
pc_gdk_extra_libs += ['-Wl,-luuid']
endif
pc_gdk_extra_libs += ['-lwinmm', '-ldwmapi', '-lsetupapi', '-lcfgmgr32']
pc_gdk_extra_libs += ['-lwinmm', '-ldwmapi', '-lsetupapi', '-lcfgmgr32', '-lhid']
# Check whether libepoxy is built with EGL support on Windows
endif
@@ -709,8 +709,8 @@ endif
graphene_dep_type = graphene_dep.type_name()
if graphene_dep_type == 'pkgconfig'
graphene_has_sse2 = graphene_dep.get_pkgconfig_variable('graphene_has_sse2') == '1'
graphene_has_gcc = graphene_dep.get_pkgconfig_variable('graphene_has_gcc') == '1'
graphene_has_sse2 = graphene_dep.get_variable(pkgconfig: 'graphene_has_sse2') == '1'
graphene_has_gcc = graphene_dep.get_variable(pkgconfig: 'graphene_has_gcc') == '1'
else
graphene_simd = subproject('graphene').get_variable('graphene_simd')
graphene_has_sse2 = graphene_simd.contains('sse2')
+1
View File
@@ -7,6 +7,7 @@ demos/gtk-demo/appwindow.c
demos/gtk-demo/blendmodes.ui
demos/gtk-demo/changedisplay.c
demos/gtk-demo/clipboard.c
demos/gtk-demo/clipboard.ui
demos/gtk-demo/combobox.c
demos/gtk-demo/constraints_builder.ui
demos/gtk-demo/constraints.ui
+248 -232
View File
File diff suppressed because it is too large Load Diff
+268 -283
View File
File diff suppressed because it is too large Load Diff
+51 -39
View File
@@ -7,12 +7,13 @@
# Sérgio Cardeira <cardeira dot sergio at gmail dot com>, 2016.
# Tiago Santos <tiagofsantos81@sapo.pt>, 2014 - 2016.
# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: 3.12\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2021-12-13 19:56+0000\n"
"PO-Revision-Date: 2021-12-14 14:19+0000\n"
"POT-Creation-Date: 2021-12-22 08:10+0000\n"
"PO-Revision-Date: 2021-12-22 14:05+0000\n"
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
"Language-Team: Hugo Carvalho\n"
"Language: pt\n"
@@ -797,7 +798,7 @@ msgid "Bookmark file to load"
msgstr "Ficheiro favorito para carregar"
#: gtk/gtkbookmarklist.c:228 gtk/gtkcellrenderertext.c:267 gtk/gtkentry.c:965
#: gtk/gtklabel.c:2260 gtk/gtktext.c:929
#: gtk/gtklabel.c:2297 gtk/gtktext.c:929
msgid "Attributes"
msgstr "Atributos"
@@ -920,7 +921,7 @@ msgid "scope to use when instantiating listitems"
msgstr "escopo para usar ao instanciar “listitems”"
#: gtk/gtkbutton.c:222 gtk/gtkcheckbutton.c:562 gtk/gtkexpander.c:333
#: gtk/gtkframe.c:170 gtk/gtklabel.c:2248 gtk/gtkmenubutton.c:478
#: gtk/gtkframe.c:170 gtk/gtklabel.c:2285 gtk/gtkmenubutton.c:478
msgid "Label"
msgstr "Rótulo"
@@ -933,12 +934,12 @@ msgstr ""
"componente"
#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:590 gtk/gtkexpander.c:346
#: gtk/gtklabel.c:2286 gtk/gtkmenubutton.c:490 gtk/gtkstack.c:491
#: gtk/gtklabel.c:2323 gtk/gtkmenubutton.c:490 gtk/gtkstack.c:491
msgid "Use underline"
msgstr "Utilizar sublinhado"
#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:591 gtk/gtkexpander.c:347
#: gtk/gtklabel.c:2287 gtk/gtkmenubutton.c:491
#: gtk/gtklabel.c:2324 gtk/gtkmenubutton.c:491
msgid ""
"If set, an underline in the text indicates the next character should be used "
"for the mnemonic accelerator key"
@@ -1612,7 +1613,7 @@ msgstr ""
"dica quando for renderizar o texto. Se não entende este parâmetro, "
"provavelmente não precisa dele"
#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2421 gtk/gtkprogressbar.c:267
#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2482 gtk/gtkprogressbar.c:267
msgid "Ellipsize"
msgstr "Reticências"
@@ -1624,15 +1625,15 @@ msgstr ""
"O local preferido onde colocar reticências na cadeia, se o desenhador de "
"célula não possuir espaço suficiente para mostrar a cadeia completa"
#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2440
#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2501
msgid "Width In Characters"
msgstr "Largura em caracteres"
#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2441
#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2502
msgid "The desired width of the label, in characters"
msgstr "A largura desejada da etiqueta, em caracteres"
#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2476
#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2537
msgid "Maximum Width In Characters"
msgstr "Largura máxima em caracteres"
@@ -1955,7 +1956,7 @@ msgstr "Cor RGBA"
msgid "Color as RGBA"
msgstr "Cor como RGBA"
#: gtk/gtkcolorswatch.c:515 gtk/gtklabel.c:2375 gtk/gtklistbox.c:3570
#: gtk/gtkcolorswatch.c:515 gtk/gtklabel.c:2436 gtk/gtklistbox.c:3570
#: gtk/gtklistitem.c:217
msgid "Selectable"
msgstr "Selecionável"
@@ -2547,11 +2548,11 @@ msgstr "Largura máxima em caracteres"
msgid "The desired maximum width of the entry, in characters"
msgstr "A largura máxima desejada da entrada, em caracteres"
#: gtk/gtkeditable.c:473 gtk/gtklabel.c:2317
#: gtk/gtkeditable.c:473 gtk/gtklabel.c:2354
msgid "X align"
msgstr "Alinh x"
#: gtk/gtkeditable.c:474 gtk/gtklabel.c:2318
#: gtk/gtkeditable.c:474 gtk/gtklabel.c:2355
msgid ""
"The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL "
"layouts."
@@ -2868,7 +2869,7 @@ msgstr "Ícone de Emoji"
msgid "Whether to show an icon for Emoji"
msgstr "Se mostra ou não um ícone para o Emoji"
#: gtk/gtkentry.c:1002 gtk/gtklabel.c:2506 gtk/gtkpasswordentry.c:504
#: gtk/gtkentry.c:1002 gtk/gtklabel.c:2567 gtk/gtkpasswordentry.c:504
#: gtk/gtktext.c:990 gtk/gtktextview.c:1158
msgid "Extra menu"
msgstr "Menu extra"
@@ -3011,11 +3012,11 @@ msgstr "Se o expansor foi aberto ou não para revelar o widget do sub-processo"
msgid "Text of the expanders label"
msgstr "Texto do rótulo do expansor"
#: gtk/gtkexpander.c:359 gtk/gtklabel.c:2274 gtk/gtkmodelbutton.c:1211
#: gtk/gtkexpander.c:359 gtk/gtklabel.c:2311 gtk/gtkmodelbutton.c:1211
msgid "Use markup"
msgstr "Usar markup"
#: gtk/gtkexpander.c:360 gtk/gtklabel.c:2275
#: gtk/gtkexpander.c:360 gtk/gtklabel.c:2312
msgid "The text of the label includes XML markup. See pango_parse_markup()"
msgstr "O texto da etiqueta inclui código XML. Consulte pango_parse_markup()"
@@ -3714,19 +3715,19 @@ msgstr "Se incluir ou não um botão de fechar padrão"
msgid "Controls whether the info bar shows its contents or not"
msgstr "Controla se a barra de informações mostra seu conteúdo"
#: gtk/gtklabel.c:2249
#: gtk/gtklabel.c:2286
msgid "The text of the label"
msgstr "O texto da etiqueta"
#: gtk/gtklabel.c:2261
#: gtk/gtklabel.c:2298
msgid "A list of style attributes to apply to the text of the label"
msgstr "Uma lista de atributos de estilo a aplicar ao texto da etiqueta"
#: gtk/gtklabel.c:2301 gtk/gtktexttag.c:475 gtk/gtktextview.c:922
#: gtk/gtklabel.c:2338 gtk/gtktexttag.c:475 gtk/gtktextview.c:922
msgid "Justification"
msgstr "Alinhamento"
#: gtk/gtklabel.c:2302
#: gtk/gtklabel.c:2339
msgid ""
"The alignment of the lines in the text of the label relative to each other. "
"This does NOT affect the alignment of the label within its allocation. See "
@@ -3736,51 +3737,62 @@ msgstr ""
"alinhamento da etiqueta dentro da sua alocação. Consulte GtkMisc::xalign "
"para tal"
#: gtk/gtklabel.c:2333
#: gtk/gtklabel.c:2370
msgid "Y align"
msgstr "Alinh y"
#: gtk/gtklabel.c:2334
#: gtk/gtklabel.c:2371
msgid "The vertical alignment, from 0 (top) to 1 (bottom)"
msgstr "O alinhamento vertical, de 0 (topo) até 1 (fundo)"
#: gtk/gtklabel.c:2346
#: gtk/gtklabel.c:2383
msgid "Line wrap"
msgstr "Quebra de linha"
#: gtk/gtklabel.c:2347
#: gtk/gtklabel.c:2384
msgid "If set, wrap lines if the text becomes too wide"
msgstr "Se definido, quebrar linhas se o texto se tornar demasiado longo"
#: gtk/gtklabel.c:2362
#: gtk/gtklabel.c:2402
msgid "Line wrap mode"
msgstr "Modo de quebra de linha"
#: gtk/gtklabel.c:2363
#: gtk/gtklabel.c:2403
msgid "If wrap is set, controls how linewrapping is done"
msgstr "Se quebra de linha estiver ativa, controla como é efetuada a quebra"
msgstr ""
"Se a quebra de linha estiver definida, controla como é efetuada a quebra"
#: gtk/gtklabel.c:2376
#: gtk/gtklabel.c:2423
msgid "Natural wrap mode"
msgstr "Modo de quebra de linha natural"
#: gtk/gtklabel.c:2424
msgid "If wrap is set, controls linewrapping for natural size requests"
msgstr ""
"Se a quebra de linha estiver definida, controla a quebra de linha para "
"pedidos de tamanho natural"
#: gtk/gtklabel.c:2437
msgid "Whether the label text can be selected with the mouse"
msgstr "Se o texto da etiqueta pode ou não ser selecionado com o rato"
#: gtk/gtklabel.c:2387
#: gtk/gtklabel.c:2448
msgid "Mnemonic key"
msgstr "Chave mnemónica"
#: gtk/gtklabel.c:2388
#: gtk/gtklabel.c:2449
msgid "The mnemonic accelerator key for this label"
msgstr "A tecla de atalho mnemónica para esta etiqueta"
#: gtk/gtklabel.c:2400
#: gtk/gtklabel.c:2461
msgid "Mnemonic widget"
msgstr "Widget da mnemónica"
#: gtk/gtklabel.c:2401
#: gtk/gtklabel.c:2462
msgid "The widget to be activated when the labels mnemonic key is pressed"
msgstr "O componente ativado quando a tecla mnemônica do rótulo é pressionada"
#: gtk/gtklabel.c:2422
#: gtk/gtklabel.c:2483
msgid ""
"The preferred place to ellipsize the string, if the label does not have "
"enough room to display the entire string"
@@ -3788,30 +3800,30 @@ msgstr ""
"O local preferido para colocar reticências na cadeia, se a etiqueta não "
"possuir espaço suficiente para mostrar a cadeia completa"
#: gtk/gtklabel.c:2458
#: gtk/gtklabel.c:2519
msgid "Single Line Mode"
msgstr "Modo de linha única"
#: gtk/gtklabel.c:2459
#: gtk/gtklabel.c:2520
msgid "Whether the label is in single line mode"
msgstr "Se a etiqueta está ou não em modo de linha única"
#: gtk/gtklabel.c:2477
#: gtk/gtklabel.c:2538
msgid "The desired maximum width of the label, in characters"
msgstr "A largura máxima desejada da etiqueta, em caracteres"
#: gtk/gtklabel.c:2493
#: gtk/gtklabel.c:2554
msgid "Number of lines"
msgstr "Número de linhas"
# Quando um rótulo é redu... -- Rafael
#: gtk/gtklabel.c:2494
#: gtk/gtklabel.c:2555
msgid "The desired number of lines, when ellipsizing a wrapping label"
msgstr ""
"O número de linhas desejado, ao pôr reticências numa etiqueta que contém "
"quebras de linha"
#: gtk/gtklabel.c:2507 gtk/gtktext.c:991 gtk/gtktextview.c:1159
#: gtk/gtklabel.c:2568 gtk/gtktext.c:991 gtk/gtktextview.c:1159
msgid "Menu model to append to the context menu"
msgstr "O modelo de menu para acrescentar ao menu de contexto"
+3792 -5547
View File
File diff suppressed because it is too large Load Diff
+49 -40
View File
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+ 2.4.0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2021-12-13 03:40+0000\n"
"PO-Revision-Date: 2021-12-13 15:16+0200\n"
"POT-Creation-Date: 2021-12-22 08:10+0000\n"
"PO-Revision-Date: 2021-12-22 14:52+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -789,7 +789,7 @@ msgid "Bookmark file to load"
msgstr "Файл закладок, який слід завантажити"
#: gtk/gtkbookmarklist.c:228 gtk/gtkcellrenderertext.c:267 gtk/gtkentry.c:965
#: gtk/gtklabel.c:2260 gtk/gtktext.c:929
#: gtk/gtklabel.c:2297 gtk/gtktext.c:929
msgid "Attributes"
msgstr "Атрибути"
@@ -911,7 +911,7 @@ msgid "scope to use when instantiating listitems"
msgstr "область, яку слід використати для створення екземплярів пунктів списку"
#: gtk/gtkbutton.c:222 gtk/gtkcheckbutton.c:562 gtk/gtkexpander.c:333
#: gtk/gtkframe.c:170 gtk/gtklabel.c:2248 gtk/gtkmenubutton.c:478
#: gtk/gtkframe.c:170 gtk/gtklabel.c:2285 gtk/gtkmenubutton.c:478
msgid "Label"
msgstr "Позначка"
@@ -922,12 +922,12 @@ msgid ""
msgstr "Текст віджета позначки в кнопці, якщо кнопка містить віджет позначки"
#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:590 gtk/gtkexpander.c:346
#: gtk/gtklabel.c:2286 gtk/gtkmenubutton.c:490 gtk/gtkstack.c:491
#: gtk/gtklabel.c:2323 gtk/gtkmenubutton.c:490 gtk/gtkstack.c:491
msgid "Use underline"
msgstr "Використовувати підкреслення"
#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:591 gtk/gtkexpander.c:347
#: gtk/gtklabel.c:2287 gtk/gtkmenubutton.c:491
#: gtk/gtklabel.c:2324 gtk/gtkmenubutton.c:491
msgid ""
"If set, an underline in the text indicates the next character should be used "
"for the mnemonic accelerator key"
@@ -1598,7 +1598,7 @@ msgstr ""
"під час відтворення тексту. Якщо ви не розумієте цей параметр, то, напевно, "
"він вам не потрібний."
#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2421 gtk/gtkprogressbar.c:267
#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2482 gtk/gtkprogressbar.c:267
msgid "Ellipsize"
msgstr "Багатокрапка"
@@ -1610,15 +1610,15 @@ msgstr ""
"Бажане місце обривання рядка багатокрапкою, якщо механізму відтворення рядка "
"не вистачає місця для показу всього рядка"
#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2440
#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2501
msgid "Width In Characters"
msgstr "Ширина у символах"
#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2441
#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2502
msgid "The desired width of the label, in characters"
msgstr "Бажана ширина, у символах"
#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2476
#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2537
msgid "Maximum Width In Characters"
msgstr "Максимальна ширина в символах"
@@ -1944,7 +1944,7 @@ msgstr "Колір RGBA"
msgid "Color as RGBA"
msgstr "Колір як RGBA"
#: gtk/gtkcolorswatch.c:515 gtk/gtklabel.c:2375 gtk/gtklistbox.c:3570
#: gtk/gtkcolorswatch.c:515 gtk/gtklabel.c:2436 gtk/gtklistbox.c:3570
#: gtk/gtklistitem.c:217
msgid "Selectable"
msgstr "Вибирається"
@@ -1970,12 +1970,10 @@ msgid "Whether the swatch should accept drops"
msgstr "Чи прийматиме пробник події скидання"
#: gtk/gtkcolorswatch.c:524
#| msgid "Can Drop"
msgid "Can Drag"
msgstr "Можна перетягувати"
#: gtk/gtkcolorswatch.c:524
#| msgid "Whether the swatch should accept drops"
msgid "Whether the swatch should allow drags"
msgstr "Чи дозволятиме пробник перетягування"
@@ -2541,11 +2539,11 @@ msgstr "Максимальна ширина у символах"
msgid "The desired maximum width of the entry, in characters"
msgstr "Бажана максимальна ширина поля введення, у символах"
#: gtk/gtkeditable.c:473 gtk/gtklabel.c:2317
#: gtk/gtkeditable.c:473 gtk/gtklabel.c:2354
msgid "X align"
msgstr "Вирівнювання за X"
#: gtk/gtkeditable.c:474 gtk/gtklabel.c:2318
#: gtk/gtkeditable.c:474 gtk/gtklabel.c:2355
msgid ""
"The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL "
"layouts."
@@ -2865,7 +2863,7 @@ msgstr "Піктограма емодзі"
msgid "Whether to show an icon for Emoji"
msgstr "Чи слід показувати піктограму емодзі"
#: gtk/gtkentry.c:1002 gtk/gtklabel.c:2506 gtk/gtkpasswordentry.c:504
#: gtk/gtkentry.c:1002 gtk/gtklabel.c:2567 gtk/gtkpasswordentry.c:504
#: gtk/gtktext.c:990 gtk/gtktextview.c:1158
msgid "Extra menu"
msgstr "Додаткове меню"
@@ -3008,11 +3006,11 @@ msgstr "Чи розширювач був відкритий для показу
msgid "Text of the expanders label"
msgstr "Текст мітки розгортання"
#: gtk/gtkexpander.c:359 gtk/gtklabel.c:2274 gtk/gtkmodelbutton.c:1211
#: gtk/gtkexpander.c:359 gtk/gtklabel.c:2311 gtk/gtkmodelbutton.c:1211
msgid "Use markup"
msgstr "Використовувати розмітку"
#: gtk/gtkexpander.c:360 gtk/gtklabel.c:2275
#: gtk/gtkexpander.c:360 gtk/gtklabel.c:2312
msgid "The text of the label includes XML markup. See pango_parse_markup()"
msgstr "Текст позначки включає розмітку XML. Див. pango_parse_markup()"
@@ -3715,19 +3713,19 @@ msgstr "Чи потрібно додавати стандартну кнопку
msgid "Controls whether the info bar shows its contents or not"
msgstr "Керує тим, чи буде показано вміст інформаційної панелі"
#: gtk/gtklabel.c:2249
#: gtk/gtklabel.c:2286
msgid "The text of the label"
msgstr "Текст позначки"
#: gtk/gtklabel.c:2261
#: gtk/gtklabel.c:2298
msgid "A list of style attributes to apply to the text of the label"
msgstr "Список стильових ознак для застосування до тексту позначки"
#: gtk/gtklabel.c:2301 gtk/gtktexttag.c:475 gtk/gtktextview.c:922
#: gtk/gtklabel.c:2338 gtk/gtktexttag.c:475 gtk/gtktextview.c:922
msgid "Justification"
msgstr "Вирівнювання"
#: gtk/gtklabel.c:2302
#: gtk/gtklabel.c:2339
msgid ""
"The alignment of the lines in the text of the label relative to each other. "
"This does NOT affect the alignment of the label within its allocation. See "
@@ -3737,53 +3735,64 @@ msgstr ""
"вирівнювання мітки всередині вказаного для неї місця. З цього питання див. "
"GtkLabel::xalign"
#: gtk/gtklabel.c:2333
#: gtk/gtklabel.c:2370
msgid "Y align"
msgstr "Вирівнювання за Y"
#: gtk/gtklabel.c:2334
#: gtk/gtklabel.c:2371
msgid "The vertical alignment, from 0 (top) to 1 (bottom)"
msgstr "Вертикальне вирівнювання, від 0 (вгору) до 1 (вниз)"
#: gtk/gtklabel.c:2346
#: gtk/gtklabel.c:2383
msgid "Line wrap"
msgstr "Перенос рядків"
#: gtk/gtklabel.c:2347
#: gtk/gtklabel.c:2384
msgid "If set, wrap lines if the text becomes too wide"
msgstr "Якщо встановлено, занадто довгі рядки переносяться"
#: gtk/gtklabel.c:2362
#: gtk/gtklabel.c:2402
msgid "Line wrap mode"
msgstr "Режим переносу рядків"
#: gtk/gtklabel.c:2363
#: gtk/gtklabel.c:2403
msgid "If wrap is set, controls how linewrapping is done"
msgstr ""
"Якщо встановлено перенос рядків, контролює як виконувати перенос рядків"
#: gtk/gtklabel.c:2376
#: gtk/gtklabel.c:2423
#| msgid "Natrural wrap mode"
msgid "Natural wrap mode"
msgstr "Природний режим перенесення"
#: gtk/gtklabel.c:2424
msgid "If wrap is set, controls linewrapping for natural size requests"
msgstr ""
"Якщо встановлено перенос рядків, контролює перенос рядків для запитів щодо "
"природного розміру"
#: gtk/gtklabel.c:2437
msgid "Whether the label text can be selected with the mouse"
msgstr "Чи може текст позначки бути виділений використовуючи мишу"
#: gtk/gtklabel.c:2387
#: gtk/gtklabel.c:2448
msgid "Mnemonic key"
msgstr "Мнемонічна клавіша"
#: gtk/gtklabel.c:2388
#: gtk/gtklabel.c:2449
msgid "The mnemonic accelerator key for this label"
msgstr "Мнемонічна клавіша-прискорювач для цієї позначки"
#: gtk/gtklabel.c:2400
#: gtk/gtklabel.c:2461
msgid "Mnemonic widget"
msgstr "Мнемонічний віджет"
#: gtk/gtklabel.c:2401
#: gtk/gtklabel.c:2462
msgid "The widget to be activated when the labels mnemonic key is pressed"
msgstr ""
"Віджет, який буде активовано під час натиснення мнемонічної клавіші позначки"
#: gtk/gtklabel.c:2422
#: gtk/gtklabel.c:2483
msgid ""
"The preferred place to ellipsize the string, if the label does not have "
"enough room to display the entire string"
@@ -3791,27 +3800,27 @@ msgstr ""
"Бажане місце для багатокрапки у рядку, якщо для показу усього рядка не "
"вистачає місця."
#: gtk/gtklabel.c:2458
#: gtk/gtklabel.c:2519
msgid "Single Line Mode"
msgstr "Режим одного рядка"
#: gtk/gtklabel.c:2459
#: gtk/gtklabel.c:2520
msgid "Whether the label is in single line mode"
msgstr "Чи знаходиться рядок у режимі одного рядка"
#: gtk/gtklabel.c:2477
#: gtk/gtklabel.c:2538
msgid "The desired maximum width of the label, in characters"
msgstr "Бажана максимальна ширина ярлика, у символах"
#: gtk/gtklabel.c:2493
#: gtk/gtklabel.c:2554
msgid "Number of lines"
msgstr "Кількість ліній"
#: gtk/gtklabel.c:2494
#: gtk/gtklabel.c:2555
msgid "The desired number of lines, when ellipsizing a wrapping label"
msgstr "Число рядків при скороченні мітки з використанням трьох крапок"
#: gtk/gtklabel.c:2507 gtk/gtktext.c:991 gtk/gtktextview.c:1159
#: gtk/gtklabel.c:2568 gtk/gtktext.c:991 gtk/gtktextview.c:1159
msgid "Menu model to append to the context menu"
msgstr "Модель меню для долучення до контекстного меню"
+1
View File
@@ -7,6 +7,7 @@ demos/gtk-demo/appwindow.c
demos/gtk-demo/blendmodes.ui
demos/gtk-demo/changedisplay.c
demos/gtk-demo/clipboard.c
demos/gtk-demo/clipboard.ui
demos/gtk-demo/combobox.c
demos/gtk-demo/constraints_builder.ui
demos/gtk-demo/constraints.ui
+241 -173
View File
File diff suppressed because it is too large Load Diff
+257 -204
View File
File diff suppressed because it is too large Load Diff
+217 -161
View File
@@ -14,16 +14,16 @@
# Antón Méixome <meixome@certima.net>, 2009, 2010.
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
# Fran Dieguez <fran.dieguez@gnome.org>, 2012-2021.
# Fran Dieguez <frandieguez@gnome.org>, 2012-2021.
#
msgid ""
msgstr ""
"Project-Id-Version: gtk+-master-po-gl-77922___.merged\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2021-11-18 23:46+0000\n"
"PO-Revision-Date: 2021-11-19 23:21+0100\n"
"Last-Translator: Fran Dieguez <fran.dieguez@gnome.org>\n"
"Language-Team: Galician <proxecto@trasno.gal>\n"
"POT-Creation-Date: 2021-12-18 06:30+0000\n"
"PO-Revision-Date: 2021-12-20 09:45+0100\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician <Proxecto Trasno <proxecto@trasno.gal>>\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -33,7 +33,7 @@ msgstr ""
"X-Project-Style: gnome\n"
"X-DL-Team: gl\n"
"X-DL-Module: gtk\n"
"X-DL-Branch: master\n"
"X-DL-Branch: main\n"
"X-DL-Domain: po\n"
"X-DL-State: Translating\n"
@@ -73,46 +73,45 @@ msgstr "O backend actual non admite o OpenGL"
msgid "GL support disabled via GDK_DEBUG"
msgstr "Compatibilidade de GL desactivada mediante GDK_DEBUG"
#: gdk/gdkdisplay.c:1569
#: gdk/gdkdisplay.c:1544
msgid "No EGL configuration available"
msgstr "Non hai unha configuración de EGL dispoñíbel"
#: gdk/gdkdisplay.c:1577
#: gdk/gdkdisplay.c:1552
msgid "Failed to get EGL configurations"
msgstr "Produciuse un fallo ao obter as configuracións de EGL"
#: gdk/gdkdisplay.c:1607
#: gdk/gdkdisplay.c:1582
msgid "No EGL configuration with required features found"
msgstr "Non se atoparon configuracións de EGL coas características requiridas"
#: gdk/gdkdisplay.c:1614
#: gdk/gdkdisplay.c:1589
msgid "No perfect EGL configuration found"
msgstr "Non se atopou a configuración de EGL perfecta"
#: gdk/gdkdisplay.c:1656
#: gdk/gdkdisplay.c:1631
msgid "EGL implementation is missing extension %2$s"
msgid_plural "EGL implementation is missing %d extensions: %s"
msgstr[0] "Á implementación de EGL fáltalle a extensión %2$s"
msgstr[1] "Á implementación de EGL fáltanlle %s extensións: %2$s"
#: gdk/gdkdisplay.c:1689
#: gdk/gdkdisplay.c:1664
msgid "libEGL not available in this sandbox"
msgstr "libEGL non está dispoñíbel neste sandbox"
#: gdk/gdkdisplay.c:1690
#| msgid "Not available"
#: gdk/gdkdisplay.c:1665
msgid "libEGL not available"
msgstr "libEGL non dispoñíbel"
#: gdk/gdkdisplay.c:1700
#: gdk/gdkdisplay.c:1675
msgid "Failed to create EGL display"
msgstr "Non é posíbel crear unha pantalla de EGL"
#: gdk/gdkdisplay.c:1710
#: gdk/gdkdisplay.c:1685
msgid "Could not initialize EGL display"
msgstr "Non foi posíbel inicializar a pantalla de EGL"
#: gdk/gdkdisplay.c:1721
#: gdk/gdkdisplay.c:1696
#, c-format
msgid "EGL version %d.%d is too old. GTK requires %d.%d"
msgstr "A versión de EGL %d.%d é demasiado antiga. GTK require %d.%d"
@@ -129,13 +128,12 @@ msgstr "Formatos non compatíbeis para transferir contidos."
msgid "The EGL implementation does not support any allowed APIs"
msgstr "A implementación de EGL non admite algúnha das APIs permitidas"
#: gdk/gdkglcontext.c:404 gdk/win32/gdkglcontext-win32-egl.c:401
#: gdk/win32/gdkglcontext-win32-wgl.c:627 gdk/x11/gdkglcontext-glx.c:622
#: gdk/gdkglcontext.c:404 gdk/win32/gdkglcontext-win32-wgl.c:624
#: gdk/x11/gdkglcontext-glx.c:622
msgid "Unable to create a GL context"
msgstr "Non é posíbel crear un contexto GL"
#: gdk/gdkglcontext.c:1237
#| msgid "GL support disabled via GDK_DEBUG"
msgid "Anything but OpenGL ES disabled via GDK_DEBUG"
msgstr "Todo está desactivado salvo OpenGL ES mediante GDK_DEBUG"
@@ -151,11 +149,11 @@ msgstr "A aplicación non admite a API de %s"
msgid "Trying to use %s, but %s is already in use"
msgstr "Tentando usar %s, pero %s xa está en uso"
#: gdk/gdksurface.c:1235
#: gdk/gdksurface.c:1238
msgid "Vulkan support disabled via GDK_DEBUG"
msgstr "Compatibilidade de Vulkan desactivada mediante GDK_DEBUG"
#: gdk/gdktexture.c:530
#: gdk/gdktexture.c:529
msgid "Unknown image format."
msgstr "O formato de imaxe é descoñecido."
@@ -546,15 +544,13 @@ msgstr "Produciuse un erro ao interpretar o ficheiro de imaxe do JPEG (%s)"
msgid "Unsupported JPEG colorspace (%d)"
msgstr "Espazo de cor JPEG non admitido (%d)"
#: gdk/loaders/gdkjpeg.c:197 gdk/loaders/gdkpng.c:273 gdk/loaders/gdktiff.c:446
#: gdk/loaders/gdkjpeg.c:197 gdk/loaders/gdkpng.c:273 gdk/loaders/gdktiff.c:453
#, c-format
#| msgid "Not enough memory"
msgid "Not enough memory for image size %ux%u"
msgstr "Non hai memoria dabondo para o tamaño de imaxe %ux%u"
#: gdk/loaders/gdkpng.c:119
#, c-format
#| msgid "Error creating print preview"
msgid "Error reading png (%s)"
msgstr "Produciuse un erro ao ler o png (%s)"
@@ -572,7 +568,11 @@ msgstr "Tipo de cor %u non admitida na imaxe png"
msgid "Failed to load RGB data from TIFF file"
msgstr "Produciuse un fallo ao cargar os datos RGB desde o ficheiro TIFF"
#: gdk/loaders/gdktiff.c:458
#: gdk/loaders/gdktiff.c:383
msgid "Could not load TIFF data"
msgstr "Non foi posíbel cargar os datos TIFF"
#: gdk/loaders/gdktiff.c:465
#, c-format
msgid "Reading data failed at row %d"
msgstr "Fallou a lectura o dato na fila %d"
@@ -580,7 +580,7 @@ msgstr "Fallou a lectura o dato na fila %d"
#: gdk/macos/gdkmacosclipboard.c:557 gdk/wayland/gdkclipboard-wayland.c:231
#: gdk/wayland/gdkdrop-wayland.c:203 gdk/wayland/gdkprimary-wayland.c:312
#: gdk/win32/gdkdrop-win32.c:1006 gdk/win32/gdkdrop-win32.c:1051
#: gdk/x11/gdkclipboard-x11.c:763 gdk/x11/gdkdrop-x11.c:233
#: gdk/x11/gdkclipboard-x11.c:787 gdk/x11/gdkdrop-x11.c:233
msgid "No compatible transfer format found"
msgstr "Non se atopou un formato de transferencia compatíbel"
@@ -735,18 +735,15 @@ msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr ""
"Produciuse un fallo ao transmutar os datos DnD W32 ao formato 0x%x to %p (%s)"
#: gdk/win32/gdkglcontext-win32-egl.c:215
#: gdk/win32/gdkglcontext-win32-egl.c:225
#: gdk/win32/gdkglcontext-win32-wgl.c:593
msgid "No available configurations for the given pixel format"
msgstr "Non hai configuracións dispoñíbeis para o formato de píxel fornecido"
#: gdk/win32/gdkglcontext-win32-egl.c:275
#: gdk/win32/gdkglcontext-win32-wgl.c:282
#: gdk/win32/gdkglcontext-win32-wgl.c:299
#: gdk/win32/gdkglcontext-win32-wgl.c:279
#: gdk/win32/gdkglcontext-win32-wgl.c:296
msgid "No GL implementation is available"
msgstr "Non hai unha implementación de GL dispoñíbel"
#: gdk/win32/gdkglcontext-win32-wgl.c:590
msgid "No available configurations for the given pixel format"
msgstr "Non hai configuracións dispoñíbeis para o formato de píxel fornecido"
#: gdk/win32/gdkhdataoutputstream-win32.c:63
msgid "writing a closed stream"
msgstr "escribindo un fluxo de peche"
@@ -798,11 +795,11 @@ msgid_plural "Opening %d Items"
msgstr[0] "Abrindo %d elemento"
msgstr[1] "Abrindo %d elementos"
#: gdk/x11/gdkclipboard-x11.c:433
#: gdk/x11/gdkclipboard-x11.c:457
msgid "Clipboard manager could not store selection."
msgstr "O xestor do portapapeis non pode almacenar a selección."
#: gdk/x11/gdkclipboard-x11.c:613
#: gdk/x11/gdkclipboard-x11.c:637
msgid "Cannot store clipboard. No clipboard manager is active."
msgstr ""
"Non é posíbel almacenar o portapapeis. Non hai un xestor de portapapeis "
@@ -1737,16 +1734,16 @@ msgctxt "progress bar label"
msgid "%d%%"
msgstr "%d%%"
#: gtk/gtkcolorbutton.c:181 gtk/gtkcolorbutton.c:310
#: gtk/gtkcolorbutton.c:181 gtk/gtkcolorbutton.c:311
msgid "Pick a Color"
msgstr "Escolla unha cor"
#: gtk/gtkcolorbutton.c:499 gtk/gtkcolorchooserwidget.c:308
#: gtk/gtkcolorbutton.c:500 gtk/gtkcolorchooserwidget.c:308
#, c-format
msgid "Red %d%%, Green %d%%, Blue %d%%, Alpha %d%%"
msgstr "Vermello %d%%, verde %d%%, Azul %d%%, Alfa %d%%"
#: gtk/gtkcolorbutton.c:505 gtk/gtkcolorchooserwidget.c:314
#: gtk/gtkcolorbutton.c:506 gtk/gtkcolorchooserwidget.c:314
#, c-format
msgid "Red %d%%, Green %d%%, Blue %d%%"
msgstr "Vermello %d%%, Verde %d%%, Azul %d%%"
@@ -1991,7 +1988,7 @@ msgstr "Personalizado"
msgid "Custom color %d: %s"
msgstr "Cor personalizado %d: %s"
#: gtk/gtkcolorswatch.c:229
#: gtk/gtkcolorswatch.c:231
msgid "Customize"
msgstr "Personalizar"
@@ -2133,8 +2130,8 @@ msgstr "Xa existe un ficheiro con ese nome"
#: gtk/gtkmountoperation.c:610 gtk/gtkpagesetupunixdialog.c:283
#: gtk/gtkprintbackend.c:642 gtk/gtkprinteroptionwidget.c:713
#: gtk/gtkprintunixdialog.c:667 gtk/gtkprintunixdialog.c:823
#: gtk/gtkwindow.c:6138 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1271
#: gtk/gtkwindow.c:6218 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1706
msgid "_Cancel"
msgstr "_Cancelar"
@@ -2145,7 +2142,7 @@ msgid "_Open"
msgstr "_Abrir"
#: gtk/gtkfilechoosernative.c:574 gtk/inspector/css-editor.c:249
#: gtk/inspector/recorder.c:1272
#: gtk/inspector/recorder.c:1707
msgid "_Save"
msgstr "_Gardar"
@@ -2225,7 +2222,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Se elimina un elemento perderase para sempre."
#: gtk/gtkfilechooserwidget.c:1210 gtk/gtkfilechooserwidget.c:1826
#: gtk/gtklabel.c:5515 gtk/gtktext.c:6062 gtk/gtktextview.c:8908
#: gtk/gtklabel.c:5552 gtk/gtktext.c:6064 gtk/gtktextview.c:8920
msgid "_Delete"
msgstr "E_liminar"
@@ -2440,51 +2437,51 @@ msgctxt "font"
msgid "None"
msgstr "Ningún"
#: gtk/gtkfontchooserwidget.c:1568
#: gtk/gtkfontchooserwidget.c:1569
msgid "Width"
msgstr "Anchura"
#: gtk/gtkfontchooserwidget.c:1569
#: gtk/gtkfontchooserwidget.c:1570
msgid "Weight"
msgstr "Peso"
#: gtk/gtkfontchooserwidget.c:1570
#: gtk/gtkfontchooserwidget.c:1571
msgid "Italic"
msgstr "Cursiva"
#: gtk/gtkfontchooserwidget.c:1571
#: gtk/gtkfontchooserwidget.c:1572
msgid "Slant"
msgstr "Inclinación"
#: gtk/gtkfontchooserwidget.c:1572
#: gtk/gtkfontchooserwidget.c:1573
msgid "Optical Size"
msgstr "Tamaño óptico"
#: gtk/gtkfontchooserwidget.c:2118
#: gtk/gtkfontchooserwidget.c:2120
msgid "Default"
msgstr "Por omisión"
#: gtk/gtkfontchooserwidget.c:2164
#: gtk/gtkfontchooserwidget.c:2166
msgid "Ligatures"
msgstr "Ligaduras"
#: gtk/gtkfontchooserwidget.c:2165
#: gtk/gtkfontchooserwidget.c:2167
msgid "Letter Case"
msgstr "Letra maiúscula"
#: gtk/gtkfontchooserwidget.c:2166
#: gtk/gtkfontchooserwidget.c:2168
msgid "Number Case"
msgstr "Maiúsculas e minúsculas de números"
#: gtk/gtkfontchooserwidget.c:2167
#: gtk/gtkfontchooserwidget.c:2169
msgid "Number Spacing"
msgstr "Espaciado de números"
#: gtk/gtkfontchooserwidget.c:2168
#: gtk/gtkfontchooserwidget.c:2170
msgid "Number Formatting"
msgstr "Formato numérico"
#: gtk/gtkfontchooserwidget.c:2169
#: gtk/gtkfontchooserwidget.c:2171
msgid "Character Variants"
msgstr "Variantes de carácter"
@@ -2492,27 +2489,27 @@ msgstr "Variantes de carácter"
msgid "OpenGL context creation failed"
msgstr "Produciuse un fallo ao crear o contexto de OpenGL"
#: gtk/gtklabel.c:5512 gtk/gtktext.c:6050 gtk/gtktextview.c:8896
#: gtk/gtklabel.c:5549 gtk/gtktext.c:6052 gtk/gtktextview.c:8908
msgid "Cu_t"
msgstr "Cor_tar"
#: gtk/gtklabel.c:5513 gtk/gtktext.c:6054 gtk/gtktextview.c:8900
#: gtk/gtklabel.c:5550 gtk/gtktext.c:6056 gtk/gtktextview.c:8912
msgid "_Copy"
msgstr "_Copiar"
#: gtk/gtklabel.c:5514 gtk/gtktext.c:6058 gtk/gtktextview.c:8904
#: gtk/gtklabel.c:5551 gtk/gtktext.c:6060 gtk/gtktextview.c:8916
msgid "_Paste"
msgstr "_Pegar"
#: gtk/gtklabel.c:5520 gtk/gtktext.c:6071 gtk/gtktextview.c:8929
#: gtk/gtklabel.c:5557 gtk/gtktext.c:6073 gtk/gtktextview.c:8941
msgid "Select _All"
msgstr "Seleccionar _todo"
#: gtk/gtklabel.c:5525
#: gtk/gtklabel.c:5562
msgid "_Open Link"
msgstr "_Abrir ligazón"
#: gtk/gtklabel.c:5529
#: gtk/gtklabel.c:5566
msgid "Copy _Link Address"
msgstr "Copiar enderezo da _ligazón"
@@ -2614,7 +2611,7 @@ msgid "%d:%02d"
msgstr "%d:%02d"
#: gtk/gtkmessagedialog.c:158 gtk/gtkmessagedialog.c:176
#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6139
#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6219
msgid "_OK"
msgstr "_Aceptar"
@@ -3453,7 +3450,7 @@ msgid "Swipe right"
msgstr "Deslizar á dereita"
#. Translators: This is the window title for the shortcuts window in normal mode
#: gtk/gtkshortcutswindow.c:874 gtk/inspector/window.ui:490
#: gtk/gtkshortcutswindow.c:874 gtk/inspector/window.ui:498
msgid "Shortcuts"
msgstr "Atallos"
@@ -3479,19 +3476,19 @@ msgstr "Tente unha busca diferente"
msgid "Could not show link"
msgstr "Non foi posíbel mostrar a ligazón"
#: gtk/gtktext.c:6076 gtk/gtktextview.c:8934
#: gtk/gtktext.c:6078 gtk/gtktextview.c:8946
msgid "Insert _Emoji"
msgstr "Inserir _emoticono"
#: gtk/gtktextview.c:8916
#: gtk/gtktextview.c:8928
msgid "_Undo"
msgstr "_Desfacer"
#: gtk/gtktextview.c:8920
#: gtk/gtktextview.c:8932
msgid "_Redo"
msgstr "_Refacer"
#: gtk/gtktreeexpander.c:205
#: gtk/gtktreeexpander.c:205 gtk/inspector/misc-info.ui:278
msgid "Expand"
msgstr "Expandir"
@@ -3514,12 +3511,12 @@ msgctxt "volume percentage"
msgid "%d%%"
msgstr "%d%%"
#: gtk/gtkwindow.c:6126
#: gtk/gtkwindow.c:6206
#, c-format
msgid "Do you want to use GTK Inspector?"
msgstr "Desexa usar o Inspector de GTK?"
#: gtk/gtkwindow.c:6128
#: gtk/gtkwindow.c:6208
#, c-format
msgid ""
"GTK Inspector is an interactive debugger that lets you explore and modify "
@@ -3530,7 +3527,7 @@ msgstr ""
"modificar propiedades internas de calquera aplicación GTK+. Ao usalo pode "
"causar que a aplicación se rompa ou se interrompa."
#: gtk/gtkwindow.c:6133
#: gtk/gtkwindow.c:6213
msgid "Dont show this message again"
msgstr "Non mostrar este mensaxe de novo"
@@ -3575,7 +3572,8 @@ msgid "Attribute"
msgstr "Atributo"
#: gtk/inspector/a11y.ui:78 gtk/inspector/css-node-tree.ui:119
#: gtk/inspector/prop-list.ui:57 gtk/inspector/recorder.ui:124
#: gtk/inspector/prop-list.ui:57 gtk/inspector/recorder.ui:155
#: gtk/inspector/recorder.ui:221
msgid "Value"
msgstr "Valor"
@@ -3600,6 +3598,35 @@ msgstr "Tipo de parámetro"
msgid "State"
msgstr "Estado"
#: gtk/inspector/clipboard.c:149
#| msgid "Show All"
msgid "Show"
msgstr "Mostrar"
#: gtk/inspector/clipboard.c:205
msgctxt "clipboard"
msgid "empty"
msgstr "baleiro"
#: gtk/inspector/clipboard.c:210
msgctxt "clipboard"
msgid "local"
msgstr "local"
#: gtk/inspector/clipboard.c:212
msgctxt "clipboard"
msgid "remote"
msgstr "remoto"
#: gtk/inspector/clipboard.ui:31 gtk/inspector/window.ui:574
#| msgid "Copy to clipboard"
msgid "Clipboard"
msgstr "Portapapeis"
#: gtk/inspector/clipboard.ui:70
msgid "Primary"
msgstr "Primario"
#: gtk/inspector/controllers.c:126
msgctxt "event phase"
msgid "None"
@@ -3667,46 +3694,51 @@ msgstr "Clases de estilo"
msgid "CSS Property"
msgstr "Propiedade CSS"
#: gtk/inspector/general.c:307 gtk/inspector/general.c:387
#: gtk/inspector/general.c:309 gtk/inspector/general.c:389
msgctxt "GL version"
msgid "None"
msgstr "Ningún"
#: gtk/inspector/general.c:316
#: gtk/inspector/general.c:318
msgctxt "GL version"
msgid "Disabled"
msgstr "Desactivada"
#: gtk/inspector/general.c:317
#: gtk/inspector/general.c:319
msgctxt "GL vendor"
msgid "Disabled"
msgstr "Desactivado"
#: gtk/inspector/general.c:388
#: gtk/inspector/general.c:390
msgctxt "GL vendor"
msgid "None"
msgstr "Ningún"
#: gtk/inspector/general.c:439
#: gtk/inspector/general.c:441
msgctxt "Vulkan device"
msgid "Disabled"
msgstr "Desactivado"
#: gtk/inspector/general.c:440 gtk/inspector/general.c:441
#: gtk/inspector/general.c:442 gtk/inspector/general.c:443
msgctxt "Vulkan version"
msgid "Disabled"
msgstr "Desactivada"
#: gtk/inspector/general.c:497
#: gtk/inspector/general.c:499
msgctxt "Vulkan device"
msgid "None"
msgstr "Ningún"
#: gtk/inspector/general.c:498 gtk/inspector/general.c:499
#: gtk/inspector/general.c:500 gtk/inspector/general.c:501
msgctxt "Vulkan version"
msgid "None"
msgstr "Ningunha"
#: gtk/inspector/general.c:771
#| msgid "Theme is hardcoded by GTK_THEME"
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "O contexto de IM está incrustado á man por GTK_IM_MODULE"
#: gtk/inspector/general.ui:32
msgid "GTK Version"
msgstr "Versión de GTK"
@@ -3727,39 +3759,43 @@ msgstr "Mapa de fontes Pango"
msgid "Media Backend"
msgstr "Backend multimedia"
#: gtk/inspector/general.ui:175
#: gtk/inspector/general.ui:162
msgid "Input Method"
msgstr "Método da entrada"
#: gtk/inspector/general.ui:201
msgid "Prefix"
msgstr "Prefixo"
#: gtk/inspector/general.ui:377
#: gtk/inspector/general.ui:403
msgid "Display"
msgstr "Pantalla"
#: gtk/inspector/general.ui:404
#: gtk/inspector/general.ui:430
msgid "RGBA Visual"
msgstr "RGBA visual"
#: gtk/inspector/general.ui:430
#: gtk/inspector/general.ui:456
msgid "Composited"
msgstr "Composto"
#: gtk/inspector/general.ui:482
#: gtk/inspector/general.ui:508
msgid "GL Version"
msgstr "Versión de GL"
#: gtk/inspector/general.ui:532
#: gtk/inspector/general.ui:558
msgid "GL Vendor"
msgstr "Fabricante do GL"
#: gtk/inspector/general.ui:572
#: gtk/inspector/general.ui:598
msgid "Vulkan Device"
msgstr "Dispositivo Vulkan"
#: gtk/inspector/general.ui:599
#: gtk/inspector/general.ui:625
msgid "Vulkan API version"
msgstr "Versión da API Vulkan"
#: gtk/inspector/general.ui:626
#: gtk/inspector/general.ui:652
msgid "Vulkan driver version"
msgstr "Versión do driver de Vulkan"
@@ -3813,56 +3849,60 @@ msgid "Request Mode"
msgstr "Modo de solicitude"
#: gtk/inspector/misc-info.ui:269
msgid "Measure map"
msgstr "Mapa de medida"
#: gtk/inspector/misc-info.ui:328
msgid "Allocation"
msgstr "Asignación"
#: gtk/inspector/misc-info.ui:298
#: gtk/inspector/misc-info.ui:357
msgid "Baseline"
msgstr "Liña de base"
#: gtk/inspector/misc-info.ui:327
#: gtk/inspector/misc-info.ui:386
msgid "Surface"
msgstr "Superficie"
#: gtk/inspector/misc-info.ui:346 gtk/inspector/misc-info.ui:385
#: gtk/inspector/misc-info.ui:424 gtk/inspector/prop-editor.c:1111
#: gtk/inspector/prop-editor.c:1471 gtk/inspector/window.ui:388
#: gtk/inspector/misc-info.ui:405 gtk/inspector/misc-info.ui:444
#: gtk/inspector/misc-info.ui:483 gtk/inspector/prop-editor.c:1116
#: gtk/inspector/prop-editor.c:1476 gtk/inspector/window.ui:396
msgid "Properties"
msgstr "Propiedades"
#: gtk/inspector/misc-info.ui:366
#: gtk/inspector/misc-info.ui:425
msgid "Renderer"
msgstr "Renderizador"
#: gtk/inspector/misc-info.ui:405
#: gtk/inspector/misc-info.ui:464
msgid "Frame Clock"
msgstr "Reloxo do marco"
#: gtk/inspector/misc-info.ui:444
#: gtk/inspector/misc-info.ui:503
msgid "Tick Callback"
msgstr "Retorno de chamada de tick"
#: gtk/inspector/misc-info.ui:474
#: gtk/inspector/misc-info.ui:533
msgid "Frame Count"
msgstr "Contía de marcos"
#: gtk/inspector/misc-info.ui:503
#: gtk/inspector/misc-info.ui:562
msgid "Frame Rate"
msgstr "Taxa de marcos"
#: gtk/inspector/misc-info.ui:532
#: gtk/inspector/misc-info.ui:591
msgid "Mapped"
msgstr "Mapeado"
#: gtk/inspector/misc-info.ui:562
#: gtk/inspector/misc-info.ui:621
msgid "Realized"
msgstr "Realizado"
#: gtk/inspector/misc-info.ui:592
#: gtk/inspector/misc-info.ui:651
msgid "Is Toplevel"
msgstr "É de nivel superior"
#: gtk/inspector/misc-info.ui:622
#: gtk/inspector/misc-info.ui:681
msgid "Child Visible"
msgstr "Fillo visíbel"
@@ -3903,66 +3943,66 @@ msgstr "%s para %s %p"
msgid "%s with value type %s"
msgstr "%s con tipo de valor %s"
#: gtk/inspector/prop-editor.c:1179
#: gtk/inspector/prop-editor.c:1184
#, c-format
msgid "Uneditable property type: %s"
msgstr "Tipo de propiedade non editábel: %s"
#: gtk/inspector/prop-editor.c:1323
#: gtk/inspector/prop-editor.c:1328
msgctxt "column number"
msgid "None"
msgstr "Ningún"
#: gtk/inspector/prop-editor.c:1360
#: gtk/inspector/prop-editor.c:1365
msgid "Attribute:"
msgstr "Atributo:"
#: gtk/inspector/prop-editor.c:1363
#: gtk/inspector/prop-editor.c:1368
msgid "Model"
msgstr "Modelo"
#: gtk/inspector/prop-editor.c:1368
#: gtk/inspector/prop-editor.c:1373
msgid "Column:"
msgstr "Columna:"
#. Translators: %s is a type name, for example
#. * Action from 0x2345678 (GtkApplicationWindow)
#.
#: gtk/inspector/prop-editor.c:1467
#: gtk/inspector/prop-editor.c:1472
#, c-format
msgid "Action from: %p (%s)"
msgstr "Acción desde: %p (%s)"
#: gtk/inspector/prop-editor.c:1522
#: gtk/inspector/prop-editor.c:1527
msgid "Reset"
msgstr "Restabelecer"
#: gtk/inspector/prop-editor.c:1530
#: gtk/inspector/prop-editor.c:1535
msgctxt "GtkSettings source"
msgid "Default"
msgstr "Por omisión"
#: gtk/inspector/prop-editor.c:1533
#: gtk/inspector/prop-editor.c:1538
msgctxt "GtkSettings source"
msgid "Theme"
msgstr "Tema"
#: gtk/inspector/prop-editor.c:1536
#: gtk/inspector/prop-editor.c:1541
msgctxt "GtkSettings source"
msgid "XSettings"
msgstr "XSettings"
#: gtk/inspector/prop-editor.c:1540
#: gtk/inspector/prop-editor.c:1545
msgctxt "GtkSettings source"
msgid "Application"
msgstr "Aplicación"
#: gtk/inspector/prop-editor.c:1543
#: gtk/inspector/prop-editor.c:1548
msgctxt "GtkSettings source"
msgid "Unknown"
msgstr "Descoñecido"
#: gtk/inspector/prop-editor.c:1546
#: gtk/inspector/prop-editor.c:1551
msgid "Source:"
msgstr "Orixe:"
@@ -3970,36 +4010,40 @@ msgstr "Orixe:"
msgid "Defined At"
msgstr "Definido en"
#: gtk/inspector/recorder.c:1242
#: gtk/inspector/recorder.c:1677
#, c-format
msgid "Saving RenderNode failed"
msgstr "Fallou o gardado do RenderNode"
#: gtk/inspector/recorder.ui:15
#: gtk/inspector/recorder.ui:20
msgid "Record frames"
msgstr "Gravar marcos"
#: gtk/inspector/recorder.ui:22
#: gtk/inspector/recorder.ui:27
msgid "Clear recorded frames"
msgstr "Limpar marcos gravados"
#: gtk/inspector/recorder.ui:29
#: gtk/inspector/recorder.ui:34
msgid "Add debug nodes"
msgstr "Engadir nodos de depuración"
#: gtk/inspector/recorder.ui:38
#: gtk/inspector/recorder.ui:42
msgid "Highlight event sequences"
msgstr "Realce da secuencia de eventos"
#: gtk/inspector/recorder.ui:51
msgid "Use a dark background"
msgstr "Usar o fondo escuro"
#: gtk/inspector/recorder.ui:46
#: gtk/inspector/recorder.ui:59
msgid "Save selected node"
msgstr "Gardar o nodo seleccionado"
#: gtk/inspector/recorder.ui:54
#: gtk/inspector/recorder.ui:67
msgid "Copy to clipboard"
msgstr "Copiar ao portapapeis"
#: gtk/inspector/recorder.ui:111
#: gtk/inspector/recorder.ui:142 gtk/inspector/recorder.ui:208
msgid "Property"
msgstr "Propiedade"
@@ -4223,111 +4267,111 @@ msgstr "Mostrar todos os obxectos"
msgid "Show all Resources"
msgstr "Mostrar todos os recursos"
#: gtk/inspector/window.ui:139
#: gtk/inspector/window.ui:147
msgid "Collect Statistics"
msgstr "Recoller estatísticas"
#: gtk/inspector/window.ui:191
#: gtk/inspector/window.ui:199
msgid "Objects"
msgstr "Obxectos"
#: gtk/inspector/window.ui:223
#: gtk/inspector/window.ui:231
msgid "Toggle Sidebar"
msgstr "Trocar barra lateral"
#: gtk/inspector/window.ui:245
#: gtk/inspector/window.ui:253
msgid "Refresh action state"
msgstr "Actualizar estado da acción"
#: gtk/inspector/window.ui:319
#: gtk/inspector/window.ui:327
msgid "Previous object"
msgstr "Anterior obxecto"
#: gtk/inspector/window.ui:326
#: gtk/inspector/window.ui:334
msgid "Child object"
msgstr "Obxecto fillo"
#: gtk/inspector/window.ui:333
#: gtk/inspector/window.ui:341
msgid "Previous sibling"
msgstr "Anterior irmán"
#: gtk/inspector/window.ui:339
#: gtk/inspector/window.ui:347
msgid "List Position"
msgstr "Posición na lista"
#: gtk/inspector/window.ui:348
#: gtk/inspector/window.ui:356
msgid "Next sibling"
msgstr "Seguinte irmán"
#: gtk/inspector/window.ui:378
#: gtk/inspector/window.ui:386
msgid "Miscellaneous"
msgstr "Miscelánea"
#: gtk/inspector/window.ui:399
#: gtk/inspector/window.ui:407
msgid "Layout"
msgstr "Disposición"
#: gtk/inspector/window.ui:410
#: gtk/inspector/window.ui:418
msgid "CSS Nodes"
msgstr "Nodos CSS"
#: gtk/inspector/window.ui:421
#: gtk/inspector/window.ui:429
msgid "Size Groups"
msgstr "Grupos de tamaño"
#: gtk/inspector/window.ui:430 gtk/inspector/window.ui:439
#: gtk/inspector/window.ui:438 gtk/inspector/window.ui:447
msgid "Data"
msgstr "Datos"
#: gtk/inspector/window.ui:449
#: gtk/inspector/window.ui:457
msgid "Actions"
msgstr "Accións"
#: gtk/inspector/window.ui:460
#: gtk/inspector/window.ui:468
msgid "Menu"
msgstr "Menú"
#: gtk/inspector/window.ui:469
#: gtk/inspector/window.ui:477
msgid "Controllers"
msgstr "Controladores"
#: gtk/inspector/window.ui:479
#: gtk/inspector/window.ui:487
msgid "Magnifier"
msgstr "Lupa"
#: gtk/inspector/window.ui:500
#: gtk/inspector/window.ui:508
msgid "Accessibility"
msgstr "Accesibilidade"
#: gtk/inspector/window.ui:524
#: gtk/inspector/window.ui:532
msgid "Global"
msgstr "Global"
#: gtk/inspector/window.ui:537
#: gtk/inspector/window.ui:545
msgid "Information"
msgstr "Información"
#: gtk/inspector/window.ui:546
#: gtk/inspector/window.ui:554
msgid "Settings"
msgstr "Preferencias"
#: gtk/inspector/window.ui:555
#: gtk/inspector/window.ui:563
msgid "Resources"
msgstr "Recursos"
#: gtk/inspector/window.ui:566
#: gtk/inspector/window.ui:584
msgid "Statistics"
msgstr "Estatisticas"
#: gtk/inspector/window.ui:577
#: gtk/inspector/window.ui:595
msgid "Logging"
msgstr "Rexistrando"
#: gtk/inspector/window.ui:592
#: gtk/inspector/window.ui:610
msgid "CSS"
msgstr "CSS"
#: gtk/inspector/window.ui:601
#: gtk/inspector/window.ui:619
msgid "Recorder"
msgstr "Gravar"
@@ -7427,42 +7471,54 @@ msgstr ""
"\n"
"Leva a cabo varias tarefas en ficheiros .ui de GtkBuilder.\n"
#: tools/gtk-builder-tool-simplify.c:437
#: tools/gtk-builder-tool-simplify.c:440
#, c-format
msgid "%s:%d: Couldnt parse value for property '%s': %s\n"
msgstr "%s:%d: Non foi posíbel analizar o valor para «%s»: %s\n"
#: tools/gtk-builder-tool-simplify.c:638
#: tools/gtk-builder-tool-simplify.c:649
#, c-format
msgid "%s:%d: %sproperty %s::%s not found\n"
msgstr "%s:%d: %spropiedade %s::%s non atopada\n"
#: tools/gtk-builder-tool-simplify.c:2275
#: tools/gtk-builder-tool-simplify.c:2286
#, c-format
msgid "Cant load “%s”: %s\n"
msgstr "Non foi posíbel cargar o ficheiro «%s»: %s\n"
#: tools/gtk-builder-tool-simplify.c:2286
#: tools/gtk-builder-tool-simplify.c:2297
#, c-format
msgid "Cant parse “%s”: %s\n"
msgstr "Non é posíbel analizar o ficheiro «%s»: %s\n"
#: tools/gtk-builder-tool-simplify.c:2310
#: tools/gtk-builder-tool-simplify.c:2303
#, c-format
#| msgid "Cant parse “%s”: %s\n"
msgid "Can't parse “%s”: %s\n"
msgstr "Non é posíbel analizar «%s»: %s\n"
#: tools/gtk-builder-tool-simplify.c:2309
#, c-format
#| msgid "Cant parse “%s”: %s\n"
msgid "Can't parse “%s”\n"
msgstr "Non é posíbel analizar «%s»\n"
#: tools/gtk-builder-tool-simplify.c:2333
#, c-format
msgid "Failed to read “%s”: %s\n"
msgstr "Produciuse un erro ao ler «%s» : %s\n"
#: tools/gtk-builder-tool-simplify.c:2316
#: tools/gtk-builder-tool-simplify.c:2339
#, c-format
msgid "Failed to write %s: “%s”\n"
msgstr "Produciuse un erro ao escribir %s : «%s»\n"
#: tools/gtk-builder-tool-simplify.c:2356
#: tools/gtk-builder-tool-simplify.c:2379
#, c-format
msgid "No .ui file specified\n"
msgstr "Non se especificou ningún ficheiro .ui\n"
#: tools/gtk-builder-tool-simplify.c:2362
#: tools/gtk-builder-tool-simplify.c:2385
#, c-format
msgid "Can only simplify a single .ui file without --replace\n"
msgstr "Só pode simplificar un ficheiro .ui sen --replace\n"
+81 -64
View File
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 3.10\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2021-12-16 14:58+0000\n"
"PO-Revision-Date: 2021-12-16 15:47+0000\n"
"POT-Creation-Date: 2022-01-04 11:18+0000\n"
"PO-Revision-Date: 2022-01-04 14:12+0000\n"
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
"Language-Team: Português <https://l10n.gnome.org/teams/pt/>\n"
"Language: pt\n"
@@ -26,7 +26,7 @@ msgstr ""
#: gdk/broadway/gdkbroadway-server.c:135
#, c-format
msgid "Broadway display type not supported: %s"
msgstr "Tipo de ecrã broadway não suportado: %s"
msgstr "Tipo de gráfica broadway não suportada: %s"
#: gdk/gdkclipboard.c:231
msgid "This clipboard cannot store data."
@@ -52,7 +52,7 @@ msgstr "Não foi possível fornecer o conteúdo como “%s”"
msgid "Cannot provide contents as %s"
msgstr "Não foi possível fornecer o conteúdo como %s"
#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:421
#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:427
msgid "The current backend does not support OpenGL"
msgstr "O motor atual não suporta OpenGL"
@@ -113,32 +113,32 @@ msgstr "Não há suporte a arrastar e largar de outras aplicações."
msgid "No compatible formats to transfer contents."
msgstr "Nenhum formato compatível para transferir conteúdo de transferência."
#: gdk/gdkglcontext.c:323
#: gdk/gdkglcontext.c:329
msgid "The EGL implementation does not support any allowed APIs"
msgstr "A implementação da EGL não suporta quaisquer APIs permitidas"
#: gdk/gdkglcontext.c:404 gdk/win32/gdkglcontext-win32-wgl.c:624
#: gdk/x11/gdkglcontext-glx.c:622
#: gdk/gdkglcontext.c:410 gdk/win32/gdkglcontext-win32-wgl.c:624
#: gdk/x11/gdkglcontext-glx.c:624
msgid "Unable to create a GL context"
msgstr "Impossível criar um contexto GL"
#: gdk/gdkglcontext.c:1237
#: gdk/gdkglcontext.c:1260
msgid "Anything but OpenGL ES disabled via GDK_DEBUG"
msgstr "Qualquer coisa menos OpenGL ES desativado via GDK_DEBUG"
#: gdk/gdkglcontext.c:1246
#: gdk/gdkglcontext.c:1269
#, c-format
msgid "Application does not support %s API"
msgstr "Aplicação não suporta API %s"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:1732
#: gdk/gdkglcontext.c:1790
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "A tentar usar %s, mas %s já está em uso"
#: gdk/gdksurface.c:1238
#: gdk/gdksurface.c:1240
msgid "Vulkan support disabled via GDK_DEBUG"
msgstr "Suporte a Vulkan desativado via GDK_DEBUG"
@@ -798,17 +798,17 @@ msgid "Cannot store clipboard. No clipboard manager is active."
msgstr ""
"Não foi possível armazenar a área de transferência. Nenhum gestor está ativo."
#: gdk/x11/gdkglcontext-glx.c:778
#: gdk/x11/gdkglcontext-glx.c:780
msgid "No GLX configurations available"
msgstr "Nenhuma configuração GLX disponível"
#: gdk/x11/gdkglcontext-glx.c:851
#: gdk/x11/gdkglcontext-glx.c:853
msgid "No GLX configuration with required features found"
msgstr ""
"Não foi encontrada nenhuma configuração de GLX com as características "
"necessárias"
#: gdk/x11/gdkglcontext-glx.c:925
#: gdk/x11/gdkglcontext-glx.c:927
msgid "GLX is not supported"
msgstr "A GLX não é suportada"
@@ -2125,7 +2125,7 @@ msgstr "Já existe um ficheiro com esse nome"
#: gtk/gtkmountoperation.c:610 gtk/gtkpagesetupunixdialog.c:283
#: gtk/gtkprintbackend.c:642 gtk/gtkprinteroptionwidget.c:713
#: gtk/gtkprintunixdialog.c:667 gtk/gtkprintunixdialog.c:823
#: gtk/gtkwindow.c:6218 gtk/inspector/css-editor.c:248
#: gtk/gtkwindow.c:6226 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1706
msgid "_Cancel"
msgstr "_Cancelar"
@@ -2215,7 +2215,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Se eliminar um item, estará permanentemente perdido."
#: gtk/gtkfilechooserwidget.c:1210 gtk/gtkfilechooserwidget.c:1826
#: gtk/gtklabel.c:5533 gtk/gtktext.c:6064 gtk/gtktextview.c:8920
#: gtk/gtklabel.c:5645 gtk/gtktext.c:6064 gtk/gtktextview.c:8920
msgid "_Delete"
msgstr "_Eliminar"
@@ -2336,7 +2336,7 @@ msgstr "Programa"
msgid "Audio"
msgstr "Áudio"
#: gtk/gtkfilechooserwidget.c:4303 gtk/gtkfontbutton.c:602
#: gtk/gtkfilechooserwidget.c:4303 gtk/gtkfontbutton.c:604
#: gtk/inspector/visual.ui:170
msgid "Font"
msgstr "Letra"
@@ -2421,60 +2421,65 @@ msgstr "Acedido"
msgid "Sans 12"
msgstr "Sans 12"
#: gtk/gtkfontbutton.c:506 gtk/gtkfontbutton.c:626
#: gtk/gtkfontbutton.c:508 gtk/gtkfontbutton.c:628
msgid "Pick a Font"
msgstr "Escolha uma letra"
#: gtk/gtkfontbutton.c:1363
#: gtk/gtkfontbutton.c:1365
msgctxt "font"
msgid "None"
msgstr "Nenhuma"
#: gtk/gtkfontchooserwidget.c:1569
#: gtk/gtkfontchooserwidget.c:1532
msgctxt "Font variation axis"
msgid "Width"
msgstr "Largura"
#: gtk/gtkfontchooserwidget.c:1570
#: gtk/gtkfontchooserwidget.c:1533
msgctxt "Font variation axis"
msgid "Weight"
msgstr "Peso"
#: gtk/gtkfontchooserwidget.c:1571
#: gtk/gtkfontchooserwidget.c:1534
msgctxt "Font variation axis"
msgid "Italic"
msgstr "Itálico"
#: gtk/gtkfontchooserwidget.c:1572
#: gtk/gtkfontchooserwidget.c:1535
msgctxt "Font variation axis"
msgid "Slant"
msgstr "Inclinado"
#: gtk/gtkfontchooserwidget.c:1573
#: gtk/gtkfontchooserwidget.c:1536
msgctxt "Font variation axis"
msgid "Optical Size"
msgstr "Tamanho ótico"
#: gtk/gtkfontchooserwidget.c:2120
#: gtk/gtkfontchooserwidget.c:2140
msgid "Default"
msgstr "Predefinição"
#: gtk/gtkfontchooserwidget.c:2166
#: gtk/gtkfontchooserwidget.c:2186
msgid "Ligatures"
msgstr "Ligaduras"
#: gtk/gtkfontchooserwidget.c:2167
#: gtk/gtkfontchooserwidget.c:2187
msgid "Letter Case"
msgstr "Caixa de letra"
#: gtk/gtkfontchooserwidget.c:2168
#: gtk/gtkfontchooserwidget.c:2188
msgid "Number Case"
msgstr "Caixa de número"
#: gtk/gtkfontchooserwidget.c:2169
#: gtk/gtkfontchooserwidget.c:2189
msgid "Number Spacing"
msgstr "Espaçamento de número"
#: gtk/gtkfontchooserwidget.c:2170
#: gtk/gtkfontchooserwidget.c:2190
msgid "Number Formatting"
msgstr "Formatação de número"
#: gtk/gtkfontchooserwidget.c:2171
#: gtk/gtkfontchooserwidget.c:2191
msgid "Character Variants"
msgstr "Variantes de carácter"
@@ -2482,27 +2487,27 @@ msgstr "Variantes de carácter"
msgid "OpenGL context creation failed"
msgstr "Falha ao criar o contexto OpenGL"
#: gtk/gtklabel.c:5530 gtk/gtktext.c:6052 gtk/gtktextview.c:8908
#: gtk/gtklabel.c:5642 gtk/gtktext.c:6052 gtk/gtktextview.c:8908
msgid "Cu_t"
msgstr "Cor_tar"
#: gtk/gtklabel.c:5531 gtk/gtktext.c:6056 gtk/gtktextview.c:8912
#: gtk/gtklabel.c:5643 gtk/gtktext.c:6056 gtk/gtktextview.c:8912
msgid "_Copy"
msgstr "_Copiar"
#: gtk/gtklabel.c:5532 gtk/gtktext.c:6060 gtk/gtktextview.c:8916
#: gtk/gtklabel.c:5644 gtk/gtktext.c:6060 gtk/gtktextview.c:8916
msgid "_Paste"
msgstr "Co_lar"
#: gtk/gtklabel.c:5538 gtk/gtktext.c:6073 gtk/gtktextview.c:8941
#: gtk/gtklabel.c:5650 gtk/gtktext.c:6073 gtk/gtktextview.c:8941
msgid "Select _All"
msgstr "Selecionar _tudo"
#: gtk/gtklabel.c:5543
#: gtk/gtklabel.c:5655
msgid "_Open Link"
msgstr "_Abrir Ligação"
#: gtk/gtklabel.c:5547
#: gtk/gtklabel.c:5659
msgid "Copy _Link Address"
msgstr "Copiar endereço da _ligação"
@@ -2551,7 +2556,7 @@ msgstr ""
#. * Do *not* translate it to "predefinito:LTR", if it
#. * it isn't default:LTR or default:RTL it will not work
#.
#: gtk/gtkmain.c:768
#: gtk/gtkmain.c:771
msgid "default:LTR"
msgstr "default:LTR"
@@ -2604,7 +2609,7 @@ msgid "%d:%02d"
msgstr "%d:%02d"
#: gtk/gtkmessagedialog.c:158 gtk/gtkmessagedialog.c:176
#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6219
#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6227
msgid "_OK"
msgstr "_Aceitar"
@@ -3483,7 +3488,7 @@ msgstr "_Desfazer"
msgid "_Redo"
msgstr "_Refazer"
#: gtk/gtktreeexpander.c:205
#: gtk/gtktreeexpander.c:205 gtk/inspector/misc-info.ui:278
msgid "Expand"
msgstr "Expandir"
@@ -3506,12 +3511,12 @@ msgctxt "volume percentage"
msgid "%d%%"
msgstr "%d%%"
#: gtk/gtkwindow.c:6206
#: gtk/gtkwindow.c:6214
#, c-format
msgid "Do you want to use GTK Inspector?"
msgstr "Deseja usar o Inspetor GTK?"
#: gtk/gtkwindow.c:6208
#: gtk/gtkwindow.c:6216
#, c-format
msgid ""
"GTK Inspector is an interactive debugger that lets you explore and modify "
@@ -3522,7 +3527,7 @@ msgstr ""
"estado interno de qualquer aplicação GTK. Usá-lo pode fazer que a aplicação "
"se encerre ou falhe."
#: gtk/gtkwindow.c:6213
#: gtk/gtkwindow.c:6221
msgid "Dont show this message again"
msgstr "Não mostrar esta mensagem novamente"
@@ -3593,30 +3598,38 @@ msgstr "Tipo de parâmetro"
msgid "State"
msgstr "Estado"
#: gtk/inspector/clipboard.c:149
#: gtk/inspector/clipboard.c:211
msgid "Show"
msgstr "Mostrar"
#: gtk/inspector/clipboard.c:205
#: gtk/inspector/clipboard.c:228
msgid "Hover to load"
msgstr "Pairar para carregar"
#: gtk/inspector/clipboard.c:278
msgctxt "clipboard"
msgid "empty"
msgstr "vazio"
#: gtk/inspector/clipboard.c:210
#: gtk/inspector/clipboard.c:283 gtk/inspector/clipboard.c:325
msgctxt "clipboard"
msgid "local"
msgstr "local"
#: gtk/inspector/clipboard.c:212
#: gtk/inspector/clipboard.c:285 gtk/inspector/clipboard.c:327
msgctxt "clipboard"
msgid "remote"
msgstr "remoto"
#: gtk/inspector/clipboard.ui:31 gtk/inspector/window.ui:574
#: gtk/inspector/clipboard.ui:31
msgid "Drag and hold here"
msgstr "Arrastar e manter aqui"
#: gtk/inspector/clipboard.ui:75 gtk/inspector/window.ui:574
msgid "Clipboard"
msgstr "Área de transferência"
#: gtk/inspector/clipboard.ui:70
#: gtk/inspector/clipboard.ui:114
msgid "Primary"
msgstr "Principal"
@@ -3842,56 +3855,60 @@ msgid "Request Mode"
msgstr "Modo de solicitação"
#: gtk/inspector/misc-info.ui:269
msgid "Allocation"
msgstr "Alocação"
msgid "Measure map"
msgstr "Mapa de medida"
#: gtk/inspector/misc-info.ui:298
#: gtk/inspector/misc-info.ui:328
msgid "Allocation"
msgstr "Atribuição"
#: gtk/inspector/misc-info.ui:357
msgid "Baseline"
msgstr "Linha base"
#: gtk/inspector/misc-info.ui:327
#: gtk/inspector/misc-info.ui:386
msgid "Surface"
msgstr "Surpefície"
#: gtk/inspector/misc-info.ui:346 gtk/inspector/misc-info.ui:385
#: gtk/inspector/misc-info.ui:424 gtk/inspector/prop-editor.c:1116
#: gtk/inspector/misc-info.ui:405 gtk/inspector/misc-info.ui:444
#: gtk/inspector/misc-info.ui:483 gtk/inspector/prop-editor.c:1116
#: gtk/inspector/prop-editor.c:1476 gtk/inspector/window.ui:396
msgid "Properties"
msgstr "Propriedades"
#: gtk/inspector/misc-info.ui:366
#: gtk/inspector/misc-info.ui:425
msgid "Renderer"
msgstr "Renderizador"
#: gtk/inspector/misc-info.ui:405
#: gtk/inspector/misc-info.ui:464
msgid "Frame Clock"
msgstr "Moldura do relógio"
#: gtk/inspector/misc-info.ui:444
#: gtk/inspector/misc-info.ui:503
msgid "Tick Callback"
msgstr "Retorno do tique"
#: gtk/inspector/misc-info.ui:474
#: gtk/inspector/misc-info.ui:533
msgid "Frame Count"
msgstr "Contagem de imagem"
#: gtk/inspector/misc-info.ui:503
#: gtk/inspector/misc-info.ui:562
msgid "Frame Rate"
msgstr "Taxa de atualização"
#: gtk/inspector/misc-info.ui:532
#: gtk/inspector/misc-info.ui:591
msgid "Mapped"
msgstr "Mapeado"
#: gtk/inspector/misc-info.ui:562
#: gtk/inspector/misc-info.ui:621
msgid "Realized"
msgstr "Realizado"
#: gtk/inspector/misc-info.ui:592
#: gtk/inspector/misc-info.ui:651
msgid "Is Toplevel"
msgstr "É nível de topo"
#: gtk/inspector/misc-info.ui:622
#: gtk/inspector/misc-info.ui:681
msgid "Child Visible"
msgstr "Filho visível"
+2860 -3137
View File
File diff suppressed because it is too large Load Diff
+102 -78
View File
@@ -4,13 +4,13 @@
# Maxim Dziumanenko <dziumanenko@gmail.com>, 2004-2010.
# wanderlust <wanderlust@ukr.net>, 2009.
# Daniel Korostil <ted.korostiled@gmail.com>, 2013, 2014, 2015, 2016.
# Yuri Chornoivan <yurchor@ukr.net>, 2014, 2020, 2021.
# Yuri Chornoivan <yurchor@ukr.net>, 2014, 2020, 2021, 2022.
msgid ""
msgstr ""
"Project-Id-Version: gtk+\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2021-12-14 00:32+0000\n"
"PO-Revision-Date: 2021-12-14 15:20+0200\n"
"POT-Creation-Date: 2022-01-03 02:53+0000\n"
"PO-Revision-Date: 2022-01-03 22:50+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -49,7 +49,7 @@ msgstr "Не вдалося надати дані як «%s»"
msgid "Cannot provide contents as %s"
msgstr "Не вдалося надати дані як %s"
#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:421
#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:427
msgid "The current backend does not support OpenGL"
msgstr "Цей модуль не підтримує OpenGL"
@@ -111,34 +111,34 @@ msgstr ""
msgid "No compatible formats to transfer contents."
msgstr "Немає сумісних форматів для передавання даних."
#: gdk/gdkglcontext.c:323
#: gdk/gdkglcontext.c:329
msgid "The EGL implementation does not support any allowed APIs"
msgstr ""
"У реалізації EGL не передбачено підтримки жодного з дозволених програмних "
"інтерфейсів"
#: gdk/gdkglcontext.c:404 gdk/win32/gdkglcontext-win32-wgl.c:624
#: gdk/x11/gdkglcontext-glx.c:622
#: gdk/gdkglcontext.c:410 gdk/win32/gdkglcontext-win32-wgl.c:624
#: gdk/x11/gdkglcontext-glx.c:624
msgid "Unable to create a GL context"
msgstr "Неможливо створити вміст GL"
#: gdk/gdkglcontext.c:1237
#: gdk/gdkglcontext.c:1260
msgid "Anything but OpenGL ES disabled via GDK_DEBUG"
msgstr "За допомогою GDK_DEBUG вимкнено усе, окрім OpenGL ES"
#: gdk/gdkglcontext.c:1246
#: gdk/gdkglcontext.c:1269
#, c-format
msgid "Application does not support %s API"
msgstr "У програмі не передбачено підтримки програмного інтерфейсу %s"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:1732
#: gdk/gdkglcontext.c:1790
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "Намагаємося скористатися %s, але %s вже використано"
#: gdk/gdksurface.c:1238
#: gdk/gdksurface.c:1240
msgid "Vulkan support disabled via GDK_DEBUG"
msgstr "Вимкнено підтримування Vulkan через GDK_DEBUG"
@@ -559,8 +559,7 @@ msgstr "Не вдалося завантажити дані RGB з файлу ф
#: gdk/loaders/gdktiff.c:383
msgid "Could not load TIFF data"
msgstr ""
"Не вдалося завантажити дані TIFF"
msgstr "Не вдалося завантажити дані TIFF"
#: gdk/loaders/gdktiff.c:465
#, c-format
@@ -801,15 +800,15 @@ msgstr ""
"Не вдалося зберегти буфер обміну. Немає активної програми для керування "
"буфером обміну."
#: gdk/x11/gdkglcontext-glx.c:778
#: gdk/x11/gdkglcontext-glx.c:780
msgid "No GLX configurations available"
msgstr "Немає доступних налаштувань GLX"
#: gdk/x11/gdkglcontext-glx.c:851
#: gdk/x11/gdkglcontext-glx.c:853
msgid "No GLX configuration with required features found"
msgstr "Не знайдено налаштувань GLX із потрібними можливостями"
#: gdk/x11/gdkglcontext-glx.c:925
#: gdk/x11/gdkglcontext-glx.c:927
msgid "GLX is not supported"
msgstr "Підтримки GLX не передбачено"
@@ -2127,8 +2126,8 @@ msgstr "Файл з такою назвою вже існує"
#: gtk/gtkmountoperation.c:610 gtk/gtkpagesetupunixdialog.c:283
#: gtk/gtkprintbackend.c:642 gtk/gtkprinteroptionwidget.c:713
#: gtk/gtkprintunixdialog.c:667 gtk/gtkprintunixdialog.c:823
#: gtk/gtkwindow.c:6218 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1271
#: gtk/gtkwindow.c:6226 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1706
msgid "_Cancel"
msgstr "_Скасувати"
@@ -2139,7 +2138,7 @@ msgid "_Open"
msgstr "_Відкрити"
#: gtk/gtkfilechoosernative.c:574 gtk/inspector/css-editor.c:249
#: gtk/inspector/recorder.c:1272
#: gtk/inspector/recorder.c:1707
msgid "_Save"
msgstr "З_берегти"
@@ -2216,7 +2215,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Якщо вилучити об'єкт, його буде втрачено назавжди."
#: gtk/gtkfilechooserwidget.c:1210 gtk/gtkfilechooserwidget.c:1826
#: gtk/gtklabel.c:5533 gtk/gtktext.c:6064 gtk/gtktextview.c:8920
#: gtk/gtklabel.c:5644 gtk/gtktext.c:6064 gtk/gtktextview.c:8920
msgid "_Delete"
msgstr "В_илучити"
@@ -2337,7 +2336,7 @@ msgstr "Програма"
msgid "Audio"
msgstr "Звук"
#: gtk/gtkfilechooserwidget.c:4303 gtk/gtkfontbutton.c:602
#: gtk/gtkfilechooserwidget.c:4303 gtk/gtkfontbutton.c:604
#: gtk/inspector/visual.ui:170
msgid "Font"
msgstr "Шрифт"
@@ -2421,60 +2420,70 @@ msgstr "Дозволено"
msgid "Sans 12"
msgstr "Sans 12"
#: gtk/gtkfontbutton.c:506 gtk/gtkfontbutton.c:626
#: gtk/gtkfontbutton.c:508 gtk/gtkfontbutton.c:628
msgid "Pick a Font"
msgstr "Виберіть шрифт"
#: gtk/gtkfontbutton.c:1363
#: gtk/gtkfontbutton.c:1365
msgctxt "font"
msgid "None"
msgstr "Немає"
#: gtk/gtkfontchooserwidget.c:1569
#: gtk/gtkfontchooserwidget.c:1532
#| msgid "Width"
msgctxt "Font variation axis"
msgid "Width"
msgstr "Ширина"
#: gtk/gtkfontchooserwidget.c:1570
#: gtk/gtkfontchooserwidget.c:1533
#| msgid "Weight"
msgctxt "Font variation axis"
msgid "Weight"
msgstr "Вага"
#: gtk/gtkfontchooserwidget.c:1571
#: gtk/gtkfontchooserwidget.c:1534
#| msgid "Italic"
msgctxt "Font variation axis"
msgid "Italic"
msgstr "Курсив"
#: gtk/gtkfontchooserwidget.c:1572
#: gtk/gtkfontchooserwidget.c:1535
#| msgid "Slant"
msgctxt "Font variation axis"
msgid "Slant"
msgstr "Нахил"
#: gtk/gtkfontchooserwidget.c:1573
#: gtk/gtkfontchooserwidget.c:1536
#| msgid "Optical Size"
msgctxt "Font variation axis"
msgid "Optical Size"
msgstr "Оптичний розмір"
#: gtk/gtkfontchooserwidget.c:2120
#: gtk/gtkfontchooserwidget.c:2140
msgid "Default"
msgstr "Типово"
#: gtk/gtkfontchooserwidget.c:2166
#: gtk/gtkfontchooserwidget.c:2186
msgid "Ligatures"
msgstr "Лігатури"
#: gtk/gtkfontchooserwidget.c:2167
#: gtk/gtkfontchooserwidget.c:2187
msgid "Letter Case"
msgstr "Розмір літер"
#: gtk/gtkfontchooserwidget.c:2168
#: gtk/gtkfontchooserwidget.c:2188
msgid "Number Case"
msgstr "Розмір цифр"
#: gtk/gtkfontchooserwidget.c:2169
#: gtk/gtkfontchooserwidget.c:2189
msgid "Number Spacing"
msgstr "Інтервали між цифрами"
#: gtk/gtkfontchooserwidget.c:2170
#: gtk/gtkfontchooserwidget.c:2190
msgid "Number Formatting"
msgstr "Форматування чисел"
#: gtk/gtkfontchooserwidget.c:2171
#: gtk/gtkfontchooserwidget.c:2191
msgid "Character Variants"
msgstr "Варіанти символів"
@@ -2482,27 +2491,27 @@ msgstr "Варіанти символів"
msgid "OpenGL context creation failed"
msgstr "Не вдалося створити контекст OpenGL"
#: gtk/gtklabel.c:5530 gtk/gtktext.c:6052 gtk/gtktextview.c:8908
#: gtk/gtklabel.c:5641 gtk/gtktext.c:6052 gtk/gtktextview.c:8908
msgid "Cu_t"
msgstr "Ви_різати"
#: gtk/gtklabel.c:5531 gtk/gtktext.c:6056 gtk/gtktextview.c:8912
#: gtk/gtklabel.c:5642 gtk/gtktext.c:6056 gtk/gtktextview.c:8912
msgid "_Copy"
msgstr "_Копіювати"
#: gtk/gtklabel.c:5532 gtk/gtktext.c:6060 gtk/gtktextview.c:8916
#: gtk/gtklabel.c:5643 gtk/gtktext.c:6060 gtk/gtktextview.c:8916
msgid "_Paste"
msgstr "Вст_авити"
#: gtk/gtklabel.c:5538 gtk/gtktext.c:6073 gtk/gtktextview.c:8941
#: gtk/gtklabel.c:5649 gtk/gtktext.c:6073 gtk/gtktextview.c:8941
msgid "Select _All"
msgstr "Виді_лити все"
#: gtk/gtklabel.c:5543
#: gtk/gtklabel.c:5654
msgid "_Open Link"
msgstr "_Відкрити посилання"
#: gtk/gtklabel.c:5547
#: gtk/gtklabel.c:5658
msgid "Copy _Link Address"
msgstr "Копіювати _адресу посилання"
@@ -2551,7 +2560,7 @@ msgstr ""
#. * Do *not* translate it to "predefinito:LTR", if it
#. * it isn't default:LTR or default:RTL it will not work
#.
#: gtk/gtkmain.c:768
#: gtk/gtkmain.c:771
msgid "default:LTR"
msgstr "default:LTR"
@@ -2604,7 +2613,7 @@ msgid "%d:%02d"
msgstr "%d:%02d"
#: gtk/gtkmessagedialog.c:158 gtk/gtkmessagedialog.c:176
#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6219
#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6227
msgid "_OK"
msgstr "_Гаразд"
@@ -2943,7 +2952,7 @@ msgstr "_Додати до закладок"
#: gtk/gtkplacessidebar.c:3244
msgid "_Remove"
msgstr "В_лучити"
msgstr "Ви_лучити"
#: gtk/gtkplacessidebar.c:3260 gtk/gtkplacesview.c:1692
msgid "_Mount"
@@ -3482,7 +3491,7 @@ msgstr "_Скасувати"
msgid "_Redo"
msgstr "Пов_торити"
#: gtk/gtktreeexpander.c:205
#: gtk/gtktreeexpander.c:205 gtk/inspector/misc-info.ui:278
msgid "Expand"
msgstr "Розгорнути"
@@ -3505,12 +3514,12 @@ msgctxt "volume percentage"
msgid "%d%%"
msgstr "%d%%"
#: gtk/gtkwindow.c:6206
#: gtk/gtkwindow.c:6214
#, c-format
msgid "Do you want to use GTK Inspector?"
msgstr "Бажаєте використовувати інспектор GTK?"
#: gtk/gtkwindow.c:6208
#: gtk/gtkwindow.c:6216
#, c-format
msgid ""
"GTK Inspector is an interactive debugger that lets you explore and modify "
@@ -3521,7 +3530,7 @@ msgstr ""
"редагувати внутрішні частини будь-які програми GTK. Його використання може "
"спричинити збої в програмі."
#: gtk/gtkwindow.c:6213
#: gtk/gtkwindow.c:6221
msgid "Dont show this message again"
msgstr "Не показувати це повідомлення надалі"
@@ -3566,7 +3575,8 @@ msgid "Attribute"
msgstr "Атрибут"
#: gtk/inspector/a11y.ui:78 gtk/inspector/css-node-tree.ui:119
#: gtk/inspector/prop-list.ui:57 gtk/inspector/recorder.ui:124
#: gtk/inspector/prop-list.ui:57 gtk/inspector/recorder.ui:155
#: gtk/inspector/recorder.ui:221
msgid "Value"
msgstr "Значення"
@@ -3591,30 +3601,38 @@ msgstr "Тип параметра"
msgid "State"
msgstr "Стан"
#: gtk/inspector/clipboard.c:149
#: gtk/inspector/clipboard.c:211
msgid "Show"
msgstr "Показати"
#: gtk/inspector/clipboard.c:205
#: gtk/inspector/clipboard.c:228
msgid "Hover to load"
msgstr "Наведення для завантаження"
#: gtk/inspector/clipboard.c:278
msgctxt "clipboard"
msgid "empty"
msgstr "порожній"
#: gtk/inspector/clipboard.c:210
#: gtk/inspector/clipboard.c:283 gtk/inspector/clipboard.c:325
msgctxt "clipboard"
msgid "local"
msgstr "локальний"
#: gtk/inspector/clipboard.c:212
#: gtk/inspector/clipboard.c:285 gtk/inspector/clipboard.c:327
msgctxt "clipboard"
msgid "remote"
msgstr "віддалений"
#: gtk/inspector/clipboard.ui:31 gtk/inspector/window.ui:574
#: gtk/inspector/clipboard.ui:31
msgid "Drag and hold here"
msgstr "Перетягніть і затримайте тут"
#: gtk/inspector/clipboard.ui:75 gtk/inspector/window.ui:574
msgid "Clipboard"
msgstr "Буфер обміну"
#: gtk/inspector/clipboard.ui:70
#: gtk/inspector/clipboard.ui:114
msgid "Primary"
msgstr "Основний"
@@ -3837,56 +3855,60 @@ msgid "Request Mode"
msgstr "Режим запиту"
#: gtk/inspector/misc-info.ui:269
msgid "Measure map"
msgstr "Мапа вимірювання"
#: gtk/inspector/misc-info.ui:328
msgid "Allocation"
msgstr "Розміщення"
#: gtk/inspector/misc-info.ui:298
#: gtk/inspector/misc-info.ui:357
msgid "Baseline"
msgstr "Базова лінія"
#: gtk/inspector/misc-info.ui:327
#: gtk/inspector/misc-info.ui:386
msgid "Surface"
msgstr "Поверхня"
#: gtk/inspector/misc-info.ui:346 gtk/inspector/misc-info.ui:385
#: gtk/inspector/misc-info.ui:424 gtk/inspector/prop-editor.c:1116
#: gtk/inspector/misc-info.ui:405 gtk/inspector/misc-info.ui:444
#: gtk/inspector/misc-info.ui:483 gtk/inspector/prop-editor.c:1116
#: gtk/inspector/prop-editor.c:1476 gtk/inspector/window.ui:396
msgid "Properties"
msgstr "Властивості"
#: gtk/inspector/misc-info.ui:366
#: gtk/inspector/misc-info.ui:425
msgid "Renderer"
msgstr "Відтворювач"
#: gtk/inspector/misc-info.ui:405
#: gtk/inspector/misc-info.ui:464
msgid "Frame Clock"
msgstr "Годинник кадрів"
#: gtk/inspector/misc-info.ui:444
#: gtk/inspector/misc-info.ui:503
msgid "Tick Callback"
msgstr "Позначити зворотний виклик"
#: gtk/inspector/misc-info.ui:474
#: gtk/inspector/misc-info.ui:533
msgid "Frame Count"
msgstr "Підрахунок кадрів"
#: gtk/inspector/misc-info.ui:503
#: gtk/inspector/misc-info.ui:562
msgid "Frame Rate"
msgstr "Частота кадрів"
#: gtk/inspector/misc-info.ui:532
#: gtk/inspector/misc-info.ui:591
msgid "Mapped"
msgstr "Відображення"
#: gtk/inspector/misc-info.ui:562
#: gtk/inspector/misc-info.ui:621
msgid "Realized"
msgstr "Спостереження"
#: gtk/inspector/misc-info.ui:592
#: gtk/inspector/misc-info.ui:651
msgid "Is Toplevel"
msgstr "На верхньому рівні"
#: gtk/inspector/misc-info.ui:622
#: gtk/inspector/misc-info.ui:681
msgid "Child Visible"
msgstr "Видимі діти"
@@ -3994,36 +4016,40 @@ msgstr "Джерело:"
msgid "Defined At"
msgstr "Визначено в"
#: gtk/inspector/recorder.c:1242
#: gtk/inspector/recorder.c:1677
#, c-format
msgid "Saving RenderNode failed"
msgstr "Не вдалося зберегти RenderNode"
#: gtk/inspector/recorder.ui:15
#: gtk/inspector/recorder.ui:20
msgid "Record frames"
msgstr "Запис кадрів"
#: gtk/inspector/recorder.ui:22
#: gtk/inspector/recorder.ui:27
msgid "Clear recorded frames"
msgstr "Вилучити записані кадри"
#: gtk/inspector/recorder.ui:29
#: gtk/inspector/recorder.ui:34
msgid "Add debug nodes"
msgstr "Додати діагностичні вузли"
#: gtk/inspector/recorder.ui:38
#: gtk/inspector/recorder.ui:42
msgid "Highlight event sequences"
msgstr "Підсвітити послідовності подій"
#: gtk/inspector/recorder.ui:51
msgid "Use a dark background"
msgstr "Використовувати темне тло"
#: gtk/inspector/recorder.ui:46
#: gtk/inspector/recorder.ui:59
msgid "Save selected node"
msgstr "Зберегти позначений вузол"
#: gtk/inspector/recorder.ui:54
#: gtk/inspector/recorder.ui:67
msgid "Copy to clipboard"
msgstr "Скопіювати до буфера"
#: gtk/inspector/recorder.ui:111
#: gtk/inspector/recorder.ui:142 gtk/inspector/recorder.ui:208
msgid "Property"
msgstr "Властивість"
@@ -7474,13 +7500,11 @@ msgstr "Не вдалося обробити «%s»: %s\n"
#: tools/gtk-builder-tool-simplify.c:2303
#, c-format
#| msgid "Cant parse “%s”: %s\n"
msgid "Can't parse “%s”: %s\n"
msgstr "Не вдалося обробити «%s»: %s\n"
#: tools/gtk-builder-tool-simplify.c:2309
#, c-format
#| msgid "Cant parse “%s”: %s\n"
msgid "Can't parse “%s”\n"
msgstr "Не вдалося обробити «%s»\n"
+7
View File
@@ -15,10 +15,15 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <string.h>
#ifdef HAVE_PANGOFT
#include <pango/pangofc-fontmap.h>
#endif
#include <gtk/gtk.h>
static gboolean
monospace_filter (const PangoFontFamily *family,
const PangoFontFace *face,
@@ -86,6 +91,7 @@ main (int argc, char *argv[])
font_button = gtk_font_button_new ();
#ifdef HAVE_PANGOFT
if (argc > 0)
{
FcConfig *config;
@@ -103,6 +109,7 @@ main (int argc, char *argv[])
pango_fc_font_map_set_config (PANGO_FC_FONT_MAP (fontmap), config);
gtk_font_chooser_set_font_map (GTK_FONT_CHOOSER (font_button), fontmap);
}
#endif
gtk_font_button_set_use_font (GTK_FONT_BUTTON (font_button), TRUE);
+3
View File
@@ -452,6 +452,9 @@ test_data = [
'radial-positions.errors',
'radial-positions.ref.css',
'radial.ref.css',
'rotate3d-crash.css',
'rotate3d-crash.errors',
'rotate3d-crash.ref.css',
'selector.css',
'selector.ref.css',
'selector-original.css',
+3
View File
@@ -0,0 +1,3 @@
* {
transform: rotate3d(90,90,90);
}
@@ -0,0 +1 @@
rotate3d-crash.css:2:31-32: error: GTK_CSS_PARSER_ERROR_SYNTAX

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