summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml1
-rwxr-xr-x.gitlab-ci/test-docker.sh2
-rw-r--r--.gitlab-ci/test-msvc.bat2
-rw-r--r--NEWS107
-rw-r--r--config.h.meson3
-rw-r--r--demos/gtk-demo/org.gtk.Demo4.appdata.xml.in6
-rw-r--r--demos/icon-browser/org.gtk.IconBrowser4.appdata.xml.in6
-rw-r--r--demos/print-editor/org.gtk.PrintEditor4.appdata.xml6
-rw-r--r--demos/widget-factory/org.gtk.WidgetFactory4.appdata.xml.in6
-rw-r--r--gdk/gdk.c2
-rw-r--r--gdk/gdkdebug.h10
-rw-r--r--gdk/gdkdisplay.c210
-rw-r--r--gdk/gdkdisplay.h4
-rw-r--r--gdk/gdkdisplayprivate.h12
-rw-r--r--gdk/gdkdrawcontext.c32
-rw-r--r--gdk/gdkglcontext.c179
-rw-r--r--gdk/gdkglcontext.h7
-rw-r--r--gdk/gdkglcontextprivate.h21
-rw-r--r--gdk/gdksurface.c90
-rw-r--r--gdk/gdksurfaceprivate.h5
-rw-r--r--gdk/macos/gdkmacosdisplay.c18
-rw-r--r--gdk/macos/gdkmacosglcontext-private.h9
-rw-r--r--gdk/macos/gdkmacosglcontext.c118
-rw-r--r--gdk/macos/gdkmacossurface.c15
-rw-r--r--gdk/wayland/gdkdevice-wayland.c5
-rw-r--r--gdk/wayland/gdkdisplay-wayland.c2
-rw-r--r--gdk/wayland/gdkdisplay-wayland.h4
-rw-r--r--gdk/wayland/gdkglcontext-wayland.c322
-rw-r--r--gdk/wayland/gdkglcontext-wayland.h9
-rw-r--r--gdk/wayland/gdkprivate-wayland.h5
-rw-r--r--gdk/wayland/gdksurface-wayland.c43
-rw-r--r--gdk/wayland/gdksurface-wayland.h5
-rw-r--r--gdk/win32/gdkdisplay-win32.c194
-rw-r--r--gdk/win32/gdkdisplay-win32.h19
-rw-r--r--gdk/win32/gdkdrag-win32.c8
-rw-r--r--gdk/win32/gdkdrop-win32.c8
-rw-r--r--gdk/win32/gdkglcontext-win32-egl.c504
-rw-r--r--gdk/win32/gdkglcontext-win32-wgl.c727
-rw-r--r--gdk/win32/gdkglcontext-win32.c1229
-rw-r--r--gdk/win32/gdkglcontext-win32.h53
-rw-r--r--gdk/win32/gdkkeys-win32.c1
-rw-r--r--gdk/win32/gdkmonitor-win32.c4
-rw-r--r--gdk/win32/gdkscreen-win32.c3
-rw-r--r--gdk/win32/gdksurface-win32.c52
-rw-r--r--gdk/win32/gdksurface-win32.h6
-rw-r--r--gdk/win32/meson.build2
-rw-r--r--gdk/x11/gdkdisplay-x11.c231
-rw-r--r--gdk/x11/gdkdisplay-x11.h18
-rw-r--r--gdk/x11/gdkdrag-x11.c27
-rw-r--r--gdk/x11/gdkdrop-x11.c3
-rw-r--r--gdk/x11/gdkglcontext-egl.c748
-rw-r--r--gdk/x11/gdkglcontext-glx.c780
-rw-r--r--gdk/x11/gdkglcontext-x11.c74
-rw-r--r--gdk/x11/gdkglcontext-x11.h44
-rw-r--r--gdk/x11/gdkprivate-x11.h5
-rw-r--r--gdk/x11/gdkscreen-x11.c14
-rw-r--r--gdk/x11/gdkscreen-x11.h17
-rw-r--r--gdk/x11/gdksurface-x11.c42
-rw-r--r--gdk/x11/gdksurface-x11.h3
-rw-r--r--gdk/x11/gdkvisual-x11.c322
-rw-r--r--gdk/x11/gdkvisual-x11.h83
-rw-r--r--gdk/x11/meson.build2
-rw-r--r--gsk/gl/gskgldriver.c9
-rw-r--r--gsk/gskrendernodeimpl.c28
-rw-r--r--gsk/gskrendernodeparser.c24
-rw-r--r--gsk/gskrendernodeprivate.h8
-rw-r--r--gsk/gsktransform.c87
-rw-r--r--gsk/ngl/fp16.c4
-rw-r--r--gsk/ngl/fp16private.h6
-rw-r--r--gsk/ngl/gsknglcommandqueue.c2
-rw-r--r--gsk/ngl/gskngldriver.c43
-rw-r--r--gsk/ngl/gskngldriverprivate.h2
-rw-r--r--gsk/ngl/gsknglglyphlibrary.c14
-rw-r--r--gsk/ngl/gskngliconlibrary.c11
-rw-r--r--gsk/ngl/gsknglrenderer.c16
-rw-r--r--gsk/ngl/gsknglrenderjob.c89
-rw-r--r--gtk/gtkappchooserbutton.c32
-rw-r--r--gtk/gtkbuilder.c5
-rw-r--r--gtk/gtkcolorbutton.c31
-rw-r--r--gtk/gtkcssimagecrossfade.c16
-rw-r--r--gtk/gtkdebug.h2
-rw-r--r--gtk/gtkfilefilter.c2
-rw-r--r--gtk/gtkfontbutton.c31
-rw-r--r--gtk/gtkgridlayout.c36
-rw-r--r--gtk/gtkicontheme.c2
-rw-r--r--gtk/gtkjoinedmenu.c315
-rw-r--r--gtk/gtkjoinedmenuprivate.h41
-rw-r--r--gtk/gtklabel.c10
-rw-r--r--gtk/gtklayoutmanager.c2
-rw-r--r--gtk/gtkmain.c14
-rw-r--r--gtk/gtkmenubutton.c44
-rw-r--r--gtk/gtkpasswordentry.c18
-rw-r--r--gtk/gtkpasswordentrybuffer.c2
-rw-r--r--gtk/gtkscrolledwindow.c6
-rw-r--r--gtk/gtksizerequest.c20
-rw-r--r--gtk/gtksnapshot.c171
-rw-r--r--gtk/gtkstack.c2
-rw-r--r--gtk/gtktext.c101
-rw-r--r--gtk/gtktext.h5
-rw-r--r--gtk/gtktextbtree.c2
-rw-r--r--gtk/gtktexthistory.c9
-rw-r--r--gtk/gtktextview.c11
-rw-r--r--gtk/gtkwidget.c54
-rw-r--r--gtk/gtkwidgetfocus.c12
-rw-r--r--gtk/gtkwidgetprivate.h14
-rw-r--r--gtk/icons/16x16/actions/bookmark-new-symbolic.symbolic.pngbin233 -> 234 bytes
-rw-r--r--gtk/icons/16x16/actions/color-select-symbolic.symbolic.pngbin220 -> 231 bytes
-rw-r--r--gtk/icons/16x16/actions/document-open-recent-symbolic.symbolic.pngbin350 -> 351 bytes
-rw-r--r--gtk/icons/16x16/actions/document-open-symbolic.symbolic.pngbin194 -> 189 bytes
-rw-r--r--gtk/icons/16x16/actions/document-save-as-symbolic.symbolic.pngbin192 -> 202 bytes
-rw-r--r--gtk/icons/16x16/actions/document-save-symbolic.symbolic.pngbin174 -> 187 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-clear-all-symbolic.symbolic.pngbin237 -> 255 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-clear-symbolic.symbolic.pngbin236 -> 238 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-copy-symbolic.symbolic.pngbin139 -> 169 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-cut-symbolic.symbolic.pngbin304 -> 323 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-delete-symbolic.symbolic.pngbin286 -> 306 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-find-symbolic.symbolic.pngbin282 -> 316 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-paste-symbolic.symbolic.pngbin222 -> 197 bytes
-rw-r--r--gtk/icons/16x16/actions/edit-select-all-symbolic.symbolic.pngbin164 -> 204 bytes
-rw-r--r--gtk/icons/16x16/actions/find-location-symbolic.symbolic.pngbin343 -> 334 bytes
-rw-r--r--gtk/icons/16x16/actions/folder-new-symbolic.symbolic.pngbin194 -> 200 bytes
-rw-r--r--gtk/icons/16x16/actions/go-next-symbolic.symbolic.pngbin140 -> 141 bytes
-rw-r--r--gtk/icons/16x16/actions/go-previous-symbolic.symbolic.pngbin147 -> 146 bytes
-rw-r--r--gtk/icons/16x16/actions/insert-image-symbolic.symbolic.pngbin220 -> 220 bytes
-rw-r--r--gtk/icons/16x16/actions/insert-object-symbolic.symbolic.pngbin283 -> 282 bytes
-rw-r--r--gtk/icons/16x16/actions/list-add-symbolic.symbolic.pngbin112 -> 116 bytes
-rw-r--r--gtk/icons/16x16/actions/list-remove-all-symbolic.symbolic.pngbin163 -> 163 bytes
-rw-r--r--gtk/icons/16x16/actions/list-remove-symbolic.symbolic.pngbin101 -> 100 bytes
-rw-r--r--gtk/icons/16x16/actions/media-eject-symbolic.symbolic.pngbin157 -> 157 bytes
-rw-r--r--gtk/icons/16x16/actions/media-playback-pause-symbolic.symbolic.pngbin109 -> 105 bytes
-rw-r--r--gtk/icons/16x16/actions/media-playback-start-symbolic.symbolic.pngbin165 -> 195 bytes
-rw-r--r--gtk/icons/16x16/actions/media-playback-stop-symbolic.symbolic.pngbin106 -> 104 bytes
-rw-r--r--gtk/icons/16x16/actions/media-record-symbolic.symbolic.pngbin180 -> 236 bytes
-rw-r--r--gtk/icons/16x16/actions/object-select-symbolic.symbolic.pngbin167 -> 220 bytes
-rw-r--r--gtk/icons/16x16/actions/open-menu-symbolic.symbolic.pngbin104 -> 106 bytes
-rw-r--r--gtk/icons/16x16/actions/system-search-symbolic.symbolic.pngbin284 -> 316 bytes
-rw-r--r--gtk/icons/16x16/actions/value-increase-symbolic.symbolic.pngbin112 -> 113 bytes
-rw-r--r--gtk/icons/16x16/actions/view-list-symbolic.symbolic.pngbin150 -> 160 bytes
-rw-r--r--gtk/icons/16x16/actions/view-refresh-symbolic.symbolic.pngbin275 -> 324 bytes
-rw-r--r--gtk/icons/16x16/actions/window-maximize-symbolic.symbolic.pngbin148 -> 149 bytes
-rw-r--r--gtk/icons/16x16/categories/emoji-activities-symbolic.symbolic.pngbin417 -> 372 bytes
-rw-r--r--gtk/icons/16x16/emblems/emblem-important-symbolic.symbolic.pngbin279 -> 280 bytes
-rw-r--r--gtk/icons/16x16/emblems/emblem-system-symbolic.symbolic.pngbin287 -> 299 bytes
-rw-r--r--gtk/icons/16x16/emotes/face-smile-big-symbolic.symbolic.pngbin312 -> 313 bytes
-rw-r--r--gtk/icons/16x16/emotes/face-smile-symbolic.symbolic.pngbin303 -> 303 bytes
-rw-r--r--gtk/icons/16x16/places/folder-publicshare-symbolic.symbolic.pngbin234 -> 236 bytes
-rw-r--r--gtk/icons/16x16/places/folder-remote-symbolic.symbolic.pngbin183 -> 184 bytes
-rw-r--r--gtk/icons/16x16/places/folder-symbolic.symbolic.pngbin166 -> 166 bytes
-rw-r--r--gtk/icons/16x16/places/folder-templates-symbolic.symbolic.pngbin164 -> 164 bytes
-rw-r--r--gtk/icons/16x16/places/network-server-symbolic.symbolic.pngbin184 -> 184 bytes
-rw-r--r--gtk/icons/16x16/places/network-server.pngbin675 -> 718 bytes
-rw-r--r--gtk/icons/16x16/places/network-workgroup-symbolic.symbolic.pngbin218 -> 219 bytes
-rw-r--r--gtk/icons/16x16/places/user-desktop-symbolic.symbolic.pngbin166 -> 166 bytes
-rw-r--r--gtk/icons/16x16/places/user-trash-symbolic.symbolic.pngbin164 -> 164 bytes
-rw-r--r--gtk/icons/16x16/status/changes-allow-symbolic.symbolic.pngbin177 -> 177 bytes
-rw-r--r--gtk/icons/16x16/status/dialog-error-symbolic.symbolic.pngbin238 -> 241 bytes
-rw-r--r--gtk/icons/16x16/status/dialog-password-symbolic.symbolic.pngbin195 -> 237 bytes
-rw-r--r--gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.pngbin285 -> 286 bytes
-rw-r--r--gtk/icons/16x16/status/media-playlist-repeat-symbolic.symbolic.pngbin211 -> 210 bytes
-rw-r--r--gtk/icons/16x16/status/orientation-landscape-inverse-symbolic.symbolic.pngbin212 -> 212 bytes
-rw-r--r--gtk/icons/16x16/status/orientation-landscape-symbolic.symbolic.pngbin225 -> 222 bytes
-rw-r--r--gtk/icons/16x16/status/orientation-portrait-inverse-symbolic.symbolic.pngbin190 -> 192 bytes
-rw-r--r--gtk/icons/16x16/status/orientation-portrait-symbolic.symbolic.pngbin194 -> 195 bytes
-rw-r--r--gtk/icons/scalable/actions/bookmark-new-symbolic.svg7
-rw-r--r--gtk/icons/scalable/actions/color-select-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/document-open-recent-symbolic.svg7
-rw-r--r--gtk/icons/scalable/actions/document-open-symbolic.svg16
-rw-r--r--gtk/icons/scalable/actions/document-save-as-symbolic.svg11
-rw-r--r--gtk/icons/scalable/actions/document-save-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/edit-clear-all-symbolic.svg9
-rw-r--r--gtk/icons/scalable/actions/edit-clear-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/edit-copy-symbolic.svg9
-rw-r--r--gtk/icons/scalable/actions/edit-cut-symbolic.svg10
-rw-r--r--gtk/icons/scalable/actions/edit-delete-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/edit-find-symbolic.svg9
-rw-r--r--gtk/icons/scalable/actions/edit-paste-symbolic.svg10
-rw-r--r--gtk/icons/scalable/actions/edit-select-all-symbolic.svg22
-rw-r--r--gtk/icons/scalable/actions/find-location-symbolic.svg12
-rw-r--r--gtk/icons/scalable/actions/folder-new-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/go-next-symbolic-rtl.svg11
-rw-r--r--gtk/icons/scalable/actions/go-next-symbolic.svg11
-rw-r--r--gtk/icons/scalable/actions/go-previous-symbolic-rtl.svg11
-rw-r--r--gtk/icons/scalable/actions/go-previous-symbolic.svg11
-rw-r--r--gtk/icons/scalable/actions/insert-image-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/insert-object-symbolic.svg7
-rw-r--r--gtk/icons/scalable/actions/list-add-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/list-remove-all-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/list-remove-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/media-eject-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/media-playback-pause-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/media-playback-start-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/media-playback-stop-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/media-record-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/object-select-symbolic.svg5
-rw-r--r--gtk/icons/scalable/actions/open-menu-symbolic.svg9
-rw-r--r--gtk/icons/scalable/actions/system-search-symbolic.svg8
-rw-r--r--gtk/icons/scalable/actions/value-decrease-symbolic.svg4
-rw-r--r--gtk/icons/scalable/actions/value-increase-symbolic.svg4
-rw-r--r--gtk/icons/scalable/actions/view-list-symbolic.svg13
-rw-r--r--gtk/icons/scalable/actions/view-more-symbolic.svg9
-rw-r--r--gtk/icons/scalable/actions/view-refresh-symbolic.svg5
-rw-r--r--gtk/icons/scalable/categories/emoji-activities-symbolic.svg4
-rw-r--r--gtk/icons/scalable/categories/emoji-flags-symbolic.svg8
-rw-r--r--gtk/icons/scalable/categories/emoji-nature-symbolic.svg4
-rw-r--r--gtk/icons/scalable/categories/emoji-recent-symbolic.svg7
-rw-r--r--gtk/icons/scalable/emblems/emblem-important-symbolic.svg4
-rw-r--r--gtk/icons/scalable/emblems/emblem-system-symbolic.svg5
-rw-r--r--gtk/icons/scalable/emotes/face-smile-big-symbolic.svg4
-rw-r--r--gtk/icons/scalable/emotes/face-smile-symbolic.svg4
-rw-r--r--gtk/icons/scalable/places/folder-documents-symbolic.svg7
-rw-r--r--gtk/icons/scalable/places/folder-music-symbolic.svg7
-rw-r--r--gtk/icons/scalable/places/folder-pictures-symbolic.svg4
-rw-r--r--gtk/icons/scalable/places/folder-publicshare-symbolic.svg8
-rw-r--r--gtk/icons/scalable/places/folder-remote-symbolic.svg9
-rw-r--r--gtk/icons/scalable/places/folder-saved-search-symbolic.svg7
-rw-r--r--gtk/icons/scalable/places/folder-symbolic.svg8
-rw-r--r--gtk/icons/scalable/places/folder-templates-symbolic.svg8
-rw-r--r--gtk/icons/scalable/places/folder-videos-symbolic.svg6
-rw-r--r--gtk/icons/scalable/places/network-server-symbolic.svg8
-rw-r--r--gtk/icons/scalable/places/network-workgroup-symbolic.svg7
-rw-r--r--gtk/icons/scalable/places/user-desktop-symbolic.svg8
-rw-r--r--gtk/icons/scalable/places/user-home-symbolic.svg9
-rw-r--r--gtk/icons/scalable/places/user-trash-symbolic.svg4
-rw-r--r--gtk/icons/scalable/status/audio-volume-high-symbolic.svg9
-rw-r--r--gtk/icons/scalable/status/audio-volume-low-symbolic.svg9
-rw-r--r--gtk/icons/scalable/status/audio-volume-medium-symbolic.svg9
-rw-r--r--gtk/icons/scalable/status/audio-volume-muted-symbolic.svg9
-rw-r--r--gtk/icons/scalable/status/changes-allow-symbolic.svg8
-rw-r--r--gtk/icons/scalable/status/changes-prevent-symbolic.svg8
-rw-r--r--gtk/icons/scalable/status/dialog-error-symbolic.svg4
-rw-r--r--gtk/icons/scalable/status/dialog-password-symbolic.svg8
-rw-r--r--gtk/icons/scalable/status/dialog-warning-symbolic.svg4
-rw-r--r--gtk/icons/scalable/status/media-playlist-repeat-symbolic.svg8
-rw-r--r--gtk/icons/scalable/status/orientation-landscape-inverse-symbolic.svg4
-rw-r--r--gtk/icons/scalable/status/orientation-landscape-symbolic.svg4
-rw-r--r--gtk/inspector/general.c17
-rw-r--r--gtk/inspector/general.ui25
-rw-r--r--gtk/meson.build33
-rw-r--r--meson.build73
-rw-r--r--meson_options.txt22
-rw-r--r--po-properties/POTFILES.in2
-rw-r--r--po-properties/pt_BR.po3419
-rw-r--r--po-properties/uk.po623
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/pt_BR.po1944
-rw-r--r--po/uk.po452
-rw-r--r--subprojects/pango.wrap2
-rw-r--r--testsuite/css/parser/cross-fade-crash-4101.css3
-rw-r--r--testsuite/css/parser/cross-fade-crash-4101.errors1
-rw-r--r--testsuite/css/parser/cross-fade-crash-4101.ref.css0
-rw-r--r--testsuite/css/parser/meson.build3
-rw-r--r--testsuite/gsk/compare/scale-textures-negative-ngl.node48
-rw-r--r--testsuite/gsk/compare/scale-textures-negative-ngl.pngbin0 -> 265 bytes
-rw-r--r--testsuite/gsk/half-float.c72
-rw-r--r--testsuite/gsk/meson.build4
-rw-r--r--testsuite/gtk/texthistory.c27
-rw-r--r--testsuite/introspection/meson.build3
-rw-r--r--testsuite/reftests/gtk-reftest.c33
258 files changed, 7813 insertions, 7382 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c100755896..8fddbcf284 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -172,6 +172,7 @@ macos:
- meson -Dx11-backend=false
-Dbroadway-backend=true
-Dmacos-backend=true
+ -Dmedia-gstreamer=disabled
-Dintrospection=disabled
-Dcpp_std=c++11
-Dpixman:tests=disabled
diff --git a/.gitlab-ci/test-docker.sh b/.gitlab-ci/test-docker.sh
index ada8edaba6..1df2da094a 100755
--- a/.gitlab-ci/test-docker.sh
+++ b/.gitlab-ci/test-docker.sh
@@ -15,7 +15,7 @@ meson \
-Dx11-backend=true \
-Dwayland-backend=true \
-Dbroadway-backend=true \
- -Dvulkan=yes \
+ -Dvulkan=enabled \
-Dprofiler=true \
--werror \
${EXTRA_MESON_FLAGS:-} \
diff --git a/.gitlab-ci/test-msvc.bat b/.gitlab-ci/test-msvc.bat
index 294e9480df..c6833f0c0e 100644
--- a/.gitlab-ci/test-msvc.bat
+++ b/.gitlab-ci/test-msvc.bat
@@ -6,7 +6,7 @@ call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliar
:: FIXME: make warnings fatal
pip3 install --upgrade --user meson==0.56.2 || goto :error
-meson _build || goto :error
+meson -Dmedia-gstreamer=disabled _build || goto :error
ninja -C _build || goto :error
goto :EOF
diff --git a/NEWS b/NEWS
index cedc38e4ce..9ce51d8e61 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,110 @@
+Overview of Changes in 4.3.2
+============================
+
+* GtkToggleButton:
+ - Fix the actionable implementation
+
+* GtkCheckButton:
+ - Fix the actionable implementation
+ - Cancel activation on when the pointer leaves
+
+* GtkMenuButton:
+ - Make activatable again
+ - Add a way to have an icon + arrow
+
+* GtkColorButton:
+ - Make activatable again
+
+* GtkFontButton:
+ - Make activatable again
+
+* GtkAppChooserButton:
+ - Make activatable again
+
+* GtkColumnView:
+ - Fix double activation
+
+* GtkLabel:
+ - Fix mnemonics without markup
+
+* GtkTreeView:
+ - Clip header buttons
+
+* GtkTextView:
+ - Add api to get the RTL and LTR contexts
+ - Fix some errors in text history grouping
+
+* GtkText:
+ - Don't show placeholder text on top of entry text
+ - Add api to compute the cursor extents
+ - Fix y coordinates for text selection
+
+* GtkFileChooser:
+ - Don't show Trash in the side bar
+
+* GtkPopoverMenu:
+ - Add scrollbars to long menus
+
+* GtkActionMuxer:
+ - Fix propagation of accel changes
+
+* Introspection:
+ - Annotate all filename arguments
+ - Rename GtkMediaStream apis to avoid name collisions
+ - Rename GtkDropTarget properties to avoid name collisions
+ - Make GtkPasswordEntryBuffer introspectable
+
+* Printing:
+ - Remove the Google Cloud Print backend
+
+* Theme:
+ - Sync included icons with the Adwaita icon theme
+
+* GSK:
+ - Avoid overflowing the vertex counter
+ - Handle negative scales correctly in the ngl renderer
+
+* GDK:
+ - Cleanup and simplify OpenGL setup code
+ - Add a GdkDisplay::init_gl vfunc and gdk_display_prepare_gl() api
+ - Require EGL 1.4
+ - Fix EGL + NVidia
+
+* Build:
+ - Enable gstreamer by default
+ - Disable Vulkan by default
+ - Remove the sassc option
+ - Remove options and checks for X11 extensions
+
+* X11:
+ - Stop using XComposite
+ - Remove the Visual cache
+
+* Wayland:
+ - Fix some DND corner cases
+ - Work with version 2 of pointer-gestures-v1
+ - Look for cursor themes in $HOME/.icons
+
+* Windows:
+ - Fix SIGILL on x64 due to popcnt
+ - Fix popup placement
+ - Fix drag icon placement
+ - Clean up HiDPI and WGL support
+ - Default to WGL
+
+* MacOs:
+ - Fix input method support
+ - Register known clipboard types for drop targets
+ - Add initial DND support
+
+* Translation updates:
+ Brazilian Portuguese
+ Portuguese
+ Romanian
+ Turkish
+ Ukrainian
+
+
Overview of Changes in 4.3.1
============================
diff --git a/config.h.meson b/config.h.meson
index 56b215b012..f4f55122ee 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -124,9 +124,6 @@
/* Define to 1 if you have the <unistd.h> header file. */
#mesondefine HAVE_UNISTD_H
-/* Have the XCOMPOSITE X extension */
-#mesondefine HAVE_XCOMPOSITE
-
/* Have the Xcursor library */
#mesondefine HAVE_XCURSOR
diff --git a/demos/gtk-demo/org.gtk.Demo4.appdata.xml.in b/demos/gtk-demo/org.gtk.Demo4.appdata.xml.in
index 7aa94b8bf8..a1a468c407 100644
--- a/demos/gtk-demo/org.gtk.Demo4.appdata.xml.in
+++ b/demos/gtk-demo/org.gtk.Demo4.appdata.xml.in
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
- <id>org.gtk.Demo4.desktop</id>
+ <id>org.gtk.Demo4</id>
+ <launchable type="desktop-id">org.gtk.Demo4.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
- <project_license>LGPL-2.0+</project_license>
+ <project_license>LGPL-2.1-or-later</project_license>
<name>GTK Demo</name>
<summary>Program to demonstrate GTK functions</summary>
<description>
@@ -30,6 +31,7 @@
<translation type="gettext">gtk-4.0</translation>
<update_contact>matthias.clasen_at_gmail.com</update_contact>
<developer_name>Matthias Clasen and others</developer_name>
+ <content_rating type="oars-1.1"/>
<releases>
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
<description>
diff --git a/demos/icon-browser/org.gtk.IconBrowser4.appdata.xml.in b/demos/icon-browser/org.gtk.IconBrowser4.appdata.xml.in
index d5c8bac706..8cfaaa2b49 100644
--- a/demos/icon-browser/org.gtk.IconBrowser4.appdata.xml.in
+++ b/demos/icon-browser/org.gtk.IconBrowser4.appdata.xml.in
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
- <id>org.gtk.IconBrowser4.desktop</id>
+ <id>org.gtk.IconBrowser4</id>
+ <launchable type="desktop-id">org.gtk.IconBrowser4.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
- <project_license>LGPL-2.0+</project_license>
+ <project_license>LGPL-2.1-or-later</project_license>
<name>GTK Icon Browser</name>
<summary>Program to browse themed icons</summary>
<description>
@@ -29,6 +30,7 @@
<translation type="gettext">gtk-4.0</translation>
<update_contact>matthias.clasen_at_gmail.com</update_contact>
<developer_name>Matthias Clasen and others</developer_name>
+ <content_rating type="oars-1.1"/>
<releases>
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
<description>
diff --git a/demos/print-editor/org.gtk.PrintEditor4.appdata.xml b/demos/print-editor/org.gtk.PrintEditor4.appdata.xml
index e0eb6a0727..bdee5bbe67 100644
--- a/demos/print-editor/org.gtk.PrintEditor4.appdata.xml
+++ b/demos/print-editor/org.gtk.PrintEditor4.appdata.xml
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
- <id>org.gtk.PrintEditor4.desktop</id>
+ <id>org.gtk.PrintEditor4</id>
+ <launchable type="desktop-id">org.gtk.PrintEditor4.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
- <project_license>LGPL-2.0+</project_license>
+ <project_license>LGPL-2.1-or-later</project_license>
<name>GTK Print Editor</name>
<summary>Program to demonstrate GTK printing</summary>
<description>
@@ -24,6 +25,7 @@
<translation type="gettext">gtk-4.0</translation>
<update_contact>matthias.clasen_at_gmail.com</update_contact>
<developer_name>Matthias Clasen and others</developer_name>
+ <content_rating type="oars-1.1"/>
<releases>
<release version="3.99.0" date="2020-07-30">
<description>
diff --git a/demos/widget-factory/org.gtk.WidgetFactory4.appdata.xml.in b/demos/widget-factory/org.gtk.WidgetFactory4.appdata.xml.in
index 60e30a7e6b..7f8c4e5617 100644
--- a/demos/widget-factory/org.gtk.WidgetFactory4.appdata.xml.in
+++ b/demos/widget-factory/org.gtk.WidgetFactory4.appdata.xml.in
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
- <id>org.gtk.WidgetFactory4.desktop</id>
+ <id>org.gtk.WidgetFactory4</id>
+ <launchable type="desktop-id">org.gtk.WidgetFactory4.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
- <project_license>LGPL-2.0+</project_license>
+ <project_license>LGPL-2.1-or-later</project_license>
<name>GTK Widget Factory</name>
<summary>Program to demonstrate GTK functions</summary>
<description>
@@ -31,6 +32,7 @@
<translation type="gettext">gtk-4.0</translation>
<update_contact>matthias.clasen_at_gmail.com</update_contact>
<developer_name>Matthias Clasen and others</developer_name>
+ <content_rating type="oars-1.1"/>
<releases>
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
<description>
diff --git a/gdk/gdk.c b/gdk/gdk.c
index b3a569d34d..64823434da 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -127,7 +127,9 @@ static const GdkDebugKey gdk_debug_keys[] = {
{ "gl-legacy", GDK_DEBUG_GL_LEGACY, "Use a legacy OpenGL context" },
{ "gl-gles", GDK_DEBUG_GL_GLES, "Use a GLES OpenGL context" },
{ "gl-debug", GDK_DEBUG_GL_DEBUG, "Insert debugging information in OpenGL" },
+ { "gl-egl", GDK_DEBUG_GL_EGL, "Use EGL on X11 or Windows" },
{ "gl-glx", GDK_DEBUG_GL_GLX, "Use GLX on X11" },
+ { "gl-wgl", GDK_DEBUG_GL_WGL, "Use WGL on Windows" },
{ "vulkan-disable", GDK_DEBUG_VULKAN_DISABLE, "Disable Vulkan support" },
{ "vulkan-validate", GDK_DEBUG_VULKAN_VALIDATE, "Load the Vulkan validation layer" },
{ "default-settings",GDK_DEBUG_DEFAULT_SETTINGS, "Force default values for xsettings" },
diff --git a/gdk/gdkdebug.h b/gdk/gdkdebug.h
index e03b904ce4..4386c220eb 100644
--- a/gdk/gdkdebug.h
+++ b/gdk/gdkdebug.h
@@ -41,10 +41,12 @@ typedef enum {
GDK_DEBUG_GL_LEGACY = 1 << 15,
GDK_DEBUG_GL_GLES = 1 << 16,
GDK_DEBUG_GL_DEBUG = 1 << 17,
- GDK_DEBUG_GL_GLX = 1 << 18,
- GDK_DEBUG_VULKAN_DISABLE = 1 << 19,
- GDK_DEBUG_VULKAN_VALIDATE = 1 << 20,
- GDK_DEBUG_DEFAULT_SETTINGS= 1 << 21
+ GDK_DEBUG_GL_EGL = 1 << 18,
+ GDK_DEBUG_GL_GLX = 1 << 19,
+ GDK_DEBUG_GL_WGL = 1 << 20,
+ GDK_DEBUG_VULKAN_DISABLE = 1 << 21,
+ GDK_DEBUG_VULKAN_VALIDATE = 1 << 22,
+ GDK_DEBUG_DEFAULT_SETTINGS= 1 << 23,
} GdkDebugFlags;
extern guint _gdk_debug_flags;
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
index 690d21f835..5067065b03 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
@@ -77,6 +77,23 @@ enum {
LAST_SIGNAL
};
+typedef struct _GdkDisplayPrivate GdkDisplayPrivate;
+
+struct _GdkDisplayPrivate {
+ /* The base context that all other contexts inherit from.
+ * This context is never exposed to public API and is
+ * allowed to have a %NULL surface.
+ */
+ GdkGLContext *gl_context;
+ GError *gl_error;
+
+ guint rgba : 1;
+ guint composited : 1;
+ guint input_shapes : 1;
+
+ GdkDebugFlags debug_flags;
+};
+
static void gdk_display_dispose (GObject *object);
static void gdk_display_finalize (GObject *object);
@@ -85,7 +102,7 @@ static GdkAppLaunchContext *gdk_display_real_get_app_launch_context (GdkDisplay
static guint signals[LAST_SIGNAL] = { 0 };
-G_DEFINE_TYPE (GdkDisplay, gdk_display, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE (GdkDisplay, gdk_display, G_TYPE_OBJECT)
static void
gdk_display_get_property (GObject *object,
@@ -119,10 +136,14 @@ gdk_display_real_make_default (GdkDisplay *display)
{
}
-static void
-gdk_display_real_opened (GdkDisplay *display)
+static GdkGLContext *
+gdk_display_default_init_gl (GdkDisplay *display,
+ GError **error)
{
- _gdk_display_manager_add_display (gdk_display_manager_get (), display);
+ g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
+ _("The current backend does not support OpenGL"));
+
+ return NULL;
}
static GdkSeat *
@@ -135,6 +156,12 @@ gdk_display_real_get_default_seat (GdkDisplay *display)
}
static void
+gdk_display_real_opened (GdkDisplay *display)
+{
+ _gdk_display_manager_add_display (gdk_display_manager_get (), display);
+}
+
+static void
gdk_display_class_init (GdkDisplayClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
@@ -143,10 +170,11 @@ gdk_display_class_init (GdkDisplayClass *class)
object_class->dispose = gdk_display_dispose;
object_class->get_property = gdk_display_get_property;
- class->get_app_launch_context = gdk_display_real_get_app_launch_context;
- class->opened = gdk_display_real_opened;
class->make_default = gdk_display_real_make_default;
+ class->get_app_launch_context = gdk_display_real_get_app_launch_context;
+ class->init_gl = gdk_display_default_init_gl;
class->get_default_seat = gdk_display_real_get_default_seat;
+ class->opened = gdk_display_real_opened;
/**
* GdkDisplay:composited: (attributes org.gtk.Property.get=gdk_display_is_composited)
@@ -294,6 +322,8 @@ free_device_grabs_foreach (gpointer key,
static void
gdk_display_init (GdkDisplay *display)
{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
display->double_click_time = 250;
display->double_click_distance = 5;
@@ -304,22 +334,26 @@ gdk_display_init (GdkDisplay *display)
g_queue_init (&display->queued_events);
- display->debug_flags = _gdk_debug_flags;
+ priv->debug_flags = _gdk_debug_flags;
- display->composited = TRUE;
- display->rgba = TRUE;
- display->input_shapes = TRUE;
+ priv->composited = TRUE;
+ priv->rgba = TRUE;
+ priv->input_shapes = TRUE;
}
static void
gdk_display_dispose (GObject *object)
{
GdkDisplay *display = GDK_DISPLAY (object);
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
_gdk_display_manager_remove_display (gdk_display_manager_get (), display);
g_queue_clear (&display->queued_events);
+ g_clear_object (&priv->gl_context);
+ g_clear_error (&priv->gl_error);
+
G_OBJECT_CLASS (gdk_display_parent_class)->dispose (object);
}
@@ -998,21 +1032,25 @@ gdk_display_get_primary_clipboard (GdkDisplay *display)
gboolean
gdk_display_supports_input_shapes (GdkDisplay *display)
{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
- return display->input_shapes;
+ return priv->input_shapes;
}
void
gdk_display_set_input_shapes (GdkDisplay *display,
gboolean input_shapes)
{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
g_return_if_fail (GDK_IS_DISPLAY (display));
- if (display->input_shapes == input_shapes)
+ if (priv->input_shapes == input_shapes)
return;
- display->input_shapes = input_shapes;
+ priv->input_shapes = input_shapes;
g_object_notify_by_pspec (G_OBJECT (display), props[PROP_INPUT_SHAPES]);
}
@@ -1157,32 +1195,136 @@ gdk_display_get_keymap (GdkDisplay *display)
return GDK_DISPLAY_GET_CLASS (display)->get_keymap (display);
}
+static void
+gdk_display_init_gl (GdkDisplay *self)
+{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (self);
+ GdkGLContext *context;
+ gint64 before G_GNUC_UNUSED;
+ gint64 before2 G_GNUC_UNUSED;
+
+ before = GDK_PROFILER_CURRENT_TIME;
+
+ if (GDK_DISPLAY_DEBUG_CHECK (self, GL_DISABLE))
+ {
+ g_set_error_literal (&priv->gl_error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("GL support disabled via GDK_DEBUG"));
+ return;
+ }
+
+ context = GDK_DISPLAY_GET_CLASS (self)->init_gl (self, &priv->gl_error);
+ if (context == NULL)
+ return;
+
+ before2 = GDK_PROFILER_CURRENT_TIME;
+
+ if (!gdk_gl_context_realize (context, &priv->gl_error))
+ {
+ g_object_unref (context);
+ return;
+ }
+
+ gdk_profiler_end_mark (before2, "realize OpenGL context", NULL);
+
+ /* Only assign after realize, so GdkGLContext::realize() can use
+ * gdk_display_get_gl_context() == NULL to differentiate between
+ * the display's context and any other context.
+ */
+ priv->gl_context = context;
+
+ gdk_profiler_end_mark (before, "initialize OpenGL", NULL);
+}
+
+/**
+ * gdk_display_prepare_gl:
+ * @self: a `GdkDisplay`
+ * @error: return location for a `GError`
+ *
+ * Checks that OpenGL is available for @self and ensures that it is
+ * properly initialized.
+ * When this fails, an @error will be set describing the error and this
+ * function returns %FALSE.
+ *
+ * Note that even if this function succeeds, creating a `GdkGLContext`
+ * may still fail.
+ *
+ * This function is idempotent. Calling it multiple times will just
+ * return the same value or error.
+ *
+ * You never need to call this function, GDK will call it automatically
+ * as needed. But you can use it as a check when setting up code that
+ * might make use of OpenGL.
+ *
+ * Returns: %TRUE if the display supports OpenGL
+ *
+ * Since: 4.4
+ **/
+gboolean
+gdk_display_prepare_gl (GdkDisplay *self,
+ GError **error)
+{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (self);
+
+ g_return_val_if_fail (GDK_IS_DISPLAY (self), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ for (;;)
+ {
+ if (priv->gl_context)
+ return TRUE;
+
+ if (priv->gl_error != NULL)
+ {
+ if (error)
+ *error = g_error_copy (priv->gl_error);
+
+
+ return FALSE;
+ }
+
+ gdk_display_init_gl (self);
+
+ /* try again */
+ }
+}
+
/*< private >
- * gdk_display_make_gl_context_current:
- * @display: a `GdkDisplay`
- * @context: (optional): a `GdkGLContext`
+ * gdk_display_get_gl_context:
+ * @self: the `GdkDisplay`
+ *
+ * Gets the GL context returned from [vfunc@Gdk.Display.init_gl]
+ * previously.
*
- * Makes the given @context the current GL context, or unsets
- * the current GL context if @context is %NULL.
+ * If that function has not been called yet or did fail, %NULL is
+ * returned.
+ * Call [method@Gdk.Display.prepare_gl] to avoid this.
+ *
+ * Returns: The `GdkGLContext`
*/
-gboolean
-gdk_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context)
+GdkGLContext *
+gdk_display_get_gl_context (GdkDisplay *self)
{
- return GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current (display, context);
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (self);
+
+ return priv->gl_context;
}
GdkDebugFlags
gdk_display_get_debug_flags (GdkDisplay *display)
{
- return display ? display->debug_flags : _gdk_debug_flags;
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
+ return display ? priv->debug_flags : _gdk_debug_flags;
}
void
gdk_display_set_debug_flags (GdkDisplay *display,
GdkDebugFlags flags)
{
- display->debug_flags = flags;
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
+ priv->debug_flags = flags;
}
/**
@@ -1207,21 +1349,25 @@ gdk_display_set_debug_flags (GdkDisplay *display,
gboolean
gdk_display_is_composited (GdkDisplay *display)
{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
- return display->composited;
+ return priv->composited;
}
void
gdk_display_set_composited (GdkDisplay *display,
gboolean composited)
{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
g_return_if_fail (GDK_IS_DISPLAY (display));
- if (display->composited == composited)
+ if (priv->composited == composited)
return;
- display->composited = composited;
+ priv->composited = composited;
g_object_notify_by_pspec (G_OBJECT (display), props[PROP_COMPOSITED]);
}
@@ -1248,21 +1394,25 @@ gdk_display_set_composited (GdkDisplay *display,
gboolean
gdk_display_is_rgba (GdkDisplay *display)
{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
- return display->rgba;
+ return priv->rgba;
}
void
gdk_display_set_rgba (GdkDisplay *display,
gboolean rgba)
{
+ GdkDisplayPrivate *priv = gdk_display_get_instance_private (display);
+
g_return_if_fail (GDK_IS_DISPLAY (display));
- if (display->rgba == rgba)
+ if (priv->rgba == rgba)
return;
- display->rgba = rgba;
+ priv->rgba = rgba;
g_object_notify_by_pspec (G_OBJECT (display), props[PROP_RGBA]);
}
diff --git a/gdk/gdkdisplay.h b/gdk/gdkdisplay.h
index 97d8e7eee6..9fabac6b50 100644
--- a/gdk/gdkdisplay.h
+++ b/gdk/gdkdisplay.h
@@ -68,6 +68,10 @@ gboolean gdk_display_is_rgba (GdkDisplay *display);
GDK_AVAILABLE_IN_ALL
gboolean gdk_display_supports_input_shapes (GdkDisplay *display);
+GDK_AVAILABLE_IN_4_4
+gboolean gdk_display_prepare_gl (GdkDisplay *self,
+ GError **error);
+
GDK_AVAILABLE_IN_ALL
GdkDisplay *gdk_display_get_default (void);
diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h
index be4a0901ca..a85b275db7 100644
--- a/gdk/gdkdisplayprivate.h
+++ b/gdk/gdkdisplayprivate.h
@@ -102,11 +102,6 @@ struct _GdkDisplay
guint vulkan_refcount;
#endif /* GDK_RENDERING_VULKAN */
- guint rgba : 1;
- guint composited : 1;
- guint input_shapes : 1;
-
- GdkDebugFlags debug_flags;
GList *seats;
};
@@ -145,8 +140,8 @@ struct _GdkDisplayClass
GdkKeymap * (*get_keymap) (GdkDisplay *display);
- gboolean (*make_gl_context_current) (GdkDisplay *display,
- GdkGLContext *context);
+ GdkGLContext * (*init_gl) (GdkDisplay *display,
+ GError **error);
GdkSeat * (*get_default_seat) (GdkDisplay *display);
@@ -211,8 +206,7 @@ GdkSurface * gdk_display_create_surface (GdkDisplay *display
int width,
int height);
-gboolean gdk_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context);
+GdkGLContext * gdk_display_get_gl_context (GdkDisplay *display);
void gdk_display_set_rgba (GdkDisplay *display,
gboolean rgba);
diff --git a/gdk/gdkdrawcontext.c b/gdk/gdkdrawcontext.c
index d377c227a2..d1c5cd0960 100644
--- a/gdk/gdkdrawcontext.c
+++ b/gdk/gdkdrawcontext.c
@@ -43,6 +43,7 @@
typedef struct _GdkDrawContextPrivate GdkDrawContextPrivate;
struct _GdkDrawContextPrivate {
+ GdkDisplay *display;
GdkSurface *surface;
cairo_region_t *frame_region;
@@ -77,6 +78,7 @@ gdk_draw_context_dispose (GObject *gobject)
priv->surface->draw_contexts = g_slist_remove (priv->surface->draw_contexts, context);
g_clear_object (&priv->surface);
}
+ g_clear_object (&priv->display);
G_OBJECT_CLASS (gdk_draw_context_parent_class)->dispose (gobject);
}
@@ -92,10 +94,31 @@ gdk_draw_context_set_property (GObject *gobject,
switch (prop_id)
{
+ case PROP_DISPLAY:
+ if (priv->display != NULL)
+ {
+ g_assert (g_value_get_object (value) == NULL);
+ }
+ else
+ {
+ priv->display = g_value_dup_object (value);
+ }
+ break;
+
case PROP_SURFACE:
priv->surface = g_value_dup_object (value);
- g_assert (priv->surface != NULL);
- priv->surface->draw_contexts = g_slist_prepend (priv->surface->draw_contexts, context);
+ if (priv->surface)
+ {
+ priv->surface->draw_contexts = g_slist_prepend (priv->surface->draw_contexts, context);
+ if (priv->display)
+ {
+ g_assert (priv->display == gdk_surface_get_display (priv->surface));
+ }
+ else
+ {
+ priv->display = g_object_ref (gdk_surface_get_display (priv->surface));
+ }
+ }
break;
default:
@@ -148,7 +171,8 @@ gdk_draw_context_class_init (GdkDrawContextClass *klass)
P_("Display"),
P_("The GDK display used to create the context"),
GDK_TYPE_DISPLAY,
- G_PARAM_READABLE |
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
/**
@@ -228,7 +252,7 @@ gdk_draw_context_get_display (GdkDrawContext *context)
g_return_val_if_fail (GDK_IS_DRAW_CONTEXT (context), NULL);
- return priv->surface ? gdk_surface_get_display (priv->surface) : NULL;
+ return priv->display;
}
/**
diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c
index a82c7e3bc4..5c0193c0ec 100644
--- a/gdk/gdkglcontext.c
+++ b/gdk/gdkglcontext.c
@@ -89,8 +89,6 @@
#include <epoxy/gl.h>
typedef struct {
- GdkGLContext *shared_context;
-
int major;
int minor;
int gl_version;
@@ -127,7 +125,28 @@ G_DEFINE_QUARK (gdk-gl-error-quark, gdk_gl_error)
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GdkGLContext, gdk_gl_context, GDK_TYPE_DRAW_CONTEXT)
-static GPrivate thread_current_context = G_PRIVATE_INIT (g_object_unref);
+typedef struct _MaskedContext MaskedContext;
+
+static inline MaskedContext *
+mask_context (GdkGLContext *context,
+ gboolean surfaceless)
+{
+ return (MaskedContext *) GSIZE_TO_POINTER (GPOINTER_TO_SIZE (context) | (surfaceless ? 1 : 0));
+}
+
+static inline GdkGLContext *
+unmask_context (MaskedContext *mask)
+{
+ return GDK_GL_CONTEXT (GSIZE_TO_POINTER (GPOINTER_TO_SIZE (mask) & ~(gsize) 1));
+}
+
+static void
+unref_unmasked (gpointer data)
+{
+ g_object_unref (unmask_context (data));
+}
+
+static GPrivate thread_current_context = G_PRIVATE_INIT (unref_unmasked);
static void
gdk_gl_context_clear_old_updated_area (GdkGLContext *context)
@@ -144,17 +163,14 @@ static void
gdk_gl_context_dispose (GObject *gobject)
{
GdkGLContext *context = GDK_GL_CONTEXT (gobject);
- GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
- GdkGLContext *current;
+ MaskedContext *current;
gdk_gl_context_clear_old_updated_area (context);
current = g_private_get (&thread_current_context);
- if (current == context)
+ if (unmask_context (current) == context)
g_private_replace (&thread_current_context, NULL);
- g_clear_object (&priv->shared_context);
-
G_OBJECT_CLASS (gdk_gl_context_parent_class)->dispose (gobject);
}
@@ -174,17 +190,10 @@ gdk_gl_context_set_property (GObject *gobject,
const GValue *value,
GParamSpec *pspec)
{
- GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private ((GdkGLContext *) gobject);
-
switch (prop_id)
{
case PROP_SHARED_CONTEXT:
- {
- GdkGLContext *context = g_value_get_object (value);
-
- if (context != NULL)
- priv->shared_context = g_object_ref (context);
- }
+ g_assert (g_value_get_object (value) == NULL);
break;
default:
@@ -198,12 +207,10 @@ gdk_gl_context_get_property (GObject *gobject,
GValue *value,
GParamSpec *pspec)
{
- GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private ((GdkGLContext *) gobject);
-
switch (prop_id)
{
case PROP_SHARED_CONTEXT:
- g_value_set_object (value, priv->shared_context);
+ g_value_set_object (value, NULL);
break;
default:
@@ -333,23 +340,27 @@ gdk_gl_context_real_get_damage (GdkGLContext *context)
});
}
+static gboolean
+gdk_gl_context_real_is_shared (GdkGLContext *self,
+ GdkGLContext *other)
+{
+ if (gdk_draw_context_get_display (GDK_DRAW_CONTEXT (self)) != gdk_draw_context_get_display (GDK_DRAW_CONTEXT (other)))
+ return FALSE;
+
+ /* XXX: Should we check es or legacy here? */
+
+ return TRUE;
+}
+
static void
gdk_gl_context_real_begin_frame (GdkDrawContext *draw_context,
cairo_region_t *region)
{
GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
GdkSurface *surface;
- GdkGLContext *shared;
cairo_region_t *damage;
int ww, wh;
- shared = gdk_gl_context_get_shared_context (context);
- if (shared)
- {
- GDK_DRAW_CONTEXT_GET_CLASS (GDK_DRAW_CONTEXT (shared))->begin_frame (GDK_DRAW_CONTEXT (shared), region);
- return;
- }
-
damage = GDK_GL_CONTEXT_GET_CLASS (context)->get_damage (context);
if (context->old_updated_area[1])
@@ -379,15 +390,6 @@ static void
gdk_gl_context_real_end_frame (GdkDrawContext *draw_context,
cairo_region_t *painted)
{
- GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
- GdkGLContext *shared;
-
- shared = gdk_gl_context_get_shared_context (context);
- if (shared)
- {
- GDK_DRAW_CONTEXT_GET_CLASS (GDK_DRAW_CONTEXT (shared))->end_frame (GDK_DRAW_CONTEXT (shared), painted);
- return;
- }
}
static void
@@ -406,6 +408,7 @@ gdk_gl_context_class_init (GdkGLContextClass *klass)
klass->realize = gdk_gl_context_real_realize;
klass->get_damage = gdk_gl_context_real_get_damage;
+ klass->is_shared = gdk_gl_context_real_is_shared;
draw_context_class->begin_frame = gdk_gl_context_real_begin_frame;
draw_context_class->end_frame = gdk_gl_context_real_end_frame;
@@ -414,7 +417,13 @@ gdk_gl_context_class_init (GdkGLContextClass *klass)
/**
* GdkGLContext:shared-context: (attributes org.gtk.Property.get=gdk_gl_context_get_shared_context)
*
- * The `GdkGLContext` that this context is sharing data with, or %NULL
+ * Always %NULL
+ *
+ * As many contexts can share data now and no single shared context exists
+ * anymore, this function has been deprecated and now always returns %NULL.
+ *
+ * Deprecated: 4.4: Use [method@Gdk.GLContext.is_shared] to check if contexts
+ * can be shared.
*/
obj_pspecs[PROP_SHARED_CONTEXT] =
g_param_spec_object ("shared-context",
@@ -423,7 +432,8 @@ gdk_gl_context_class_init (GdkGLContextClass *klass)
GDK_TYPE_GL_CONTEXT,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_STRINGS);
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_DEPRECATED);
gobject_class->set_property = gdk_gl_context_set_property;
gobject_class->get_property = gdk_gl_context_get_property;
@@ -441,6 +451,21 @@ gdk_gl_context_init (GdkGLContext *self)
priv->use_es = -1;
}
+/* Must have called gdk_display_prepare_gl() before */
+GdkGLContext *
+gdk_gl_context_new_for_surface (GdkSurface *surface)
+{
+ GdkDisplay *display = gdk_surface_get_display (surface);
+ GdkGLContext *shared = gdk_display_get_gl_context (display);
+
+ /* assert gdk_display_prepare_gl() had been called */
+ g_assert (shared);
+
+ return g_object_new (G_OBJECT_TYPE (shared),
+ "surface", surface,
+ NULL);
+}
+
GdkGLContextPaintData *
gdk_gl_context_get_paint_data (GdkGLContext *context)
{
@@ -813,6 +838,42 @@ gdk_gl_context_set_is_legacy (GdkGLContext *context,
}
/**
+ * gdk_gl_context_is_shared:
+ * @self: a `GdkGLContext`
+ * @other: the `GdkGLContext` that should be compatible with @self
+ *
+ * Checks if the two GL contexts can share resources.
+ *
+ * When they can, the texture IDs from @other can be used in @self. This
+ * is particularly useful when passing `GdkGLTexture` objects between
+ * different contexts.
+ *
+ * Contexts created for the same display with the same properties will
+ * always be compatible, even if they are created for different surfaces.
+ * For other contexts it depends on the GL backend.
+ *
+ * Both contexts must be realized for this check to succeed. If either one
+ * is not, this function will return %FALSE.
+ *
+ * Returns: %TRUE if the two GL contexts are compatible.
+ */
+gboolean
+gdk_gl_context_is_shared (GdkGLContext *self,
+ GdkGLContext *other)
+{
+ GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (self);
+ GdkGLContextPrivate *priv_other = gdk_gl_context_get_instance_private (other);
+
+ g_return_val_if_fail (GDK_IS_GL_CONTEXT (self), FALSE);
+ g_return_val_if_fail (GDK_IS_GL_CONTEXT (other), FALSE);
+
+ if (!priv->realized || !priv_other->realized)
+ return FALSE;
+
+ return GDK_GL_CONTEXT_GET_CLASS (self)->is_shared (self, other);
+}
+
+/**
* gdk_gl_context_set_use_es:
* @context: a `GdkGLContext`
* @use_es: whether the context should use OpenGL ES instead of OpenGL,
@@ -1092,12 +1153,16 @@ void
gdk_gl_context_make_current (GdkGLContext *context)
{
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
- GdkGLContext *current;
+ MaskedContext *current, *masked_context;
+ gboolean surfaceless;
g_return_if_fail (GDK_IS_GL_CONTEXT (context));
+ surfaceless = !gdk_draw_context_is_in_frame (GDK_DRAW_CONTEXT (context));
+ masked_context = mask_context (context, surfaceless);
+
current = g_private_get (&thread_current_context);
- if (current == context)
+ if (current == masked_context)
return;
/* we need to realize the GdkGLContext if it wasn't explicitly realized */
@@ -1114,11 +1179,15 @@ gdk_gl_context_make_current (GdkGLContext *context)
}
}
- if (gdk_display_make_gl_context_current (gdk_draw_context_get_display (GDK_DRAW_CONTEXT (context)), context))
+ if (!GDK_GL_CONTEXT_GET_CLASS (context)->make_current (context, surfaceless))
{
- g_private_replace (&thread_current_context, g_object_ref (context));
- gdk_gl_context_check_extensions (context);
+ g_warning ("gdk_gl_context_make_current() failed");
+ return;
}
+
+ g_object_ref (context);
+ g_private_replace (&thread_current_context, masked_context);
+ gdk_gl_context_check_extensions (context);
}
/**
@@ -1157,18 +1226,22 @@ gdk_gl_context_get_surface (GdkGLContext *context)
* gdk_gl_context_get_shared_context: (attributes org.gtk.Method.get_property=shared-context)
* @context: a `GdkGLContext`
*
- * Retrieves the `GdkGLContext` that this @context share data with.
+ * Used to retrieves the `GdkGLContext` that this @context share data with.
+ *
+ * As many contexts can share data now and no single shared context exists
+ * anymore, this function has been deprecated and now always returns %NULL.
*
- * Returns: (nullable) (transfer none): a `GdkGLContext`
+ * Returns: (nullable) (transfer none): %NULL
+ *
+ * Deprecated: 4.4: Use [method@Gdk.GLContext.is_shared] to check if contexts
+ * can be shared.
*/
GdkGLContext *
gdk_gl_context_get_shared_context (GdkGLContext *context)
{
- GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
-
g_return_val_if_fail (GDK_IS_GL_CONTEXT (context), NULL);
- return priv->shared_context;
+ return NULL;
}
/**
@@ -1208,12 +1281,14 @@ gdk_gl_context_get_version (GdkGLContext *context,
void
gdk_gl_context_clear_current (void)
{
- GdkGLContext *current;
+ MaskedContext *current;
current = g_private_get (&thread_current_context);
if (current != NULL)
{
- if (gdk_display_make_gl_context_current (gdk_draw_context_get_display (GDK_DRAW_CONTEXT (current)), NULL))
+ GdkGLContext *context = unmask_context (current);
+
+ if (GDK_GL_CONTEXT_GET_CLASS (context)->clear_current (context))
g_private_replace (&thread_current_context, NULL);
}
}
@@ -1228,11 +1303,11 @@ gdk_gl_context_clear_current (void)
GdkGLContext *
gdk_gl_context_get_current (void)
{
- GdkGLContext *current;
+ MaskedContext *current;
current = g_private_get (&thread_current_context);
- return current;
+ return unmask_context (current);
}
gboolean
diff --git a/gdk/gdkglcontext.h b/gdk/gdkglcontext.h
index 10bac82e9b..dab3319429 100644
--- a/gdk/gdkglcontext.h
+++ b/gdk/gdkglcontext.h
@@ -45,8 +45,8 @@ GType gdk_gl_context_get_type (void) G_GNUC_CONST;
GDK_AVAILABLE_IN_ALL
GdkDisplay * gdk_gl_context_get_display (GdkGLContext *context);
GDK_AVAILABLE_IN_ALL
-GdkSurface * gdk_gl_context_get_surface (GdkGLContext *context);
-GDK_AVAILABLE_IN_ALL
+GdkSurface * gdk_gl_context_get_surface (GdkGLContext *context);
+GDK_DEPRECATED_IN_4_4_FOR(gdk_gl_context_is_shared)
GdkGLContext * gdk_gl_context_get_shared_context (GdkGLContext *context);
GDK_AVAILABLE_IN_ALL
void gdk_gl_context_get_version (GdkGLContext *context,
@@ -54,6 +54,9 @@ void gdk_gl_context_get_version (GdkGLContext *
int *minor);
GDK_AVAILABLE_IN_ALL
gboolean gdk_gl_context_is_legacy (GdkGLContext *context);
+GDK_AVAILABLE_IN_4_4
+gboolean gdk_gl_context_is_shared (GdkGLContext *self,
+ GdkGLContext *other);
GDK_AVAILABLE_IN_ALL
void gdk_gl_context_set_required_version (GdkGLContext *context,
diff --git a/gdk/gdkglcontextprivate.h b/gdk/gdkglcontextprivate.h
index 07310eebfa..c8afedda02 100644
--- a/gdk/gdkglcontextprivate.h
+++ b/gdk/gdkglcontextprivate.h
@@ -27,6 +27,13 @@
G_BEGIN_DECLS
+/* Version requirements for EGL contexts.
+ *
+ * If you add support for EGL to your backend, please require this.
+ */
+#define GDK_EGL_MIN_VERSION_MAJOR (1)
+#define GDK_EGL_MIN_VERSION_MINOR (4)
+
#define GDK_GL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_GL_CONTEXT, GdkGLContextClass))
#define GDK_IS_GL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_GL_CONTEXT))
#define GDK_GL_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_GL_CONTEXT, GdkGLContextClass))
@@ -45,10 +52,16 @@ struct _GdkGLContextClass
{
GdkDrawContextClass parent_class;
- gboolean (* realize) (GdkGLContext *context,
- GError **error);
+ gboolean (* realize) (GdkGLContext *context,
+ GError **error);
- cairo_region_t * (* get_damage) (GdkGLContext *context);
+ gboolean (* make_current) (GdkGLContext *context,
+ gboolean surfaceless);
+ gboolean (* clear_current) (GdkGLContext *context);
+ cairo_region_t * (* get_damage) (GdkGLContext *context);
+
+ gboolean (* is_shared) (GdkGLContext *self,
+ GdkGLContext *other);
};
typedef struct {
@@ -73,6 +86,8 @@ typedef struct {
guint use_es : 1;
} GdkGLContextPaintData;
+GdkGLContext * gdk_gl_context_new_for_surface (GdkSurface *surface);
+
void gdk_gl_context_set_is_legacy (GdkGLContext *context,
gboolean is_legacy);
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index 8f562f7d1c..3f2b5189ff 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -1066,86 +1066,22 @@ gdk_surface_get_mapped (GdkSurface *surface)
}
GdkGLContext *
-gdk_surface_get_shared_data_gl_context (GdkSurface *surface)
-{
- static int in_shared_data_creation;
- GdkDisplay *display;
- GdkGLContext *context;
-
- if (in_shared_data_creation)
- return NULL;
-
- in_shared_data_creation = 1;
-
- display = gdk_surface_get_display (surface);
- context = (GdkGLContext *)g_object_get_data (G_OBJECT (display), "gdk-gl-shared-data-context");
- if (context == NULL)
- {
- GError *error = NULL;
- context = GDK_SURFACE_GET_CLASS (surface)->create_gl_context (surface, FALSE, NULL, &error);
- if (context == NULL)
- {
- g_warning ("Failed to create shared context: %s", error->message);
- g_clear_error (&error);
- }
-
- gdk_gl_context_realize (context, &error);
- if (context == NULL)
- {
- g_warning ("Failed to realize shared context: %s", error->message);
- g_clear_error (&error);
- }
-
-
- g_object_set_data (G_OBJECT (display), "gdk-gl-shared-data-context", context);
- }
-
- in_shared_data_creation = 0;
-
- return context;
-}
-
-GdkGLContext *
gdk_surface_get_paint_gl_context (GdkSurface *surface,
- GError **error)
+ GError **error)
{
- GError *internal_error = NULL;
-
- if (GDK_DISPLAY_DEBUG_CHECK (surface->display, GL_DISABLE))
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- _("GL support disabled via GDK_DEBUG"));
- return NULL;
- }
+ if (!gdk_display_prepare_gl (surface->display, error))
+ return NULL;
if (surface->gl_paint_context == NULL)
{
- GdkSurfaceClass *class = GDK_SURFACE_GET_CLASS (surface);
-
- if (class->create_gl_context == NULL)
- {
- g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
- _("The current backend does not support OpenGL"));
- return NULL;
- }
-
- surface->gl_paint_context =
- class->create_gl_context (surface, TRUE, NULL, &internal_error);
- }
-
- if (internal_error != NULL)
- {
- g_propagate_error (error, internal_error);
- g_clear_object (&(surface->gl_paint_context));
- return NULL;
+ surface->gl_paint_context = gdk_surface_create_gl_context (surface, error);
+ if (surface->gl_paint_context == NULL)
+ return NULL;
}
- gdk_gl_context_realize (surface->gl_paint_context, &internal_error);
- if (internal_error != NULL)
+ if (!gdk_gl_context_realize (surface->gl_paint_context, error))
{
- g_propagate_error (error, internal_error);
- g_clear_object (&(surface->gl_paint_context));
+ g_clear_object (&surface->gl_paint_context);
return NULL;
}
@@ -1170,19 +1106,13 @@ GdkGLContext *
gdk_surface_create_gl_context (GdkSurface *surface,
GError **error)
{
- GdkGLContext *paint_context;
-
g_return_val_if_fail (GDK_IS_SURFACE (surface), NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
- paint_context = gdk_surface_get_paint_gl_context (surface, error);
- if (paint_context == NULL)
+ if (!gdk_display_prepare_gl (surface->display, error))
return NULL;
- return GDK_SURFACE_GET_CLASS (surface)->create_gl_context (surface,
- FALSE,
- paint_context,
- error);
+ return gdk_gl_context_new_for_surface (surface);
}
/**
diff --git a/gdk/gdksurfaceprivate.h b/gdk/gdksurfaceprivate.h
index 90f5bcba2d..3ab692e19c 100644
--- a/gdk/gdksurfaceprivate.h
+++ b/gdk/gdksurfaceprivate.h
@@ -160,10 +160,6 @@ struct _GdkSurfaceClass
void (* set_opaque_region) (GdkSurface *surface,
cairo_region_t *region);
- GdkGLContext *(*create_gl_context) (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error);
void (* request_layout) (GdkSurface *surface);
gboolean (* compute_size) (GdkSurface *surface);
};
@@ -266,7 +262,6 @@ void _gdk_surface_update_size (GdkSurface *surface);
GdkGLContext * gdk_surface_get_paint_gl_context (GdkSurface *surface,
GError **error);
-GdkGLContext * gdk_surface_get_shared_data_gl_context (GdkSurface *surface);
gboolean gdk_surface_handle_event (GdkEvent *event);
GdkSeat * gdk_surface_get_seat_from_event (GdkSurface *surface,
diff --git a/gdk/macos/gdkmacosdisplay.c b/gdk/macos/gdkmacosdisplay.c
index 20041ac076..450ad2434d 100644
--- a/gdk/macos/gdkmacosdisplay.c
+++ b/gdk/macos/gdkmacosdisplay.c
@@ -637,17 +637,13 @@ gdk_macos_display_load_clipboard (GdkMacosDisplay *self)
GDK_DISPLAY (self)->clipboard = _gdk_macos_clipboard_new (self);
}
-static gboolean
-gdk_macos_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *gl_context)
+static GdkGLContext *
+gdk_macos_display_init_gl (GdkDisplay *display,
+ GError **error)
{
- g_assert (GDK_IS_MACOS_DISPLAY (display));
- g_assert (!gl_context || GDK_IS_MACOS_GL_CONTEXT (gl_context));
-
- if (gl_context == NULL)
- return FALSE;
-
- return _gdk_macos_gl_context_make_current (GDK_MACOS_GL_CONTEXT (gl_context));
+ return g_object_new (GDK_TYPE_MACOS_GL_CONTEXT,
+ "display", display,
+ NULL);
}
static void
@@ -695,7 +691,7 @@ gdk_macos_display_class_init (GdkMacosDisplayClass *klass)
display_class->get_name = gdk_macos_display_get_name;
display_class->get_setting = gdk_macos_display_get_setting;
display_class->has_pending = gdk_macos_display_has_pending;
- display_class->make_gl_context_current = gdk_macos_display_make_gl_context_current;
+ display_class->init_gl = gdk_macos_display_init_gl;
display_class->notify_startup_complete = gdk_macos_display_notify_startup_complete;
display_class->queue_events = gdk_macos_display_queue_events;
display_class->sync = gdk_macos_display_sync;
diff --git a/gdk/macos/gdkmacosglcontext-private.h b/gdk/macos/gdkmacosglcontext-private.h
index 97d209b6f7..533888cd2c 100644
--- a/gdk/macos/gdkmacosglcontext-private.h
+++ b/gdk/macos/gdkmacosglcontext-private.h
@@ -19,12 +19,14 @@
#ifndef __GDK_MACOS_GL_CONTEXT_PRIVATE_H__
#define __GDK_MACOS_GL_CONTEXT_PRIVATE_H__
+#include "gdkmacosglcontext.h"
+
#include "gdkglcontextprivate.h"
#include "gdkdisplayprivate.h"
#include "gdksurface.h"
#include "gdkinternals.h"
-#include "gdkmacosglcontext.h"
+#include "gdkmacosdisplay.h"
#include "gdkmacossurface.h"
#import <OpenGL/OpenGL.h>
@@ -55,11 +57,6 @@ struct _GdkMacosGLContextClass
GdkGLContextClass parent_class;
};
-GdkGLContext *_gdk_macos_gl_context_new (GdkMacosSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error);
-gboolean _gdk_macos_gl_context_make_current (GdkMacosGLContext *self);
G_END_DECLS
diff --git a/gdk/macos/gdkmacosglcontext.c b/gdk/macos/gdkmacosglcontext.c
index e4ef4abcb1..8e79f7688f 100644
--- a/gdk/macos/gdkmacosglcontext.c
+++ b/gdk/macos/gdkmacosglcontext.c
@@ -170,12 +170,12 @@ gdk_macos_gl_context_real_realize (GdkGLContext *context,
{
GdkMacosGLContext *self = (GdkMacosGLContext *)context;
GdkSurface *surface;
+ GdkDisplay *display;
NSOpenGLContext *shared_gl_context = nil;
NSOpenGLContext *gl_context;
NSOpenGLPixelFormat *pixelFormat;
CGLContextObj cgl_context;
GdkGLContext *shared;
- GdkGLContext *shared_data;
NSOpenGLContext *existing;
GLint sync_to_framerate = 1;
GLint validate = 0;
@@ -192,21 +192,16 @@ gdk_macos_gl_context_real_realize (GdkGLContext *context,
gdk_gl_context_get_required_version (context, &major, &minor);
surface = gdk_draw_context_get_surface (GDK_DRAW_CONTEXT (context));
- shared = gdk_gl_context_get_shared_context (context);
- shared_data = gdk_surface_get_shared_data_gl_context (surface);
+ display = gdk_gl_context_get_display (context);
+ shared = gdk_display_get_gl_context (display);
if (shared != NULL)
{
if (!(shared_gl_context = get_ns_open_gl_context (GDK_MACOS_GL_CONTEXT (shared), error)))
return FALSE;
}
- else if (shared_data != NULL)
- {
- if (!(shared_gl_context = get_ns_open_gl_context (GDK_MACOS_GL_CONTEXT (shared_data), error)))
- return FALSE;
- }
- GDK_DISPLAY_NOTE (gdk_draw_context_get_display (GDK_DRAW_CONTEXT (context)),
+ GDK_DISPLAY_NOTE (display,
OPENGL,
g_message ("Creating NSOpenGLContext (version %d.%d)",
major, minor));
@@ -253,7 +248,7 @@ gdk_macos_gl_context_real_realize (GdkGLContext *context,
GLint renderer_id = 0;
[gl_context getValues:&renderer_id forParameter:NSOpenGLContextParameterCurrentRendererID];
- GDK_DISPLAY_NOTE (gdk_draw_context_get_display (GDK_DRAW_CONTEXT (context)),
+ GDK_DISPLAY_NOTE (display,
OPENGL,
g_message ("Created NSOpenGLContext[%p] using %s",
gl_context,
@@ -315,9 +310,7 @@ gdk_macos_gl_context_begin_frame (GdkDrawContext *context,
* want to replace our damage region for the next frame (to avoid
* doing it multiple times).
*/
- if (!self->is_attached &&
- gdk_gl_context_get_shared_context (GDK_GL_CONTEXT (context)))
- ensure_gl_view (self);
+ ensure_gl_view (self);
if (self->needs_resize)
{
@@ -410,6 +403,57 @@ gdk_macos_gl_context_surface_resized (GdkDrawContext *draw_context)
g_clear_pointer (&self->damage, cairo_region_destroy);
}
+static gboolean
+gdk_macos_gl_context_clear_current (GdkGLContext *context)
+{
+ GdkMacosGLContext *self = GDK_MACOS_GL_CONTEXT (context);
+ NSOpenGLContext *current;
+
+ g_return_val_if_fail (GDK_IS_MACOS_GL_CONTEXT (self), FALSE);
+
+ current = [NSOpenGLContext currentContext];
+
+ if (self->gl_context == current)
+ {
+ /* The OpenGL mac programming guide suggests that glFlush() is called
+ * before switching current contexts to ensure that the drawing commands
+ * are submitted.
+ */
+ if (current != NULL)
+ glFlush ();
+
+ [NSOpenGLContext clearCurrentContext];
+ }
+
+ return TRUE;
+}
+
+static gboolean
+gdk_macos_gl_context_make_current (GdkGLContext *context,
+ gboolean surfaceless)
+{
+ GdkMacosGLContext *self = GDK_MACOS_GL_CONTEXT (context);
+ NSOpenGLContext *current;
+
+ g_return_val_if_fail (GDK_IS_MACOS_GL_CONTEXT (self), FALSE);
+
+ current = [NSOpenGLContext currentContext];
+
+ if (self->gl_context != current)
+ {
+ /* The OpenGL mac programming guide suggests that glFlush() is called
+ * before switching current contexts to ensure that the drawing commands
+ * are submitted.
+ */
+ if (current != NULL)
+ glFlush ();
+
+ [self->gl_context makeCurrentContext];
+ }
+
+ return TRUE;
+}
+
static cairo_region_t *
gdk_macos_gl_context_get_damage (GdkGLContext *context)
{
@@ -478,52 +522,4 @@ gdk_macos_gl_context_init (GdkMacosGLContext *self)
{
}
-GdkGLContext *
-_gdk_macos_gl_context_new (GdkMacosSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error)
-{
- GdkMacosGLContext *context;
-
- g_return_val_if_fail (GDK_IS_MACOS_SURFACE (surface), NULL);
- g_return_val_if_fail (!share || GDK_IS_MACOS_GL_CONTEXT (share), NULL);
-
- context = g_object_new (GDK_TYPE_MACOS_GL_CONTEXT,
- "surface", surface,
- "shared-context", share,
- NULL);
-
- context->is_attached = !!attached;
-
- return GDK_GL_CONTEXT (context);
-}
-
-gboolean
-_gdk_macos_gl_context_make_current (GdkMacosGLContext *self)
-{
- NSOpenGLContext *current;
-
- g_return_val_if_fail (GDK_IS_MACOS_GL_CONTEXT (self), FALSE);
-
- if (self->gl_context == NULL)
- return FALSE;
-
- current = [NSOpenGLContext currentContext];
-
- if (self->gl_context != current)
- {
- /* The OpenGL mac programming guide suggests that glFlush() is called
- * before switching current contexts to ensure that the drawing commands
- * are submitted.
- */
- if (current != NULL)
- glFlush ();
-
- [self->gl_context makeCurrentContext];
- }
-
- return TRUE;
-}
-
G_GNUC_END_IGNORE_DEPRECATIONS
diff --git a/gdk/macos/gdkmacossurface.c b/gdk/macos/gdkmacossurface.c
index 9a1f73835b..88be1f513d 100644
--- a/gdk/macos/gdkmacossurface.c
+++ b/gdk/macos/gdkmacossurface.c
@@ -358,20 +358,6 @@ gdk_macos_surface_drag_begin (GdkSurface *surface,
return GDK_DRAG (g_steal_pointer (&drag));
}
-static GdkGLContext *
-gdk_macos_surface_create_gl_context (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error)
-{
- GdkMacosSurface *self = (GdkMacosSurface *)surface;
-
- g_assert (GDK_IS_MACOS_SURFACE (self));
- g_assert (!share || GDK_IS_GL_CONTEXT (share));
-
- return _gdk_macos_gl_context_new (self, attached, share, error);
-}
-
static void
gdk_macos_surface_destroy (GdkSurface *surface,
gboolean foreign_destroy)
@@ -495,7 +481,6 @@ gdk_macos_surface_class_init (GdkMacosSurfaceClass *klass)
object_class->get_property = gdk_macos_surface_get_property;
object_class->set_property = gdk_macos_surface_set_property;
- surface_class->create_gl_context = gdk_macos_surface_create_gl_context;
surface_class->destroy = gdk_macos_surface_destroy;
surface_class->drag_begin = gdk_macos_surface_drag_begin;
surface_class->get_device_state = gdk_macos_surface_get_device_state;
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index ca94a6e7e5..1ee83984da 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -3093,6 +3093,11 @@ seat_handle_capabilities (void *data,
}
else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && seat->wl_pointer)
{
+ g_clear_pointer (&seat->wp_pointer_gesture_swipe,
+ zwp_pointer_gesture_swipe_v1_destroy);
+ g_clear_pointer (&seat->wp_pointer_gesture_pinch,
+ zwp_pointer_gesture_pinch_v1_destroy);
+
wl_pointer_release (seat->wl_pointer);
seat->wl_pointer = NULL;
gdk_seat_device_removed (GDK_SEAT (seat), seat->pointer);
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index c27b165594..0312411e0c 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -969,7 +969,7 @@ gdk_wayland_display_class_init (GdkWaylandDisplayClass *class)
display_class->create_surface = _gdk_wayland_display_create_surface;
display_class->get_keymap = _gdk_wayland_display_get_keymap;
- display_class->make_gl_context_current = gdk_wayland_display_make_gl_context_current;
+ display_class->init_gl = gdk_wayland_display_init_gl;
display_class->get_monitors = gdk_wayland_display_get_monitors;
display_class->get_monitor_at_surface = gdk_wayland_display_get_monitor_at_surface;
diff --git a/gdk/wayland/gdkdisplay-wayland.h b/gdk/wayland/gdkdisplay-wayland.h
index 4c27dd86a7..66e8020b28 100644
--- a/gdk/wayland/gdkdisplay-wayland.h
+++ b/gdk/wayland/gdkdisplay-wayland.h
@@ -153,14 +153,12 @@ struct _GdkWaylandDisplay
/* egl info */
EGLDisplay egl_display;
+ EGLConfig egl_config;
int egl_major_version;
int egl_minor_version;
- guint have_egl : 1;
- guint have_egl_khr_create_context : 1;
guint have_egl_buffer_age : 1;
guint have_egl_swap_buffers_with_damage : 1;
- guint have_egl_surfaceless_context : 1;
};
struct _GdkWaylandDisplayClass
diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c
index b0edf86956..7e6dd07225 100644
--- a/gdk/wayland/gdkglcontext-wayland.c
+++ b/gdk/wayland/gdkglcontext-wayland.c
@@ -22,7 +22,9 @@
#include "config.h"
#include "gdkglcontext-wayland.h"
+
#include "gdkdisplay-wayland.h"
+#include "gdksurface-wayland.h"
#include "gdkwaylanddisplay.h"
#include "gdkwaylandglcontext.h"
@@ -53,14 +55,14 @@ gdk_wayland_gl_context_realize (GdkGLContext *context,
{
GdkWaylandGLContext *context_wayland = GDK_WAYLAND_GL_CONTEXT (context);
GdkDisplay *display = gdk_gl_context_get_display (context);
- GdkGLContext *share = gdk_gl_context_get_shared_context (context);
- GdkGLContext *shared_data_context = gdk_surface_get_shared_data_gl_context (gdk_gl_context_get_surface (context));
+ GdkGLContext *share = gdk_display_get_gl_context (display);
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
EGLContext ctx;
EGLint context_attribs[N_EGL_ATTRS];
int major, minor, flags;
gboolean debug_bit, forward_bit, legacy_bit, use_es;
int i = 0;
+ G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME;
gdk_gl_context_get_required_version (context, &major, &minor);
debug_bit = gdk_gl_context_get_debug_enabled (context);
@@ -120,10 +122,9 @@ gdk_wayland_gl_context_realize (GdkGLContext *context,
use_es ? "yes" : "no"));
ctx = eglCreateContext (display_wayland->egl_display,
- context_wayland->egl_config,
+ display_wayland->egl_config,
share != NULL ? GDK_WAYLAND_GL_CONTEXT (share)->egl_context
- : shared_data_context != NULL ? GDK_WAYLAND_GL_CONTEXT (shared_data_context)->egl_context
- : EGL_NO_CONTEXT,
+ : EGL_NO_CONTEXT,
context_attribs);
/* If context creation failed without the ES bit, let's try again with it */
@@ -147,10 +148,9 @@ gdk_wayland_gl_context_realize (GdkGLContext *context,
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("eglCreateContext failed, switching to OpenGL ES"));
ctx = eglCreateContext (display_wayland->egl_display,
- context_wayland->egl_config,
+ display_wayland->egl_config,
share != NULL ? GDK_WAYLAND_GL_CONTEXT (share)->egl_context
- : shared_data_context != NULL ? GDK_WAYLAND_GL_CONTEXT (shared_data_context)->egl_context
- : EGL_NO_CONTEXT,
+ : EGL_NO_CONTEXT,
context_attribs);
}
@@ -177,10 +177,9 @@ gdk_wayland_gl_context_realize (GdkGLContext *context,
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("eglCreateContext failed, switching to legacy"));
ctx = eglCreateContext (display_wayland->egl_display,
- context_wayland->egl_config,
+ display_wayland->egl_config,
share != NULL ? GDK_WAYLAND_GL_CONTEXT (share)->egl_context
- : shared_data_context != NULL ? GDK_WAYLAND_GL_CONTEXT (shared_data_context)->egl_context
- : EGL_NO_CONTEXT,
+ : EGL_NO_CONTEXT,
context_attribs);
}
@@ -199,6 +198,8 @@ gdk_wayland_gl_context_realize (GdkGLContext *context,
gdk_gl_context_set_is_legacy (context, legacy_bit);
gdk_gl_context_set_use_es (context, use_es);
+ gdk_profiler_end_mark (start_time, "realize GdkWaylandGLContext", NULL);
+
return TRUE;
}
@@ -213,17 +214,8 @@ gdk_wayland_gl_context_get_damage (GdkGLContext *context)
if (display_wayland->have_egl_buffer_age)
{
- GdkGLContext *shared;
- GdkWaylandGLContext *shared_wayland;
-
- shared = gdk_gl_context_get_shared_context (context);
- if (shared == NULL)
- shared = context;
- shared_wayland = GDK_WAYLAND_GL_CONTEXT (shared);
-
- egl_surface = gdk_wayland_surface_get_egl_surface (surface,
- shared_wayland->egl_config);
- gdk_gl_context_make_current (shared);
+ egl_surface = gdk_wayland_surface_get_egl_surface (surface);
+ gdk_gl_context_make_current (context);
eglQuerySurface (display_wayland->egl_display, egl_surface,
EGL_BUFFER_AGE_EXT, &buffer_age);
@@ -256,6 +248,47 @@ gdk_wayland_gl_context_get_damage (GdkGLContext *context)
return GDK_GL_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->get_damage (context);
}
+static gboolean
+gdk_wayland_gl_context_clear_current (GdkGLContext *context)
+{
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
+
+ return eglMakeCurrent (display_wayland->egl_display,
+ EGL_NO_SURFACE,
+ EGL_NO_SURFACE,
+ EGL_NO_CONTEXT);
+}
+
+static gboolean
+gdk_wayland_gl_context_make_current (GdkGLContext *context,
+ gboolean surfaceless)
+{
+ GdkWaylandGLContext *context_wayland = GDK_WAYLAND_GL_CONTEXT (context);
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
+ EGLSurface egl_surface;
+
+ if (!surfaceless)
+ egl_surface = gdk_wayland_surface_get_egl_surface (gdk_gl_context_get_surface (context));
+ else
+ egl_surface = EGL_NO_SURFACE;
+
+ return eglMakeCurrent (display_wayland->egl_display,
+ egl_surface,
+ egl_surface,
+ context_wayland->egl_context);
+}
+
+static void
+gdk_wayland_gl_context_begin_frame (GdkDrawContext *draw_context,
+ cairo_region_t *region)
+{
+ GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->begin_frame (draw_context, region);
+
+ glDrawBuffers (1, (GLenum[1]) { GL_BACK });
+}
+
static void
gdk_wayland_gl_context_end_frame (GdkDrawContext *draw_context,
cairo_region_t *painted)
@@ -264,18 +297,13 @@ gdk_wayland_gl_context_end_frame (GdkDrawContext *draw_context,
GdkSurface *surface = gdk_gl_context_get_surface (context);
GdkDisplay *display = gdk_surface_get_display (surface);
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
- GdkWaylandGLContext *context_wayland = GDK_WAYLAND_GL_CONTEXT (context);
EGLSurface egl_surface;
GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->end_frame (draw_context, painted);
- if (gdk_gl_context_get_shared_context (context))
- return;
gdk_gl_context_make_current (context);
- egl_surface = gdk_wayland_surface_get_egl_surface (surface,
- context_wayland->egl_config);
-
+ egl_surface = gdk_wayland_surface_get_egl_surface (surface);
gdk_wayland_surface_sync (surface);
gdk_wayland_surface_request_frame (surface);
@@ -322,9 +350,12 @@ gdk_wayland_gl_context_class_init (GdkWaylandGLContextClass *klass)
gobject_class->dispose = gdk_wayland_gl_context_dispose;
+ draw_context_class->begin_frame = gdk_wayland_gl_context_begin_frame;
draw_context_class->end_frame = gdk_wayland_gl_context_end_frame;
context_class->realize = gdk_wayland_gl_context_realize;
+ context_class->make_current = gdk_wayland_gl_context_make_current;
+ context_class->clear_current = gdk_wayland_gl_context_clear_current;
context_class->get_damage = gdk_wayland_gl_context_get_damage;
}
@@ -340,6 +371,8 @@ gdk_wayland_gl_context_init (GdkWaylandGLContext *self)
* Retrieves the EGL display connection object for the given GDK display.
*
* Returns: (nullable): the EGL display
+ *
+ * Since: 4.4
*/
gpointer
gdk_wayland_display_get_egl_display (GdkDisplay *display)
@@ -348,7 +381,7 @@ gdk_wayland_display_get_egl_display (GdkDisplay *display)
g_return_val_if_fail (GDK_IS_WAYLAND_DISPLAY (display), NULL);
- if (!gdk_wayland_display_init_gl (display))
+ if (!gdk_display_prepare_gl (display, NULL))
return NULL;
display_wayland = GDK_WAYLAND_DISPLAY (display);
@@ -393,71 +426,11 @@ out:
return dpy;
}
-gboolean
-gdk_wayland_display_init_gl (GdkDisplay *display)
-{
- GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
- EGLint major, minor;
- EGLDisplay dpy;
-
- if (display_wayland->have_egl)
- return TRUE;
-
- dpy = get_egl_display (display_wayland);
-
- if (dpy == NULL)
- return FALSE;
-
- if (!eglInitialize (dpy, &major, &minor))
- return FALSE;
-
- if (!eglBindAPI (EGL_OPENGL_API))
- return FALSE;
-
- display_wayland->egl_display = dpy;
- display_wayland->egl_major_version = major;
- display_wayland->egl_minor_version = minor;
-
- display_wayland->have_egl = TRUE;
-
- display_wayland->have_egl_khr_create_context =
- epoxy_has_egl_extension (dpy, "EGL_KHR_create_context");
-
- display_wayland->have_egl_buffer_age =
- epoxy_has_egl_extension (dpy, "EGL_EXT_buffer_age");
-
- display_wayland->have_egl_swap_buffers_with_damage =
- epoxy_has_egl_extension (dpy, "EGL_EXT_swap_buffers_with_damage");
-
- display_wayland->have_egl_surfaceless_context =
- epoxy_has_egl_extension (dpy, "EGL_KHR_surfaceless_context");
-
- GDK_DISPLAY_NOTE (display, OPENGL,
- g_message ("EGL API version %d.%d found\n"
- " - Vendor: %s\n"
- " - Version: %s\n"
- " - Client APIs: %s\n"
- " - Extensions:\n"
- "\t%s",
- display_wayland->egl_major_version,
- display_wayland->egl_minor_version,
- eglQueryString (dpy, EGL_VENDOR),
- eglQueryString (dpy, EGL_VERSION),
- eglQueryString (dpy, EGL_CLIENT_APIS),
- eglQueryString (dpy, EGL_EXTENSIONS)));
-
- return TRUE;
-}
-
#define MAX_EGL_ATTRS 30
-static gboolean
-find_eglconfig_for_surface (GdkSurface *surface,
- EGLConfig *egl_config_out,
- GError **error)
+static EGLConfig
+get_eglconfig (EGLDisplay dpy)
{
- GdkDisplay *display = gdk_surface_get_display (surface);
- GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
EGLint attrs[MAX_EGL_ATTRS];
EGLint count;
EGLConfig config;
@@ -482,59 +455,129 @@ find_eglconfig_for_surface (GdkSurface *surface,
g_assert (i < MAX_EGL_ATTRS);
/* Pick first valid configuration i guess? */
- if (!eglChooseConfig (display_wayland->egl_display, attrs, &config, 1, &count) || count < 1)
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_UNSUPPORTED_FORMAT,
- _("No available configurations for the given pixel format"));
- return FALSE;
- }
-
- g_assert (egl_config_out);
- *egl_config_out = config;
+ if (!eglChooseConfig (dpy, attrs, &config, 1, &count) || count < 1)
+ return NULL;
- return TRUE;
+ return config;
}
+#undef MAX_EGL_ATTRS
+
GdkGLContext *
-gdk_wayland_surface_create_gl_context (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error)
+gdk_wayland_display_init_gl (GdkDisplay *display,
+ GError **error)
{
- GdkDisplay *display = gdk_surface_get_display (surface);
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
- GdkWaylandGLContext *context;
- EGLConfig config;
+ EGLint major, minor;
+ EGLDisplay dpy;
+ GdkGLContext *ctx;
+ G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME;
+ G_GNUC_UNUSED gint64 start_time2;
+
+ start_time2 = GDK_PROFILER_CURRENT_TIME;
+ dpy = get_egl_display (display_wayland);
+ gdk_profiler_end_mark (start_time, "get_egl_display", NULL);
+ if (dpy == NULL)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("Failed to create EGL display"));
+ return NULL;
+ }
+
+ start_time2 = GDK_PROFILER_CURRENT_TIME;
+ if (!eglInitialize (dpy, &major, &minor))
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("Could not initialize EGL display"));
+ return NULL;
+ }
+ gdk_profiler_end_mark (start_time2, "eglInitialize", NULL);
- if (!gdk_wayland_display_init_gl (display))
+ if (major < GDK_EGL_MIN_VERSION_MAJOR ||
+ (major == GDK_EGL_MIN_VERSION_MAJOR && minor < GDK_EGL_MIN_VERSION_MINOR))
{
+ eglTerminate (dpy);
+ g_set_error (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("EGL version %d.%d is too old. GTK requires %d.%d"),
+ major, minor, GDK_EGL_MIN_VERSION_MAJOR, GDK_EGL_MIN_VERSION_MINOR);
+ return NULL;
+ }
+
+ start_time2 = GDK_PROFILER_CURRENT_TIME;
+ if (!eglBindAPI (EGL_OPENGL_API))
+ {
+ eglTerminate (dpy);
g_set_error_literal (error, GDK_GL_ERROR,
GDK_GL_ERROR_NOT_AVAILABLE,
_("No GL implementation is available"));
return NULL;
}
+ gdk_profiler_end_mark (start_time2, "eglBindAPI", NULL);
- if (!display_wayland->have_egl_khr_create_context)
+ if (!epoxy_has_egl_extension (dpy, "EGL_KHR_create_context"))
{
+ eglTerminate (dpy);
g_set_error_literal (error, GDK_GL_ERROR,
GDK_GL_ERROR_UNSUPPORTED_PROFILE,
_("Core GL is not available on EGL implementation"));
return NULL;
}
- if (!find_eglconfig_for_surface (surface, &config, error))
- return NULL;
+ if (!epoxy_has_egl_extension (dpy, "EGL_KHR_surfaceless_context"))
+ {
+ eglTerminate (dpy);
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_PROFILE,
+ _("Surfaceless contexts are not supported on this EGL implementation"));
+ return NULL;
+ }
+
+ start_time2 = GDK_PROFILER_CURRENT_TIME;
+ display_wayland->egl_config = get_eglconfig (dpy);
+ gdk_profiler_end_mark (start_time2, "get_eglconfig", NULL);
+ if (!display_wayland->egl_config)
+ {
+ eglTerminate (dpy);
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_FORMAT,
+ _("No available configurations for the given pixel format"));
+ return NULL;
+ }
+
+ display_wayland->egl_display = dpy;
+ display_wayland->egl_major_version = major;
+ display_wayland->egl_minor_version = minor;
+
+ display_wayland->have_egl_buffer_age =
+ epoxy_has_egl_extension (dpy, "EGL_EXT_buffer_age");
+
+ display_wayland->have_egl_swap_buffers_with_damage =
+ epoxy_has_egl_extension (dpy, "EGL_EXT_swap_buffers_with_damage");
+
+ GDK_DISPLAY_NOTE (display, OPENGL,
+ g_message ("EGL API version %d.%d found\n"
+ " - Vendor: %s\n"
+ " - Version: %s\n"
+ " - Client APIs: %s\n"
+ " - Extensions:\n"
+ "\t%s",
+ display_wayland->egl_major_version,
+ display_wayland->egl_minor_version,
+ eglQueryString (dpy, EGL_VENDOR),
+ eglQueryString (dpy, EGL_VERSION),
+ eglQueryString (dpy, EGL_CLIENT_APIS),
+ eglQueryString (dpy, EGL_EXTENSIONS)));
- context = g_object_new (GDK_TYPE_WAYLAND_GL_CONTEXT,
- "surface", surface,
- "shared-context", share,
- NULL);
+ ctx = g_object_new (GDK_TYPE_WAYLAND_GL_CONTEXT,
+ "display", display,
+ NULL);
- context->egl_config = config;
- context->is_attached = attached;
+ gdk_profiler_end_mark (start_time, "init Wayland GL", NULL);
- return GDK_GL_CONTEXT (context);
+ return ctx;
}
static void
@@ -563,42 +606,3 @@ gdk_wayland_gl_context_dispose (GObject *gobject)
G_OBJECT_CLASS (gdk_wayland_gl_context_parent_class)->dispose (gobject);
}
-gboolean
-gdk_wayland_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context)
-{
- GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
- GdkWaylandGLContext *context_wayland;
- GdkSurface *surface;
- EGLSurface egl_surface;
-
- if (context == NULL)
- {
- eglMakeCurrent(display_wayland->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
- EGL_NO_CONTEXT);
- return TRUE;
- }
-
- context_wayland = GDK_WAYLAND_GL_CONTEXT (context);
- surface = gdk_gl_context_get_surface (context);
-
- if (context_wayland->is_attached || gdk_draw_context_is_in_frame (GDK_DRAW_CONTEXT (context)))
- egl_surface = gdk_wayland_surface_get_egl_surface (surface, context_wayland->egl_config);
- else
- {
- if (display_wayland->have_egl_surfaceless_context)
- egl_surface = EGL_NO_SURFACE;
- else
- egl_surface = gdk_wayland_surface_get_dummy_egl_surface (surface,
- context_wayland->egl_config);
- }
-
- if (!eglMakeCurrent (display_wayland->egl_display, egl_surface,
- egl_surface, context_wayland->egl_context))
- {
- g_warning ("eglMakeCurrent failed");
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/gdk/wayland/gdkglcontext-wayland.h b/gdk/wayland/gdkglcontext-wayland.h
index 48966b90ad..0a60a467be 100644
--- a/gdk/wayland/gdkglcontext-wayland.h
+++ b/gdk/wayland/gdkglcontext-wayland.h
@@ -36,8 +36,6 @@ struct _GdkWaylandGLContext
GdkGLContext parent_instance;
EGLContext egl_context;
- EGLConfig egl_config;
- gboolean is_attached;
};
struct _GdkWaylandGLContextClass
@@ -45,13 +43,8 @@ struct _GdkWaylandGLContextClass
GdkGLContextClass parent_class;
};
-gboolean gdk_wayland_display_init_gl (GdkDisplay *display);
-GdkGLContext * gdk_wayland_surface_create_gl_context (GdkSurface *surface,
- gboolean attach,
- GdkGLContext *share,
+GdkGLContext * gdk_wayland_display_init_gl (GdkDisplay *display,
GError **error);
-gboolean gdk_wayland_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context);
G_END_DECLS
diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h
index 908288e877..09f41606f3 100644
--- a/gdk/wayland/gdkprivate-wayland.h
+++ b/gdk/wayland/gdkprivate-wayland.h
@@ -182,11 +182,6 @@ cairo_surface_t * _gdk_wayland_display_create_shm_surface (GdkWaylandDisplay *di
struct wl_buffer *_gdk_wayland_shm_surface_get_wl_buffer (cairo_surface_t *surface);
gboolean _gdk_wayland_is_shm_surface (cairo_surface_t *surface);
-EGLSurface gdk_wayland_surface_get_egl_surface (GdkSurface *surface,
- EGLConfig config);
-EGLSurface gdk_wayland_surface_get_dummy_egl_surface (GdkSurface *surface,
- EGLConfig config);
-
struct gtk_surface1 * gdk_wayland_surface_get_gtk_surface (GdkSurface *surface);
void gdk_wayland_seat_set_global_cursor (GdkSeat *seat,
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c
index 124bcdd1b7..5689241c7d 100644
--- a/gdk/wayland/gdksurface-wayland.c
+++ b/gdk/wayland/gdksurface-wayland.c
@@ -103,7 +103,6 @@ struct _GdkWaylandSurface
struct gtk_surface1 *gtk_surface;
struct wl_egl_window *egl_window;
- struct wl_egl_window *dummy_egl_window;
struct zxdg_exported_v1 *xdg_exported;
struct org_kde_kwin_server_decoration *server_decoration;
} display_server;
@@ -111,7 +110,6 @@ struct _GdkWaylandSurface
struct wl_event_queue *event_queue;
EGLSurface egl_surface;
- EGLSurface dummy_egl_surface;
uint32_t reposition_token;
uint32_t received_reposition_token;
@@ -2901,18 +2899,6 @@ gdk_wayland_surface_hide_surface (GdkSurface *surface)
if (impl->display_server.wl_surface)
{
- if (impl->dummy_egl_surface)
- {
- eglDestroySurface (display_wayland->egl_display, impl->dummy_egl_surface);
- impl->dummy_egl_surface = NULL;
- }
-
- if (impl->display_server.dummy_egl_window)
- {
- wl_egl_window_destroy (impl->display_server.dummy_egl_window);
- impl->display_server.dummy_egl_window = NULL;
- }
-
if (impl->egl_surface)
{
eglDestroySurface (display_wayland->egl_display, impl->egl_surface);
@@ -4238,7 +4224,6 @@ gdk_wayland_surface_class_init (GdkWaylandSurfaceClass *klass)
impl_class->drag_begin = _gdk_wayland_surface_drag_begin;
impl_class->get_scale_factor = gdk_wayland_surface_get_scale_factor;
impl_class->set_opaque_region = gdk_wayland_surface_set_opaque_region;
- impl_class->create_gl_context = gdk_wayland_surface_create_gl_context;
impl_class->request_layout = gdk_wayland_surface_request_layout;
impl_class->compute_size = gdk_wayland_surface_compute_size;
}
@@ -4304,8 +4289,7 @@ gdk_wayland_surface_get_wl_egl_window (GdkSurface *surface)
}
EGLSurface
-gdk_wayland_surface_get_egl_surface (GdkSurface *surface,
- EGLConfig config)
+gdk_wayland_surface_get_egl_surface (GdkSurface *surface)
{
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_surface_get_display (surface));
GdkWaylandSurface *impl;
@@ -4320,35 +4304,12 @@ gdk_wayland_surface_get_egl_surface (GdkSurface *surface,
egl_window = gdk_wayland_surface_get_wl_egl_window (surface);
impl->egl_surface =
- eglCreateWindowSurface (display->egl_display, config, egl_window, NULL);
+ eglCreateWindowSurface (display->egl_display, display->egl_config, egl_window, NULL);
}
return impl->egl_surface;
}
-EGLSurface
-gdk_wayland_surface_get_dummy_egl_surface (GdkSurface *surface,
- EGLConfig config)
-{
- GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_surface_get_display (surface));
- GdkWaylandSurface *impl;
-
- g_return_val_if_fail (GDK_IS_WAYLAND_SURFACE (surface), NULL);
-
- impl = GDK_WAYLAND_SURFACE (surface);
-
- if (impl->dummy_egl_surface == NULL)
- {
- impl->display_server.dummy_egl_window =
- wl_egl_window_create (impl->display_server.wl_surface, 1, 1);
-
- impl->dummy_egl_surface =
- eglCreateWindowSurface (display->egl_display, config, impl->display_server.dummy_egl_window, NULL);
- }
-
- return impl->dummy_egl_surface;
-}
-
struct gtk_surface1 *
gdk_wayland_surface_get_gtk_surface (GdkSurface *surface)
{
diff --git a/gdk/wayland/gdksurface-wayland.h b/gdk/wayland/gdksurface-wayland.h
index 8efa4be04d..cd2b1f3e9a 100644
--- a/gdk/wayland/gdksurface-wayland.h
+++ b/gdk/wayland/gdksurface-wayland.h
@@ -22,6 +22,9 @@
#include "gdkwaylandsurface.h"
+#include <wayland-egl.h>
+#include <epoxy/egl.h>
+
G_BEGIN_DECLS
void gdk_wayland_toplevel_set_dbus_properties (GdkToplevel *toplevel,
@@ -38,4 +41,6 @@ void gdk_wayland_toplevel_announce_ssd (GdkTopl
gboolean gdk_wayland_toplevel_inhibit_idle (GdkToplevel *toplevel);
void gdk_wayland_toplevel_uninhibit_idle (GdkToplevel *toplevel);
+EGLSurface gdk_wayland_surface_get_egl_surface (GdkSurface *surface);
+
G_END_DECLS
diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c
index 5c8078b696..24f60ba3e4 100644
--- a/gdk/win32/gdkdisplay-win32.c
+++ b/gdk/win32/gdkdisplay-win32.c
@@ -481,6 +481,7 @@ register_display_change_notification (GdkDisplay *display)
wclass.lpszClassName = "GdkDisplayChange";
wclass.lpfnWndProc = display_change_window_procedure;
wclass.hInstance = _gdk_app_hmodule;
+ wclass.style = CS_OWNDC;
klass = RegisterClass (&wclass);
if (klass)
@@ -656,6 +657,13 @@ gdk_win32_display_dispose (GObject *object)
if (display_win32->hwnd != NULL)
{
+ if (display_win32->dummy_context_wgl.hglrc != NULL)
+ {
+ wglMakeCurrent (NULL, NULL);
+ wglDeleteContext (display_win32->dummy_context_wgl.hglrc);
+ display_win32->dummy_context_wgl.hglrc = NULL;
+ }
+
DestroyWindow (display_win32->hwnd);
display_win32->hwnd = NULL;
}
@@ -982,31 +990,32 @@ _gdk_win32_check_on_arm64 (GdkWin32Display *display)
}
static void
-gdk_win32_display_init (GdkWin32Display *display)
+gdk_win32_display_init (GdkWin32Display *display_win32)
{
const char *scale_str = g_getenv ("GDK_SCALE");
- display->monitors = G_LIST_MODEL (g_list_store_new (GDK_TYPE_MONITOR));
+ display_win32->monitors = G_LIST_MODEL (g_list_store_new (GDK_TYPE_MONITOR));
- _gdk_win32_enable_hidpi (display);
- _gdk_win32_check_on_arm64 (display);
+ _gdk_win32_enable_hidpi (display_win32);
+ _gdk_win32_check_on_arm64 (display_win32);
/* if we have DPI awareness, set up fixed scale if set */
- if (display->dpi_aware_type != PROCESS_DPI_UNAWARE &&
+ if (display_win32->dpi_aware_type != PROCESS_DPI_UNAWARE &&
scale_str != NULL)
{
- display->surface_scale = atol (scale_str);
+ display_win32->surface_scale = atol (scale_str);
- if (display->surface_scale <= 0)
- display->surface_scale = 1;
+ if (display_win32->surface_scale <= 0)
+ display_win32->surface_scale = 1;
- display->has_fixed_scale = TRUE;
+ display_win32->has_fixed_scale = TRUE;
}
else
- display->surface_scale = _gdk_win32_display_get_monitor_scale_factor (display, NULL, NULL, NULL);
+ display_win32->surface_scale =
+ gdk_win32_display_get_monitor_scale_factor (display_win32, NULL, NULL);
- _gdk_win32_display_init_cursors (display);
- gdk_win32_display_check_composited (display);
+ _gdk_win32_display_init_cursors (display_win32);
+ gdk_win32_display_check_composited (display_win32);
}
void
@@ -1057,64 +1066,64 @@ gdk_win32_display_get_monitors (GdkDisplay *display)
}
guint
-_gdk_win32_display_get_monitor_scale_factor (GdkWin32Display *win32_display,
- HMONITOR hmonitor,
- HWND hwnd,
- int *dpi)
+gdk_win32_display_get_monitor_scale_factor (GdkWin32Display *display_win32,
+ GdkSurface *surface,
+ HMONITOR hmonitor)
{
gboolean is_scale_acquired = FALSE;
gboolean use_dpi_for_monitor = FALSE;
guint dpix, dpiy;
- if (win32_display->have_at_least_win81)
+ if (display_win32->have_at_least_win81)
{
- if (hmonitor != NULL)
+ if (surface != NULL && hmonitor == NULL)
+ hmonitor = MonitorFromWindow (GDK_SURFACE_HWND (surface),
+ MONITOR_DEFAULTTONEAREST);
+ if (hmonitor != NULL &&
+ display_win32->shcore_funcs.hshcore != NULL &&
+ display_win32->shcore_funcs.getDpiForMonitorFunc != NULL)
use_dpi_for_monitor = TRUE;
-
- else
- {
- if (hwnd != NULL)
- {
- hmonitor = MonitorFromWindow (hwnd, MONITOR_DEFAULTTONEAREST);
- use_dpi_for_monitor = TRUE;
- }
- }
}
if (use_dpi_for_monitor)
{
/* Use GetDpiForMonitor() for Windows 8.1+, when we have a HMONITOR */
- if (win32_display->shcore_funcs.hshcore != NULL &&
- win32_display->shcore_funcs.getDpiForMonitorFunc != NULL)
- {
- if (win32_display->shcore_funcs.getDpiForMonitorFunc (hmonitor,
- MDT_EFFECTIVE_DPI,
- &dpix,
- &dpiy) == S_OK)
- {
- is_scale_acquired = TRUE;
- }
- }
+ if (display_win32->shcore_funcs.getDpiForMonitorFunc (hmonitor,
+ MDT_EFFECTIVE_DPI,
+ &dpix,
+ &dpiy) == S_OK)
+ is_scale_acquired = TRUE;
}
else
{
/* Go back to GetDeviceCaps() for Windows 8 and earlier, or when we don't
* have a HMONITOR nor a HWND
*/
- HDC hdc = GetDC (hwnd);
+ HDC hdc;
- /* in case we can't get the DC for the window, return 1 for the scale */
- if (hdc == NULL)
+ if (surface != NULL)
{
- if (dpi != NULL)
- *dpi = USER_DEFAULT_SCREEN_DPI;
+ if (GDK_WIN32_SURFACE (surface)->hdc == NULL)
+ GDK_WIN32_SURFACE (surface)->hdc = GetDC (GDK_SURFACE_HWND (surface));
- return 1;
+ hdc = GDK_WIN32_SURFACE (surface)->hdc;
}
+ else
+ hdc = GetDC (NULL);
+
+ /* in case we can't get the DC for the window, return 1 for the scale */
+ if (hdc == NULL)
+ return 1;
dpix = GetDeviceCaps (hdc, LOGPIXELSX);
dpiy = GetDeviceCaps (hdc, LOGPIXELSY);
- ReleaseDC (hwnd, hdc);
+
+ /*
+ * If surface is not NULL, the HDC should not be released, since surfaces have
+ * Win32 windows created with CS_OWNDC
+ */
+ if (surface == NULL)
+ ReleaseDC (NULL, hdc);
is_scale_acquired = TRUE;
}
@@ -1122,21 +1131,13 @@ _gdk_win32_display_get_monitor_scale_factor (GdkWin32Display *win32_display,
if (is_scale_acquired)
/* USER_DEFAULT_SCREEN_DPI = 96, in winuser.h */
{
- if (dpi != NULL)
- *dpi = dpix;
-
- if (win32_display->has_fixed_scale)
- return win32_display->surface_scale;
+ if (display_win32->has_fixed_scale)
+ return display_win32->surface_scale;
else
return dpix / USER_DEFAULT_SCREEN_DPI > 1 ? dpix / USER_DEFAULT_SCREEN_DPI : 1;
}
else
- {
- if (dpi != NULL)
- *dpi = USER_DEFAULT_SCREEN_DPI;
-
- return 1;
- }
+ return 1;
}
static gboolean
@@ -1147,6 +1148,85 @@ gdk_win32_display_get_setting (GdkDisplay *display,
return _gdk_win32_get_setting (name, value);
}
+static gboolean
+gdk_win32_display_init_gl_backend (GdkDisplay *display,
+ GError **error)
+{
+#ifdef GDK_WIN32_ENABLE_EGL
+ if (GDK_DISPLAY_DEBUG_CHECK (display, GL_EGL))
+ return gdk_win32_display_init_egl (display, error);
+#endif
+ if (GDK_DISPLAY_DEBUG_CHECK (display, GL_WGL))
+ return gdk_win32_display_init_wgl (display, error);
+
+ /* No env vars set, do the regular GL initialization, first WGL and then EGL,
+ * as WGL is the more tried-and-tested configuration.
+ */
+
+ if (gdk_win32_display_init_wgl (display, error))
+ return TRUE;
+ g_clear_error (error);
+
+#ifdef GDK_WIN32_ENABLE_EGL
+ if (gdk_win32_display_init_egl (display, error))
+ return TRUE;
+#endif
+ g_clear_error (error);
+
+ return gdk_win32_display_init_wgl (display, error);
+}
+
+static GdkGLContext *
+gdk_win32_display_init_gl (GdkDisplay *display,
+ GError **error)
+{
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+ GdkGLContext *gl_context = NULL;
+
+ if (!gdk_win32_display_init_gl_backend (display, error))
+ return NULL;
+
+#ifdef GDK_WIN32_ENABLE_EGL
+ if (display_win32->egl_disp)
+ gl_context = g_object_new (GDK_TYPE_WIN32_GL_CONTEXT_EGL, "display", display, NULL);
+ else
+#endif
+ if (display_win32->wgl_pixel_format != 0)
+ gl_context = g_object_new (GDK_TYPE_WIN32_GL_CONTEXT_WGL, "display", display, NULL);
+
+ g_return_val_if_fail (gl_context != NULL, NULL);
+
+ return gl_context;
+}
+
+/**
+ * gdk_win32_display_get_egl_display:
+ * @display: (type GdkWin32Display): a Win32 display
+ *
+ * Retrieves the EGL display connection object for the given GDK display.
+ *
+ * Returns: (nullable): the EGL display
+ */
+gpointer
+gdk_win32_display_get_egl_display (GdkDisplay *display)
+{
+ GdkWin32Display *display_win32;
+
+ g_return_val_if_fail (GDK_IS_WIN32_DISPLAY (display), NULL);
+
+#ifdef GDK_WIN32_ENABLE_EGL
+ display_win32 = GDK_WIN32_DISPLAY (display);
+
+ if (display_win32->wgl_pixel_format != 0)
+ return NULL;
+
+ return display_win32->egl_disp;
+#else
+ /* no EGL support */
+ return NULL;
+#endif
+}
+
static void
gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
{
@@ -1172,7 +1252,6 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
display_class->create_surface = _gdk_win32_display_create_surface;
display_class->get_keymap = _gdk_win32_display_get_keymap;
- display_class->make_gl_context_current = _gdk_win32_display_make_gl_context_current;
display_class->get_monitors = gdk_win32_display_get_monitors;
@@ -1183,6 +1262,7 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass)
display_class->get_setting = gdk_win32_display_get_setting;
display_class->set_cursor_theme = gdk_win32_display_set_cursor_theme;
+ display_class->init_gl = gdk_win32_display_init_gl;
_gdk_win32_surfaceing_init ();
}
diff --git a/gdk/win32/gdkdisplay-win32.h b/gdk/win32/gdkdisplay-win32.h
index 46a80def2e..221987c537 100644
--- a/gdk/win32/gdkdisplay-win32.h
+++ b/gdk/win32/gdkdisplay-win32.h
@@ -106,6 +106,12 @@ typedef struct _GdkWin32KernelCPUFuncs
funcIsWow64Process2 isWow64Process2;
} GdkWin32KernelCPUFuncs;
+typedef struct
+{
+ HDC hdc;
+ HGLRC hglrc;
+} GdkWin32GLDummyContextWGL;
+
struct _GdkWin32Display
{
GdkDisplay display;
@@ -119,15 +125,15 @@ struct _GdkWin32Display
HWND hwnd;
/* WGL/OpenGL Items */
- guint have_wgl : 1;
+ GdkWin32GLDummyContextWGL dummy_context_wgl;
+ int wgl_pixel_format;
guint gl_version;
- HWND gl_hwnd;
#ifdef GDK_WIN32_ENABLE_EGL
/* EGL (Angle) Items */
- guint have_egl : 1;
guint egl_version;
EGLDisplay egl_disp;
+ EGLConfig egl_config;
HDC hdc_egl_temp;
#endif
@@ -185,10 +191,9 @@ GPtrArray *_gdk_win32_display_get_monitor_list (GdkWin32Display *display);
void gdk_win32_display_check_composited (GdkWin32Display *display);
-guint _gdk_win32_display_get_monitor_scale_factor (GdkWin32Display *win32_display,
- HMONITOR hmonitor,
- HWND hwnd,
- int *dpi);
+guint gdk_win32_display_get_monitor_scale_factor (GdkWin32Display *display_win32,
+ GdkSurface *surface,
+ HMONITOR hmonitor);
typedef struct _GdkWin32MessageFilter GdkWin32MessageFilter;
diff --git a/gdk/win32/gdkdrag-win32.c b/gdk/win32/gdkdrag-win32.c
index 419889ebe1..1b92e85efa 100644
--- a/gdk/win32/gdkdrag-win32.c
+++ b/gdk/win32/gdkdrag-win32.c
@@ -793,7 +793,7 @@ gdk_drag_new (GdkDisplay *display,
GdkDragProtocol protocol)
{
GdkWin32Drag *drag_win32;
- GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
GdkDrag *drag;
drag_win32 = g_object_new (GDK_TYPE_WIN32_DRAG,
@@ -805,10 +805,10 @@ gdk_drag_new (GdkDisplay *display,
drag = GDK_DRAG (drag_win32);
- if (win32_display->has_fixed_scale)
- drag_win32->scale = win32_display->surface_scale;
+ if (display_win32->has_fixed_scale)
+ drag_win32->scale = display_win32->surface_scale;
else
- drag_win32->scale = _gdk_win32_display_get_monitor_scale_factor (win32_display, NULL, NULL, NULL);
+ drag_win32->scale = gdk_win32_display_get_monitor_scale_factor (display_win32, NULL, NULL);
drag_win32->protocol = protocol;
diff --git a/gdk/win32/gdkdrop-win32.c b/gdk/win32/gdkdrop-win32.c
index bd41e82ef7..8e09b181ca 100644
--- a/gdk/win32/gdkdrop-win32.c
+++ b/gdk/win32/gdkdrop-win32.c
@@ -177,7 +177,7 @@ gdk_drop_new (GdkDisplay *display,
GdkDragProtocol protocol)
{
GdkWin32Drop *drop_win32;
- GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
drop_win32 = g_object_new (GDK_TYPE_WIN32_DROP,
"device", device,
@@ -186,10 +186,10 @@ gdk_drop_new (GdkDisplay *display,
"surface", surface,
NULL);
- if (win32_display->has_fixed_scale)
- drop_win32->scale = win32_display->surface_scale;
+ if (display_win32->has_fixed_scale)
+ drop_win32->scale = display_win32->surface_scale;
else
- drop_win32->scale = _gdk_win32_display_get_monitor_scale_factor (win32_display, NULL, NULL, NULL);
+ drop_win32->scale = gdk_win32_display_get_monitor_scale_factor (display_win32, NULL, NULL);
drop_win32->protocol = protocol;
diff --git a/gdk/win32/gdkglcontext-win32-egl.c b/gdk/win32/gdkglcontext-win32-egl.c
new file mode 100644
index 0000000000..9d2df6b499
--- /dev/null
+++ b/gdk/win32/gdkglcontext-win32-egl.c
@@ -0,0 +1,504 @@
+/* GDK - The GIMP Drawing Kit
+ *
+ * gdkglcontext-win32.c: Win32 specific OpenGL wrappers
+ *
+ * Copyright © 2014 Emmanuele Bassi
+ * Copyright © 2014 Alexander Larsson
+ * Copyright © 2014 Chun-wei Fan
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include "gdkprivate-win32.h"
+#include "gdksurface-win32.h"
+#include "gdkglcontext-win32.h"
+#include "gdkdisplay-win32.h"
+
+#include "gdkwin32display.h"
+#include "gdkwin32glcontext.h"
+#include "gdkwin32misc.h"
+#include "gdkwin32screen.h"
+#include "gdkwin32surface.h"
+
+#include "gdkglcontext.h"
+#include "gdksurface.h"
+#include "gdkinternals.h"
+#include "gdkintl.h"
+
+#include <cairo.h>
+#include <epoxy/egl.h>
+
+struct _GdkWin32GLContextEGL
+{
+ GdkWin32GLContext parent_instance;
+
+ /* EGL (Angle) Context Items */
+ EGLContext egl_context;
+ guint do_frame_sync : 1;
+};
+
+typedef struct _GdkWin32GLContextClass GdkWin32GLContextEGLClass;
+
+G_DEFINE_TYPE (GdkWin32GLContextEGL, gdk_win32_gl_context_egl, GDK_TYPE_WIN32_GL_CONTEXT)
+
+static void
+gdk_win32_gl_context_egl_dispose (GObject *gobject)
+{
+ GdkGLContext *context = GDK_GL_CONTEXT (gobject);
+ GdkWin32GLContextEGL *context_egl = GDK_WIN32_GL_CONTEXT_EGL (gobject);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (gdk_gl_context_get_display (context));
+ GdkSurface *surface = gdk_gl_context_get_surface (context);
+
+ if (display_win32 != NULL)
+ {
+ if (eglGetCurrentContext () == context_egl->egl_context)
+ eglMakeCurrent(display_win32->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE,
+ EGL_NO_CONTEXT);
+
+ GDK_NOTE (OPENGL, g_message ("Destroying EGL (ANGLE) context"));
+
+ eglDestroyContext (display_win32->egl_disp,
+ context_egl->egl_context);
+ context_egl->egl_context = EGL_NO_CONTEXT;
+ }
+
+ G_OBJECT_CLASS (gdk_win32_gl_context_egl_parent_class)->dispose (gobject);
+}
+
+static gboolean
+is_egl_force_redraw (GdkSurface *surface)
+{
+ /* We only need to call gdk_window_invalidate_rect () if necessary */
+ if (surface->gl_paint_context != NULL && gdk_gl_context_get_use_es (surface->gl_paint_context))
+ {
+ GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
+
+ return impl->egl_force_redraw_all;
+ }
+ return FALSE;
+}
+
+static void
+reset_egl_force_redraw (GdkSurface *surface)
+{
+ if (surface->gl_paint_context != NULL && gdk_gl_context_get_use_es (surface->gl_paint_context))
+ {
+ GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
+
+ if (impl->egl_force_redraw_all)
+ impl->egl_force_redraw_all = FALSE;
+ }
+}
+
+static void
+gdk_win32_gl_context_egl_end_frame (GdkDrawContext *draw_context,
+ cairo_region_t *painted)
+{
+ GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
+ GdkWin32GLContextEGL *context_egl = GDK_WIN32_GL_CONTEXT_EGL (context);
+ GdkSurface *surface = gdk_gl_context_get_surface (context);
+ GdkWin32Display *display_win32 = (GDK_WIN32_DISPLAY (gdk_gl_context_get_display (context)));
+ cairo_rectangle_int_t whole_window;
+ EGLSurface egl_surface;
+
+ GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_egl_parent_class)->end_frame (draw_context, painted);
+
+ gdk_gl_context_make_current (context);
+ whole_window =
+ (GdkRectangle) { 0, 0,
+ gdk_surface_get_width (surface),
+ gdk_surface_get_height (surface)
+ };
+
+ egl_surface = gdk_win32_surface_get_egl_surface (surface, display_win32->egl_config, FALSE);
+
+ if (is_egl_force_redraw (surface))
+ {
+ GdkRectangle rect = {0, 0, gdk_surface_get_width (surface), gdk_surface_get_height (surface)};
+
+ /* We need to do gdk_window_invalidate_rect() so that we don't get glitches after maximizing or
+ * restoring or using aerosnap
+ */
+ gdk_surface_invalidate_rect (surface, &rect);
+ reset_egl_force_redraw (surface);
+ }
+
+ eglSwapBuffers (display_win32->egl_disp, egl_surface);
+}
+
+#ifndef EGL_PLATFORM_ANGLE_ANGLE
+#define EGL_PLATFORM_ANGLE_ANGLE 0x3202
+#endif
+
+#ifndef EGL_PLATFORM_ANGLE_TYPE_ANGLE
+#define EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3203
+#endif
+
+#ifndef EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE
+#define EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3208
+#endif
+
+static EGLDisplay
+gdk_win32_get_egl_display (GdkWin32Display *display)
+{
+ EGLDisplay disp;
+
+ if (epoxy_has_egl_extension (NULL, "EGL_EXT_platform_base"))
+ {
+ PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
+ if (getPlatformDisplay)
+ {
+ EGLint disp_attr[] = {EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_NONE};
+
+ disp = getPlatformDisplay (EGL_PLATFORM_ANGLE_ANGLE, display->hdc_egl_temp, disp_attr);
+
+ if (disp != EGL_NO_DISPLAY)
+ return disp;
+ }
+ }
+
+ return eglGetDisplay (display->hdc_egl_temp);
+}
+
+#define MAX_EGL_ATTRS 30
+
+static gboolean
+find_eglconfig_for_window (GdkWin32Display *display,
+ EGLConfig *egl_config_out,
+ EGLint *min_swap_interval_out,
+ GError **error)
+{
+ EGLint attrs[MAX_EGL_ATTRS];
+ EGLint count;
+ EGLConfig *configs, chosen_config;
+
+ int i = 0;
+
+ EGLDisplay egl_disp = display->egl_disp;
+
+ attrs[i++] = EGL_CONFORMANT;
+ attrs[i++] = EGL_OPENGL_ES2_BIT;
+ attrs[i++] = EGL_SURFACE_TYPE;
+ attrs[i++] = EGL_WINDOW_BIT;
+
+ attrs[i++] = EGL_COLOR_BUFFER_TYPE;
+ attrs[i++] = EGL_RGB_BUFFER;
+
+ attrs[i++] = EGL_RED_SIZE;
+ attrs[i++] = 1;
+ attrs[i++] = EGL_GREEN_SIZE;
+ attrs[i++] = 1;
+ attrs[i++] = EGL_BLUE_SIZE;
+ attrs[i++] = 1;
+ attrs[i++] = EGL_ALPHA_SIZE;
+ attrs[i++] = 1;
+
+ attrs[i++] = EGL_NONE;
+ g_assert (i < MAX_EGL_ATTRS);
+
+ if (!eglChooseConfig (display->egl_disp, attrs, NULL, 0, &count) || count < 1)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_FORMAT,
+ _("No available configurations for the given pixel format"));
+ return FALSE;
+ }
+
+ configs = g_new (EGLConfig, count);
+
+ if (!eglChooseConfig (display->egl_disp, attrs, configs, count, &count) || count < 1)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_FORMAT,
+ _("No available configurations for the given pixel format"));
+ return FALSE;
+ }
+
+ /* Pick first valid configuration i guess? */
+ chosen_config = configs[0];
+
+ if (!eglGetConfigAttrib (display->egl_disp, chosen_config,
+ EGL_MIN_SWAP_INTERVAL, min_swap_interval_out))
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ "Could not retrieve the minimum swap interval");
+ g_free (configs);
+ return FALSE;
+ }
+
+ if (egl_config_out != NULL)
+ *egl_config_out = chosen_config;
+
+ g_free (configs);
+
+ return TRUE;
+}
+
+gboolean
+gdk_win32_display_init_egl (GdkDisplay *display,
+ GError **error)
+{
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+ int best_idx = 0;
+ EGLDisplay egl_disp;
+
+ if (display_win32->egl_disp != EGL_NO_DISPLAY)
+ return TRUE;
+
+ egl_disp = gdk_win32_get_egl_display (display_win32);
+
+ if (egl_disp == EGL_NO_DISPLAY)
+ return FALSE;
+
+ if (!eglInitialize (egl_disp, NULL, NULL))
+ {
+ eglTerminate (egl_disp);
+ egl_disp = EGL_NO_DISPLAY;
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("No GL implementation is available"));
+ return FALSE;
+ }
+
+ display_win32->egl_disp = egl_disp;
+ display_win32->egl_version = epoxy_egl_version (egl_disp);
+
+ eglBindAPI(EGL_OPENGL_ES_API);
+
+ display_win32->hasEglSurfacelessContext =
+ epoxy_has_egl_extension (egl_disp, "EGL_KHR_surfaceless_context");
+
+ GDK_NOTE (OPENGL,
+ g_print ("EGL API version %d.%d found\n"
+ " - Vendor: %s\n"
+ " - Checked extensions:\n"
+ "\t* EGL_KHR_surfaceless_context: %s\n",
+ display_win32->egl_version / 10,
+ display_win32->egl_version % 10,
+ eglQueryString (display_win32->egl_disp, EGL_VENDOR),
+ display_win32->hasEglSurfacelessContext ? "yes" : "no"));
+
+ return find_eglconfig_for_window (display_win32, &display_win32->egl_config,
+ &display_win32->egl_min_swap_interval, error);
+}
+
+#define N_EGL_ATTRS 16
+
+static EGLContext
+create_egl_context (EGLDisplay display,
+ EGLConfig config,
+ GdkGLContext *share,
+ int flags,
+ int major,
+ int minor,
+ gboolean *is_legacy)
+{
+ EGLContext ctx;
+ EGLint context_attribs[N_EGL_ATTRS];
+ int i = 0;
+
+ /* ANGLE does not support the GL_OES_vertex_array_object extension, so we need to use ES3 directly */
+ context_attribs[i++] = EGL_CONTEXT_CLIENT_VERSION;
+ context_attribs[i++] = 3;
+
+ /* Specify the flags */
+ context_attribs[i++] = EGL_CONTEXT_FLAGS_KHR;
+ context_attribs[i++] = flags;
+
+ context_attribs[i++] = EGL_NONE;
+ g_assert (i < N_EGL_ATTRS);
+
+ ctx = eglCreateContext (display,
+ config,
+ share != NULL ? GDK_WIN32_GL_CONTEXT_EGL (share)->egl_context
+ : EGL_NO_CONTEXT,
+ context_attribs);
+
+ if (ctx != EGL_NO_CONTEXT)
+ GDK_NOTE (OPENGL, g_message ("Created EGL context[%p]", ctx));
+
+ return ctx;
+}
+
+static gboolean
+gdk_win32_gl_context_egl_realize (GdkGLContext *context,
+ GError **error)
+{
+ GdkWin32GLContextEGL *context_egl = GDK_WIN32_GL_CONTEXT_EGL (context);
+
+ gboolean debug_bit, compat_bit, legacy_bit;
+ gboolean use_es = FALSE;
+ EGLContext egl_context;
+ EGLContext ctx;
+
+ /* request flags and specific versions for core (3.2+) WGL context */
+ int flags = 0;
+ int major = 0;
+ int minor = 0;
+
+ GdkSurface *surface = gdk_gl_context_get_surface (context);
+ GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+ GdkGLContext *share = gdk_display_get_gl_context (display);
+
+ gdk_gl_context_get_required_version (context, &major, &minor);
+ debug_bit = gdk_gl_context_get_debug_enabled (context);
+ compat_bit = gdk_gl_context_get_forward_compatible (context);
+
+ /*
+ * A legacy context cannot be shared with core profile ones, so this means we
+ * must stick to a legacy context if the shared context is a legacy context
+ */
+
+ /* if GDK_GL_LEGACY is set, we default to a legacy context */
+ legacy_bit = GDK_DISPLAY_DEBUG_CHECK (display, GL_LEGACY) ?
+ TRUE :
+ share != NULL && gdk_gl_context_is_legacy (share);
+
+ use_es = GDK_DISPLAY_DEBUG_CHECK (display, GL_GLES) ||
+ (share != NULL && gdk_gl_context_get_use_es (share));
+
+ if (debug_bit)
+ flags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
+ if (compat_bit)
+ flags |= EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR;
+
+ GDK_NOTE (OPENGL, g_message ("Creating EGL context version %d.%d (debug:%s, forward:%s, legacy:%s)",
+ major, minor,
+ debug_bit ? "yes" : "no",
+ compat_bit ? "yes" : "no",
+ legacy_bit ? "yes" : "no"));
+
+ ctx = create_egl_context (display_win32->egl_disp,
+ display_win32->egl_config,
+ share,
+ flags,
+ major,
+ minor,
+ &legacy_bit);
+
+ if (ctx == EGL_NO_CONTEXT)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("Unable to create a GL context"));
+ return FALSE;
+ }
+
+ GDK_NOTE (OPENGL, g_print ("Created EGL context[%p]\n", ctx));
+
+ context_egl->egl_context = ctx;
+
+ /* We are using GLES here */
+ gdk_gl_context_set_use_es (context, TRUE);
+
+ /* Ensure that any other context is created with a legacy bit set */
+ gdk_gl_context_set_is_legacy (context, legacy_bit);
+
+ return TRUE;
+}
+
+static gboolean
+gdk_win32_gl_context_egl_clear_current (GdkGLContext *context)
+{
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+
+ if (display_win32->egl_disp != EGL_NO_DISPLAY)
+ return eglMakeCurrent (display_win32->egl_disp,
+ EGL_NO_SURFACE,
+ EGL_NO_SURFACE,
+ EGL_NO_CONTEXT);
+ else
+ return TRUE;
+}
+
+static gboolean
+gdk_win32_gl_context_egl_make_current (GdkGLContext *context,
+ gboolean surfaceless)
+{
+ GdkWin32GLContextEGL *context_egl = GDK_WIN32_GL_CONTEXT_EGL (context);
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+ GdkSurface *surface;
+
+ gboolean do_frame_sync = FALSE;
+
+ EGLSurface egl_surface;
+
+ surface = gdk_gl_context_get_surface (context);
+
+ if (!surfaceless)
+ egl_surface = gdk_win32_surface_get_egl_surface (surface, display_win32->egl_config, FALSE);
+ else
+ {
+ if (display_win32->hasEglSurfacelessContext)
+ egl_surface = EGL_NO_SURFACE;
+ else
+ egl_surface = gdk_win32_surface_get_egl_surface (surface, display_win32->egl_config, TRUE);
+ }
+
+ if (!eglMakeCurrent (display_win32->egl_disp,
+ egl_surface,
+ egl_surface,
+ context_egl->egl_context))
+ return FALSE;
+
+ if (display_win32->egl_min_swap_interval == 0)
+ eglSwapInterval (display_win32->egl_disp, 0);
+ else
+ g_debug ("Can't disable GL swap interval");
+
+ return TRUE;
+}
+
+static void
+gdk_win32_gl_context_egl_begin_frame (GdkDrawContext *draw_context,
+ cairo_region_t *update_area)
+{
+ GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
+ GdkSurface *surface;
+
+ surface = gdk_gl_context_get_surface (context);
+
+ gdk_win32_surface_handle_queued_move_resize (draw_context);
+
+ GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_egl_parent_class)->begin_frame (draw_context, update_area);
+}
+
+static void
+gdk_win32_gl_context_egl_class_init (GdkWin32GLContextClass *klass)
+{
+ GdkGLContextClass *context_class = GDK_GL_CONTEXT_CLASS(klass);
+ GdkDrawContextClass *draw_context_class = GDK_DRAW_CONTEXT_CLASS(klass);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ context_class->realize = gdk_win32_gl_context_egl_realize;
+ context_class->make_current = gdk_win32_gl_context_egl_make_current;
+ context_class->clear_current = gdk_win32_gl_context_egl_clear_current;
+
+ draw_context_class->begin_frame = gdk_win32_gl_context_egl_begin_frame;
+ draw_context_class->end_frame = gdk_win32_gl_context_egl_end_frame;
+
+ gobject_class->dispose = gdk_win32_gl_context_egl_dispose;
+}
+
+static void
+gdk_win32_gl_context_egl_init (GdkWin32GLContextEGL *egl_context)
+{
+}
diff --git a/gdk/win32/gdkglcontext-win32-wgl.c b/gdk/win32/gdkglcontext-win32-wgl.c
new file mode 100644
index 0000000000..4b000f4792
--- /dev/null
+++ b/gdk/win32/gdkglcontext-win32-wgl.c
@@ -0,0 +1,727 @@
+/* GDK - The GIMP Drawing Kit
+ *
+ * gdkglcontext-win32.c: Win32 specific OpenGL wrappers
+ *
+ * Copyright © 2014 Emmanuele Bassi
+ * Copyright © 2014 Alexander Larsson
+ * Copyright © 2014 Chun-wei Fan
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include "gdkprivate-win32.h"
+#include "gdksurface-win32.h"
+#include "gdkglcontext-win32.h"
+#include "gdkdisplay-win32.h"
+
+#include "gdkwin32display.h"
+#include "gdkwin32glcontext.h"
+#include "gdkwin32misc.h"
+#include "gdkwin32screen.h"
+#include "gdkwin32surface.h"
+
+#include "gdkglcontext.h"
+#include "gdkprofilerprivate.h"
+#include "gdkinternals.h"
+#include "gdkintl.h"
+#include "gdksurface.h"
+
+#include <cairo.h>
+#include <epoxy/wgl.h>
+
+struct _GdkWin32GLContextWGL
+{
+ GdkWin32GLContext parent_instance;
+
+ HGLRC wgl_context;
+ guint do_frame_sync : 1;
+};
+
+typedef struct _GdkWin32GLContextClass GdkWin32GLContextWGLClass;
+
+G_DEFINE_TYPE (GdkWin32GLContextWGL, gdk_win32_gl_context_wgl, GDK_TYPE_WIN32_GL_CONTEXT)
+
+static void
+gdk_win32_gl_context_wgl_dispose (GObject *gobject)
+{
+ GdkWin32GLContextWGL *context_wgl = GDK_WIN32_GL_CONTEXT_WGL (gobject);
+
+ if (context_wgl->wgl_context != NULL)
+ {
+ if (wglGetCurrentContext () == context_wgl->wgl_context)
+ wglMakeCurrent (NULL, NULL);
+
+ GDK_NOTE (OPENGL, g_print ("Destroying WGL context\n"));
+
+ wglDeleteContext (context_wgl->wgl_context);
+ context_wgl->wgl_context = NULL;
+ }
+
+ G_OBJECT_CLASS (gdk_win32_gl_context_wgl_parent_class)->dispose (gobject);
+}
+
+static void
+gdk_win32_gl_context_wgl_end_frame (GdkDrawContext *draw_context,
+ cairo_region_t *painted)
+{
+ GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
+ GdkWin32GLContextWGL *context_wgl = GDK_WIN32_GL_CONTEXT_WGL (context);
+ GdkSurface *surface = gdk_gl_context_get_surface (context);
+ GdkWin32Display *display_win32 = (GDK_WIN32_DISPLAY (gdk_gl_context_get_display (context)));
+ cairo_rectangle_int_t whole_window;
+ gboolean can_wait = display_win32->hasWglOMLSyncControl;
+ HDC hdc;
+
+ GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_wgl_parent_class)->end_frame (draw_context, painted);
+
+ gdk_gl_context_make_current (context);
+ whole_window = (GdkRectangle) { 0, 0, gdk_surface_get_width (surface), gdk_surface_get_height (surface) };
+
+ gdk_profiler_add_mark (GDK_PROFILER_CURRENT_TIME, 0, "win32", "swap buffers");
+
+ if (surface != NULL)
+ hdc = GDK_WIN32_SURFACE (surface)->hdc;
+ else
+ hdc = display_win32->dummy_context_wgl.hdc;
+
+ if (context_wgl->do_frame_sync)
+ {
+
+ glFinish ();
+
+ if (can_wait)
+ {
+ gint64 ust, msc, sbc;
+
+ wglGetSyncValuesOML (hdc, &ust, &msc, &sbc);
+ wglWaitForMscOML (hdc,
+ 0,
+ 2,
+ (msc + 1) % 2,
+ &ust, &msc, &sbc);
+ }
+
+ }
+
+ SwapBuffers (hdc);
+}
+
+static void
+gdk_win32_gl_context_wgl_begin_frame (GdkDrawContext *draw_context,
+ cairo_region_t *update_area)
+{
+ GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
+ GdkSurface *surface;
+
+ surface = gdk_gl_context_get_surface (context);
+
+ gdk_win32_surface_handle_queued_move_resize (draw_context);
+
+ GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_wgl_parent_class)->begin_frame (draw_context, update_area);
+}
+
+static int
+gdk_init_dummy_wgl_context (GdkWin32Display *display_win32);
+
+#define PIXEL_ATTRIBUTES 17
+
+static int
+get_wgl_pfd (HDC hdc,
+ PIXELFORMATDESCRIPTOR *pfd,
+ GdkWin32Display *display_win32)
+{
+ int best_pf = 0;
+
+ pfd->nSize = sizeof (PIXELFORMATDESCRIPTOR);
+
+ if (display_win32 != NULL && display_win32->hasWglARBPixelFormat)
+ {
+ UINT num_formats;
+ int colorbits = GetDeviceCaps (hdc, BITSPIXEL);
+ int i = 0;
+ int pixelAttribs[PIXEL_ATTRIBUTES];
+
+ /* Save up the HDC and HGLRC that we are currently using, to restore back to it when we are done here */
+ HDC hdc_current = wglGetCurrentDC ();
+ HGLRC hglrc_current = wglGetCurrentContext ();
+
+ /* Update PIXEL_ATTRIBUTES above if any groups are added here! */
+ pixelAttribs[i] = WGL_DRAW_TO_WINDOW_ARB;
+ pixelAttribs[i++] = GL_TRUE;
+
+ pixelAttribs[i++] = WGL_SUPPORT_OPENGL_ARB;
+ pixelAttribs[i++] = GL_TRUE;
+
+ pixelAttribs[i++] = WGL_DOUBLE_BUFFER_ARB;
+ pixelAttribs[i++] = GL_TRUE;
+
+ pixelAttribs[i++] = WGL_ACCELERATION_ARB;
+ pixelAttribs[i++] = WGL_FULL_ACCELERATION_ARB;
+
+ pixelAttribs[i++] = WGL_PIXEL_TYPE_ARB;
+ pixelAttribs[i++] = WGL_TYPE_RGBA_ARB;
+
+ pixelAttribs[i++] = WGL_COLOR_BITS_ARB;
+ pixelAttribs[i++] = colorbits;
+
+ /* end of "Update PIXEL_ATTRIBUTES above if any groups are added here!" */
+
+ if (display_win32->hasWglARBmultisample)
+ {
+ pixelAttribs[i++] = WGL_SAMPLE_BUFFERS_ARB;
+ pixelAttribs[i++] = 1;
+
+ pixelAttribs[i++] = WGL_SAMPLES_ARB;
+ pixelAttribs[i++] = 8;
+ }
+
+ pixelAttribs[i++] = 0; /* end of pixelAttribs */
+ best_pf = gdk_init_dummy_wgl_context (display_win32);
+
+ if (!wglMakeCurrent (display_win32->dummy_context_wgl.hdc,
+ display_win32->dummy_context_wgl.hglrc))
+ {
+ wglMakeCurrent (hdc_current, hglrc_current);
+ return 0;
+ }
+
+ wglChoosePixelFormatARB (hdc,
+ pixelAttribs,
+ NULL,
+ 1,
+ &best_pf,
+ &num_formats);
+
+ /* Go back to the HDC that we were using, since we are done with the dummy HDC and GL Context */
+ wglMakeCurrent (hdc_current, hglrc_current);
+ }
+ else
+ {
+ pfd->nVersion = 1;
+ pfd->dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER;
+ pfd->iPixelType = PFD_TYPE_RGBA;
+ pfd->cColorBits = GetDeviceCaps (hdc, BITSPIXEL);
+ pfd->cAlphaBits = 8;
+ pfd->dwLayerMask = PFD_MAIN_PLANE;
+
+ best_pf = ChoosePixelFormat (hdc, pfd);
+ }
+
+ return best_pf;
+}
+
+/* in WGL, for many OpenGL items, we need a dummy WGL context, so create
+ * one and cache it for later use
+ */
+static int
+gdk_init_dummy_wgl_context (GdkWin32Display *display_win32)
+{
+ PIXELFORMATDESCRIPTOR pfd;
+ gboolean set_pixel_format_result = FALSE;
+ int best_idx = 0;
+
+ if (display_win32->dummy_context_wgl.hdc == NULL)
+ display_win32->dummy_context_wgl.hdc = GetDC (display_win32->hwnd);
+
+ memset (&pfd, 0, sizeof (PIXELFORMATDESCRIPTOR));
+
+ best_idx = get_wgl_pfd (display_win32->dummy_context_wgl.hdc, &pfd, NULL);
+
+ if (best_idx != 0)
+ set_pixel_format_result = SetPixelFormat (display_win32->dummy_context_wgl.hdc,
+ best_idx,
+ &pfd);
+
+ if (best_idx == 0 || !set_pixel_format_result)
+ return 0;
+
+ display_win32->dummy_context_wgl.hglrc =
+ wglCreateContext (display_win32->dummy_context_wgl.hdc);
+
+ if (display_win32->dummy_context_wgl.hglrc == NULL)
+ return 0;
+
+ return best_idx;
+}
+
+gboolean
+gdk_win32_display_init_wgl (GdkDisplay *display,
+ GError **error)
+{
+ int best_idx = 0;
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+ HDC hdc;
+
+ if (display_win32->wgl_pixel_format != 0)
+ return TRUE;
+
+ /* acquire and cache dummy Window (HWND & HDC) and
+ * dummy GL Context, it is used to query functions
+ * and used for other stuff as well
+ */
+ best_idx = gdk_init_dummy_wgl_context (display_win32);
+ hdc = display_win32->dummy_context_wgl.hdc;
+
+ if (best_idx == 0 ||
+ !wglMakeCurrent (hdc, display_win32->dummy_context_wgl.hglrc))
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("No GL implementation is available"));
+
+ return FALSE;
+ }
+
+ display_win32->wgl_pixel_format = best_idx;
+ display_win32->gl_version = epoxy_gl_version ();
+
+ display_win32->hasWglARBCreateContext =
+ epoxy_has_wgl_extension (hdc, "WGL_ARB_create_context");
+ display_win32->hasWglEXTSwapControl =
+ epoxy_has_wgl_extension (hdc, "WGL_EXT_swap_control");
+ display_win32->hasWglOMLSyncControl =
+ epoxy_has_wgl_extension (hdc, "WGL_OML_sync_control");
+ display_win32->hasWglARBPixelFormat =
+ epoxy_has_wgl_extension (hdc, "WGL_ARB_pixel_format");
+ display_win32->hasWglARBmultisample =
+ epoxy_has_wgl_extension (hdc, "WGL_ARB_multisample");
+
+ GDK_NOTE (OPENGL,
+ g_print ("WGL API version %d.%d found\n"
+ " - Vendor: %s\n"
+ " - Checked extensions:\n"
+ "\t* WGL_ARB_pixel_format: %s\n"
+ "\t* WGL_ARB_create_context: %s\n"
+ "\t* WGL_EXT_swap_control: %s\n"
+ "\t* WGL_OML_sync_control: %s\n"
+ "\t* WGL_ARB_multisample: %s\n",
+ display_win32->gl_version / 10,
+ display_win32->gl_version % 10,
+ glGetString (GL_VENDOR),
+ display_win32->hasWglARBPixelFormat ? "yes" : "no",
+ display_win32->hasWglARBCreateContext ? "yes" : "no",
+ display_win32->hasWglEXTSwapControl ? "yes" : "no",
+ display_win32->hasWglOMLSyncControl ? "yes" : "no",
+ display_win32->hasWglARBmultisample ? "yes" : "no"));
+
+ wglMakeCurrent (NULL, NULL);
+
+ return TRUE;
+}
+
+/* Setup the legacy context after creating it */
+static gboolean
+ensure_legacy_wgl_context (HDC hdc,
+ HGLRC hglrc_legacy,
+ GdkGLContext *share)
+{
+ GdkWin32GLContextWGL *context_wgl;
+
+ if (!wglMakeCurrent (hdc, hglrc_legacy))
+ return FALSE;
+
+ if (share != NULL)
+ {
+ context_wgl = GDK_WIN32_GL_CONTEXT_WGL (share);
+
+ return wglShareLists (hglrc_legacy, context_wgl->wgl_context);
+ }
+
+ return TRUE;
+}
+
+static HGLRC
+create_wgl_context_with_attribs (HDC hdc,
+ HGLRC hglrc_base,
+ GdkGLContext *share,
+ int flags,
+ int major,
+ int minor,
+ gboolean *is_legacy)
+{
+ HGLRC hglrc;
+ GdkWin32GLContextWGL *context_wgl;
+
+ /* if we have wglCreateContextAttribsARB(), create a
+ * context with the compatibility profile if a legacy
+ * context is requested, or when we go into fallback mode
+ */
+ int profile = *is_legacy ? WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB :
+ WGL_CONTEXT_CORE_PROFILE_BIT_ARB;
+
+ int attribs[] = {
+ WGL_CONTEXT_PROFILE_MASK_ARB, profile,
+ WGL_CONTEXT_MAJOR_VERSION_ARB, *is_legacy ? 3 : major,
+ WGL_CONTEXT_MINOR_VERSION_ARB, *is_legacy ? 0 : minor,
+ WGL_CONTEXT_FLAGS_ARB, flags,
+ 0
+ };
+
+ if (share != NULL)
+ context_wgl = GDK_WIN32_GL_CONTEXT_WGL (share);
+
+ hglrc = wglCreateContextAttribsARB (hdc,
+ share != NULL ? context_wgl->wgl_context : NULL,
+ attribs);
+
+ return hglrc;
+}
+
+static HGLRC
+create_wgl_context (HDC hdc,
+ GdkGLContext *share,
+ int flags,
+ int major,
+ int minor,
+ gboolean *is_legacy,
+ gboolean hasWglARBCreateContext)
+{
+ /* We need a legacy context for *all* cases */
+ HGLRC hglrc_base = wglCreateContext (hdc);
+ gboolean success = TRUE;
+
+ /* Save up the HDC and HGLRC that we are currently using, to restore back to it when we are done here */
+ HDC hdc_current = wglGetCurrentDC ();
+ HGLRC hglrc_current = wglGetCurrentContext ();
+
+ /* if we have no wglCreateContextAttribsARB(), return the legacy context when all is set */
+ if (*is_legacy && !hasWglARBCreateContext)
+ {
+ if (ensure_legacy_wgl_context (hdc, hglrc_base, share))
+ {
+ wglMakeCurrent (hdc_current, hglrc_current);
+ return hglrc_base;
+ }
+
+ success = FALSE;
+ goto gl_fail;
+ }
+ else
+ {
+ HGLRC hglrc = NULL;
+
+ if (!wglMakeCurrent (hdc, hglrc_base))
+ {
+ success = FALSE;
+ goto gl_fail;
+ }
+
+ /*
+ * We need a Core GL 4.1 context in order to use the GL support in
+ * the GStreamer media widget backend, but wglCreateContextAttribsARB()
+ * may only give us the GL context version that we ask for here, and
+ * nothing more. So, if we are asking for a pre-GL 4.1 context,
+ * try to ask for a 4.1 context explicitly first. If that is not supported,
+ * then we fall back to whatever version that we were asking for (or, even a
+ * legacy context if that fails), at a price of not able to have GL support
+ * for the media GStreamer backend.
+ */
+ if (major < 4 || (major == 4 && minor < 1))
+ hglrc = create_wgl_context_with_attribs (hdc,
+ hglrc_base,
+ share,
+ flags,
+ 4,
+ 1,
+ is_legacy);
+
+ if (hglrc == NULL)
+ hglrc = create_wgl_context_with_attribs (hdc,
+ hglrc_base,
+ share,
+ flags,
+ major,
+ minor,
+ is_legacy);
+
+ /* return the legacy context we have if it could be setup properly, in case the 3.0+ context creation failed */
+ if (hglrc == NULL)
+ {
+ if (!(*is_legacy))
+ {
+ /* If we aren't using a legacy context in the beginning, try again with a compatibility profile 3.0 context */
+ hglrc = create_wgl_context_with_attribs (hdc,
+ hglrc_base,
+ share,
+ flags,
+ 0, 0,
+ is_legacy);
+
+ *is_legacy = TRUE;
+ }
+
+ if (hglrc == NULL)
+ {
+ if (!ensure_legacy_wgl_context (hdc, hglrc_base, share))
+ success = FALSE;
+ }
+
+ if (success)
+ GDK_NOTE (OPENGL, g_print ("Using legacy context as fallback\n"));
+ }
+
+gl_fail:
+
+ if (!success)
+ {
+ wglMakeCurrent (NULL, NULL);
+ wglDeleteContext (hglrc_base);
+ return NULL;
+ }
+
+ wglMakeCurrent (hdc_current, hglrc_current);
+
+ if (hglrc != NULL)
+ {
+ wglDeleteContext (hglrc_base);
+ return hglrc;
+ }
+
+ return hglrc_base;
+ }
+}
+
+static gboolean
+set_wgl_pixformat_for_hdc (HDC hdc,
+ int *best_idx,
+ GdkWin32Display *display_win32)
+{
+ gboolean already_checked = TRUE;
+ *best_idx = GetPixelFormat (hdc);
+
+ /* one is only allowed to call SetPixelFormat(), and so ChoosePixelFormat()
+ * one single time per window HDC
+ */
+ if (*best_idx == 0)
+ {
+ PIXELFORMATDESCRIPTOR pfd;
+ gboolean set_pixel_format_result = FALSE;
+
+ GDK_NOTE (OPENGL, g_print ("requesting pixel format...\n"));
+ already_checked = FALSE;
+ *best_idx = get_wgl_pfd (hdc, &pfd, display_win32);
+
+ if (*best_idx != 0)
+ set_pixel_format_result = SetPixelFormat (hdc, *best_idx, &pfd);
+
+ /* ChoosePixelFormat() or SetPixelFormat() failed, bail out */
+ if (*best_idx == 0 || !set_pixel_format_result)
+ return FALSE;
+ }
+
+ GDK_NOTE (OPENGL, g_print ("%s""requested and set pixel format: %d\n", already_checked ? "already " : "", *best_idx));
+
+ return TRUE;
+}
+
+static gboolean
+gdk_win32_gl_context_wgl_realize (GdkGLContext *context,
+ GError **error)
+{
+ GdkWin32GLContextWGL *context_wgl = GDK_WIN32_GL_CONTEXT_WGL (context);
+
+ gboolean debug_bit, compat_bit, legacy_bit;
+
+ /* request flags and specific versions for core (3.2+) WGL context */
+ int flags = 0;
+ int major = 0;
+ int minor = 0;
+ HGLRC hglrc;
+ int pixel_format;
+ HDC hdc;
+ HWND hwnd;
+
+ GdkSurface *surface = gdk_gl_context_get_surface (context);
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+ GdkGLContext *share = gdk_display_get_gl_context (display);
+
+ gdk_gl_context_get_required_version (context, &major, &minor);
+ debug_bit = gdk_gl_context_get_debug_enabled (context);
+ compat_bit = gdk_gl_context_get_forward_compatible (context);
+
+ if (surface != NULL)
+ hdc = GDK_WIN32_SURFACE (surface)->hdc;
+ else
+ hdc = display_win32->dummy_context_wgl.hdc;
+
+ /*
+ * A legacy context cannot be shared with core profile ones, so this means we
+ * must stick to a legacy context if the shared context is a legacy context
+ */
+ legacy_bit = GDK_DISPLAY_DEBUG_CHECK (display, GL_LEGACY) ?
+ TRUE :
+ share != NULL && gdk_gl_context_is_legacy (share);
+
+ if (!set_wgl_pixformat_for_hdc (hdc,
+ &pixel_format,
+ display_win32))
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_FORMAT,
+ _("No available configurations for the given pixel format"));
+
+ return FALSE;
+ }
+
+ /* if there isn't wglCreateContextAttribsARB() on WGL, use a legacy context */
+ if (!legacy_bit)
+ legacy_bit = !display_win32->hasWglARBCreateContext;
+ if (debug_bit)
+ flags |= WGL_CONTEXT_DEBUG_BIT_ARB;
+ if (compat_bit)
+ flags |= WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB;
+
+ GDK_NOTE (OPENGL,
+ g_print ("Creating %s WGL context (version:%d.%d, debug:%s, forward:%s, legacy: %s)\n",
+ compat_bit ? "core" : "compat",
+ major,
+ minor,
+ debug_bit ? "yes" : "no",
+ compat_bit ? "yes" : "no",
+ legacy_bit ? "yes" : "no"));
+
+ hglrc = create_wgl_context (hdc,
+ share,
+ flags,
+ major,
+ minor,
+ &legacy_bit,
+ display_win32->hasWglARBCreateContext);
+
+ if (hglrc == NULL)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("Unable to create a GL context"));
+ return FALSE;
+ }
+
+ GDK_NOTE (OPENGL,
+ g_print ("Created WGL context[%p], pixel_format=%d\n",
+ hglrc,
+ pixel_format));
+
+ context_wgl->wgl_context = hglrc;
+
+ /* No GLES, WGL does not support using EGL contexts */
+ gdk_gl_context_set_use_es (context, FALSE);
+
+ /* Ensure that any other context is created with a legacy bit set */
+ gdk_gl_context_set_is_legacy (context, legacy_bit);
+
+ return TRUE;
+}
+
+static gboolean
+gdk_win32_gl_context_wgl_clear_current (GdkGLContext *context)
+{
+ return wglMakeCurrent (NULL, NULL);
+}
+
+static gboolean
+gdk_win32_gl_context_wgl_make_current (GdkGLContext *context,
+ gboolean surfaceless)
+{
+ GdkWin32GLContextWGL *context_wgl = GDK_WIN32_GL_CONTEXT_WGL (context);
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
+ GdkSurface *surface = gdk_gl_context_get_surface (context);
+ HDC hdc;
+
+ if (surfaceless || surface == NULL)
+ hdc = display_win32->dummy_context_wgl.hdc;
+ else
+ hdc = GDK_WIN32_SURFACE (surface)->hdc;
+
+ if (!wglMakeCurrent (hdc, context_wgl->wgl_context))
+ return FALSE;
+
+ if (!surfaceless && display_win32->hasWglEXTSwapControl)
+ {
+ gboolean do_frame_sync = FALSE;
+
+ /* If there is compositing there is no particular need to delay
+ * the swap when drawing on the offscreen, rendering to the screen
+ * happens later anyway, and its up to the compositor to sync that
+ * to the vblank. */
+ do_frame_sync = ! gdk_display_is_composited (display);
+
+ if (do_frame_sync != context_wgl->do_frame_sync)
+ {
+ context_wgl->do_frame_sync = do_frame_sync;
+
+ wglSwapIntervalEXT (do_frame_sync ? 1 : 0);
+ }
+ }
+
+ return TRUE;
+}
+
+static void
+gdk_win32_gl_context_wgl_class_init (GdkWin32GLContextWGLClass *klass)
+{
+ GdkGLContextClass *context_class = GDK_GL_CONTEXT_CLASS (klass);
+ GdkDrawContextClass *draw_context_class = GDK_DRAW_CONTEXT_CLASS (klass);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ context_class->realize = gdk_win32_gl_context_wgl_realize;
+ context_class->make_current = gdk_win32_gl_context_wgl_make_current;
+ context_class->clear_current = gdk_win32_gl_context_wgl_clear_current;
+
+ draw_context_class->begin_frame = gdk_win32_gl_context_wgl_begin_frame;
+ draw_context_class->end_frame = gdk_win32_gl_context_wgl_end_frame;
+ gobject_class->dispose = gdk_win32_gl_context_wgl_dispose;
+}
+
+static void
+gdk_win32_gl_context_wgl_init (GdkWin32GLContextWGL *wgl_context)
+{
+}
+
+
+/**
+ * gdk_win32_display_get_wgl_version:
+ * @display: a `GdkDisplay`
+ * @major: (out): return location for the WGL major version
+ * @minor: (out): return location for the WGL minor version
+ *
+ * Retrieves the version of the WGL implementation.
+ *
+ * Returns: %TRUE if WGL is available
+ */
+gboolean
+gdk_win32_display_get_wgl_version (GdkDisplay *display,
+ int *major,
+ int *minor)
+{
+ GdkWin32Display *display_win32;
+ g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
+
+ if (!GDK_IS_WIN32_DISPLAY (display))
+ return FALSE;
+
+ display_win32 = GDK_WIN32_DISPLAY (display);
+ if (display_win32->wgl_pixel_format == 0)
+ return FALSE;
+
+ if (major != NULL)
+ *major = display_win32->gl_version / 10;
+ if (minor != NULL)
+ *minor = display_win32->gl_version % 10;
+
+ return TRUE;
+}
diff --git a/gdk/win32/gdkglcontext-win32.c b/gdk/win32/gdkglcontext-win32.c
index b3c0d8ad2b..dea1a8d4fc 100644
--- a/gdk/win32/gdkglcontext-win32.c
+++ b/gdk/win32/gdkglcontext-win32.c
@@ -45,1241 +45,14 @@
# include <epoxy/egl.h>
#endif
-G_DEFINE_TYPE (GdkWin32GLContext, gdk_win32_gl_context, GDK_TYPE_GL_CONTEXT)
-
-static void
-_gdk_win32_gl_context_dispose (GObject *gobject)
-{
- GdkGLContext *context = GDK_GL_CONTEXT (gobject);
- GdkWin32GLContext *context_win32 = GDK_WIN32_GL_CONTEXT (gobject);
- GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (gdk_gl_context_get_display (context));
- GdkSurface *surface = gdk_gl_context_get_surface (context);
-
- if (display_win32 != NULL)
- {
- if (display_win32->have_wgl)
- {
- if (wglGetCurrentContext () == context_win32->hglrc)
- wglMakeCurrent (NULL, NULL);
-
- GDK_NOTE (OPENGL, g_print ("Destroying WGL context\n"));
-
- wglDeleteContext (context_win32->hglrc);
- context_win32->hglrc = NULL;
-
- ReleaseDC (display_win32->gl_hwnd, context_win32->gl_hdc);
- }
-
-#ifdef GDK_WIN32_ENABLE_EGL
- else if (display_win32->have_egl)
- {
- if (eglGetCurrentContext () == context_win32->egl_context)
- eglMakeCurrent(display_win32->egl_disp, EGL_NO_SURFACE, EGL_NO_SURFACE,
- EGL_NO_CONTEXT);
-
- GDK_NOTE (OPENGL, g_message ("Destroying EGL (ANGLE) context"));
-
- eglDestroyContext (display_win32->egl_disp,
- context_win32->egl_context);
- context_win32->egl_context = EGL_NO_CONTEXT;
-
- ReleaseDC (display_win32->gl_hwnd, context_win32->gl_hdc);
- }
-#endif
- }
-
- G_OBJECT_CLASS (gdk_win32_gl_context_parent_class)->dispose (gobject);
-}
-
-#ifdef GDK_WIN32_ENABLE_EGL
-static gboolean
-_get_is_egl_force_redraw (GdkSurface *surface)
-{
- /* We only need to call gdk_window_invalidate_rect () if necessary */
- if (surface->gl_paint_context != NULL && gdk_gl_context_get_use_es (surface->gl_paint_context))
- {
- GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
-
- return impl->egl_force_redraw_all;
- }
- return FALSE;
-}
-
-static void
-_reset_egl_force_redraw (GdkSurface *surface)
-{
- if (surface->gl_paint_context != NULL && gdk_gl_context_get_use_es (surface->gl_paint_context))
- {
- GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
-
- if (impl->egl_force_redraw_all)
- impl->egl_force_redraw_all = FALSE;
- }
-}
-#endif
-
-static void
-gdk_win32_gl_context_end_frame (GdkDrawContext *draw_context,
- cairo_region_t *painted)
-{
- GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
- GdkWin32GLContext *context_win32 = GDK_WIN32_GL_CONTEXT (context);
- GdkSurface *surface = gdk_gl_context_get_surface (context);
- GdkWin32Display *display = (GDK_WIN32_DISPLAY (gdk_gl_context_get_display (context)));
- cairo_rectangle_int_t whole_window;
-
- GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_parent_class)->end_frame (draw_context, painted);
- if (gdk_gl_context_get_shared_context (context))
- return;
-
- gdk_gl_context_make_current (context);
- whole_window = (GdkRectangle) { 0, 0, gdk_surface_get_width (surface), gdk_surface_get_height (surface) };
-
- if (!gdk_gl_context_get_use_es (context))
- {
- gboolean can_wait = display->hasWglOMLSyncControl;
-
- if (context_win32->do_frame_sync)
- {
- glFinish ();
-
- if (can_wait)
- {
- gint64 ust, msc, sbc;
-
- wglGetSyncValuesOML (context_win32->gl_hdc, &ust, &msc, &sbc);
- wglWaitForMscOML (context_win32->gl_hdc,
- 0,
- 2,
- (msc + 1) % 2,
- &ust, &msc, &sbc);
- }
- }
-
- SwapBuffers (context_win32->gl_hdc);
- }
-#ifdef GDK_WIN32_ENABLE_EGL
- else
- {
- EGLSurface egl_surface = _gdk_win32_surface_get_egl_surface (surface, context_win32->egl_config, FALSE);
- gboolean force_egl_redraw_all = _get_is_egl_force_redraw (surface);
-
- if (force_egl_redraw_all)
- {
- GdkRectangle rect = {0, 0, gdk_surface_get_width (surface), gdk_surface_get_height (surface)};
-
- /* We need to do gdk_window_invalidate_rect() so that we don't get glitches after maximizing or
- * restoring or using aerosnap
- */
- gdk_surface_invalidate_rect (surface, &rect);
- _reset_egl_force_redraw (surface);
- }
-
- eglSwapBuffers (display->egl_disp, egl_surface);
- }
-#endif
-}
-
-static void
-gdk_win32_gl_context_begin_frame (GdkDrawContext *draw_context,
- cairo_region_t *update_area)
-{
- GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
- GdkSurface *surface;
-
- surface = gdk_gl_context_get_surface (context);
-
- gdk_win32_surface_handle_queued_move_resize (draw_context);
-
- GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_parent_class)->begin_frame (draw_context, update_area);
-}
-
-typedef struct
-{
- ATOM wc_atom;
- HWND hwnd;
- HDC hdc;
- HGLRC hglrc;
- gboolean inited;
-} GdkWGLDummy;
-
-static void
-_destroy_dummy_gl_context (GdkWGLDummy dummy)
-{
- if (dummy.hglrc != NULL)
- {
- wglDeleteContext (dummy.hglrc);
- dummy.hglrc = NULL;
- }
- if (dummy.hdc != NULL)
- {
- DeleteDC (dummy.hdc);
- dummy.hdc = NULL;
- }
- if (dummy.hwnd != NULL)
- {
- DestroyWindow (dummy.hwnd);
- dummy.hwnd = NULL;
- }
- if (dummy.wc_atom != 0)
- {
- UnregisterClass (MAKEINTATOM (dummy.wc_atom), GetModuleHandle (NULL));
- dummy.wc_atom = 0;
- }
- dummy.inited = FALSE;
-}
-
-/* Yup, we need to create a dummy window for the dummy WGL context */
-static void
-_get_dummy_window_hwnd (GdkWGLDummy *dummy)
-{
- WNDCLASSEX dummy_wc;
-
- memset (&dummy_wc, 0, sizeof (WNDCLASSEX));
-
- dummy_wc.cbSize = sizeof( WNDCLASSEX );
- dummy_wc.style = CS_OWNDC;
- dummy_wc.lpfnWndProc = (WNDPROC) DefWindowProc;
- dummy_wc.cbClsExtra = 0;
- dummy_wc.cbWndExtra = 0;
- dummy_wc.hInstance = GetModuleHandle( NULL );
- dummy_wc.hIcon = 0;
- dummy_wc.hCursor = NULL;
- dummy_wc.hbrBackground = 0;
- dummy_wc.lpszMenuName = 0;
- dummy_wc.lpszClassName = "dummy";
- dummy_wc.hIconSm = 0;
-
- dummy->wc_atom = RegisterClassEx (&dummy_wc);
-
- dummy->hwnd =
- CreateWindowEx (WS_EX_APPWINDOW,
- MAKEINTATOM (dummy->wc_atom),
- "",
- WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
- 0,
- 0,
- 0,
- 0,
- NULL,
- NULL,
- GetModuleHandle (NULL),
- NULL);
-}
-
-static int
-_gdk_init_dummy_context (GdkWGLDummy *dummy);
-
-#define PIXEL_ATTRIBUTES 17
-
-static int
-_get_wgl_pfd (HDC hdc,
- PIXELFORMATDESCRIPTOR *pfd,
- GdkWin32Display *display)
-{
- int best_pf = 0;
-
- pfd->nSize = sizeof (PIXELFORMATDESCRIPTOR);
-
- if (display != NULL && display->hasWglARBPixelFormat)
- {
- GdkWGLDummy dummy;
- UINT num_formats;
- int colorbits = GetDeviceCaps (hdc, BITSPIXEL);
- guint extra_fields = 1;
- int i = 0;
- int pixelAttribs[PIXEL_ATTRIBUTES];
-
- /* Save up the HDC and HGLRC that we are currently using, to restore back to it when we are done here */
- HDC hdc_current = wglGetCurrentDC ();
- HGLRC hglrc_current = wglGetCurrentContext ();
-
- if (display->hasWglARBmultisample)
- {
- /* 2 pairs of values needed for multisampling/AA support */
- extra_fields += 2 * 2;
- }
-
- /* Update PIXEL_ATTRIBUTES above if any groups are added here! */
- /* one group contains a value pair for both pixelAttribs and pixelAttribsNoAlpha */
- pixelAttribs[i] = WGL_DRAW_TO_WINDOW_ARB;
- pixelAttribs[i++] = GL_TRUE;
-
- pixelAttribs[i++] = WGL_SUPPORT_OPENGL_ARB;
- pixelAttribs[i++] = GL_TRUE;
-
- pixelAttribs[i++] = WGL_DOUBLE_BUFFER_ARB;
- pixelAttribs[i++] = GL_TRUE;
-
- pixelAttribs[i++] = WGL_ACCELERATION_ARB;
- pixelAttribs[i++] = WGL_FULL_ACCELERATION_ARB;
-
- pixelAttribs[i++] = WGL_PIXEL_TYPE_ARB;
- pixelAttribs[i++] = WGL_TYPE_RGBA_ARB;
-
- pixelAttribs[i++] = WGL_COLOR_BITS_ARB;
- pixelAttribs[i++] = colorbits;
-
- /* end of "Update PIXEL_ATTRIBUTES above if any groups are added here!" */
-
- if (display->hasWglARBmultisample)
- {
- pixelAttribs[i++] = WGL_SAMPLE_BUFFERS_ARB;
- pixelAttribs[i++] = 1;
-
- pixelAttribs[i++] = WGL_SAMPLES_ARB;
- pixelAttribs[i++] = 8;
- }
-
- pixelAttribs[i++] = 0; /* end of pixelAttribs */
-
- memset (&dummy, 0, sizeof (GdkWGLDummy));
-
- /* acquire and cache dummy Window (HWND & HDC) and
- * dummy GL Context, we need it for wglChoosePixelFormatARB()
- */
- best_pf = _gdk_init_dummy_context (&dummy);
-
- if (best_pf == 0 || !wglMakeCurrent (dummy.hdc, dummy.hglrc))
- {
- wglMakeCurrent (hdc_current, hglrc_current);
- return 0;
- }
-
- wglChoosePixelFormatARB (hdc,
- pixelAttribs,
- NULL,
- 1,
- &best_pf,
- &num_formats);
-
- /* Go back to the HDC that we were using, since we are done with the dummy HDC and GL Context */
- wglMakeCurrent (hdc_current, hglrc_current);
- _destroy_dummy_gl_context (dummy);
- }
- else
- {
- pfd->nVersion = 1;
- pfd->dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER;
- pfd->iPixelType = PFD_TYPE_RGBA;
- pfd->cColorBits = GetDeviceCaps (hdc, BITSPIXEL);
- pfd->cAlphaBits = 8;
- pfd->dwLayerMask = PFD_MAIN_PLANE;
-
- best_pf = ChoosePixelFormat (hdc, pfd);
- }
-
- return best_pf;
-}
-
-/* in WGL, for many OpenGL items, we need a dummy WGL context, so create
- * one and cache it for later use
- */
-static int
-_gdk_init_dummy_context (GdkWGLDummy *dummy)
-{
- PIXELFORMATDESCRIPTOR pfd;
- gboolean set_pixel_format_result = FALSE;
- int best_idx = 0;
-
- _get_dummy_window_hwnd (dummy);
-
- dummy->hdc = GetDC (dummy->hwnd);
- memset (&pfd, 0, sizeof (PIXELFORMATDESCRIPTOR));
-
- best_idx = _get_wgl_pfd (dummy->hdc, &pfd, NULL);
-
- if (best_idx != 0)
- set_pixel_format_result = SetPixelFormat (dummy->hdc,
- best_idx,
- &pfd);
-
- if (best_idx == 0 || !set_pixel_format_result)
- return 0;
-
- dummy->hglrc = wglCreateContext (dummy->hdc);
- if (dummy->hglrc == NULL)
- return 0;
-
- dummy->inited = TRUE;
-
- return best_idx;
-}
-
-#ifdef GDK_WIN32_ENABLE_EGL
-
-#ifndef EGL_PLATFORM_ANGLE_ANGLE
-#define EGL_PLATFORM_ANGLE_ANGLE 0x3202
-#endif
-
-#ifndef EGL_PLATFORM_ANGLE_TYPE_ANGLE
-#define EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3203
-#endif
-
-#ifndef EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE
-#define EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3208
-#endif
-
-static EGLDisplay
-_gdk_win32_get_egl_display (GdkWin32Display *display)
-{
- EGLDisplay disp;
-
- if (epoxy_has_egl_extension (NULL, "EGL_EXT_platform_base"))
- {
- PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
- if (getPlatformDisplay)
- {
- EGLint disp_attr[] = {EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_NONE};
-
- disp = getPlatformDisplay (EGL_PLATFORM_ANGLE_ANGLE, display->hdc_egl_temp, disp_attr);
-
- if (disp != EGL_NO_DISPLAY)
- return disp;
- }
- }
- return eglGetDisplay (display->hdc_egl_temp);
-}
-#endif
-
-static gboolean
-_gdk_win32_display_init_gl (GdkDisplay *display)
-{
- GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
- int best_idx = 0;
-
- gboolean disable_wgl = FALSE;
-
-#ifdef GDK_WIN32_ENABLE_EGL
- EGLDisplay egl_disp;
-
- disable_wgl = GDK_DISPLAY_DEBUG_CHECK (display, GL_GLES) ||
- display_win32->running_on_arm64;
-#endif
-
- if (display_win32->have_wgl
-#ifdef GDK_WIN32_ENABLE_EGL
- || display_win32->have_egl
-#endif
- )
- return TRUE;
-
- if (!disable_wgl)
- {
- GdkWGLDummy dummy;
- memset (&dummy, 0, sizeof (GdkWGLDummy));
-
- /* acquire and cache dummy Window (HWND & HDC) and
- * dummy GL Context, it is used to query functions
- * and used for other stuff as well
- */
- best_idx = _gdk_init_dummy_context (&dummy);
-
- if (best_idx == 0 || !wglMakeCurrent (dummy.hdc, dummy.hglrc))
- return FALSE;
-
- display_win32->have_wgl = TRUE;
- display_win32->gl_version = epoxy_gl_version ();
-
- display_win32->hasWglARBCreateContext =
- epoxy_has_wgl_extension (dummy.hdc, "WGL_ARB_create_context");
- display_win32->hasWglEXTSwapControl =
- epoxy_has_wgl_extension (dummy.hdc, "WGL_EXT_swap_control");
- display_win32->hasWglOMLSyncControl =
- epoxy_has_wgl_extension (dummy.hdc, "WGL_OML_sync_control");
- display_win32->hasWglARBPixelFormat =
- epoxy_has_wgl_extension (dummy.hdc, "WGL_ARB_pixel_format");
- display_win32->hasWglARBmultisample =
- epoxy_has_wgl_extension (dummy.hdc, "WGL_ARB_multisample");
-
- GDK_NOTE (OPENGL,
- g_print ("WGL API version %d.%d found\n"
- " - Vendor: %s\n"
- " - Checked extensions:\n"
- "\t* WGL_ARB_pixel_format: %s\n"
- "\t* WGL_ARB_create_context: %s\n"
- "\t* WGL_EXT_swap_control: %s\n"
- "\t* WGL_OML_sync_control: %s\n"
- "\t* WGL_ARB_multisample: %s\n",
- display_win32->gl_version / 10,
- display_win32->gl_version % 10,
- glGetString (GL_VENDOR),
- display_win32->hasWglARBPixelFormat ? "yes" : "no",
- display_win32->hasWglARBCreateContext ? "yes" : "no",
- display_win32->hasWglEXTSwapControl ? "yes" : "no",
- display_win32->hasWglOMLSyncControl ? "yes" : "no",
- display_win32->hasWglARBmultisample ? "yes" : "no"));
-
- wglMakeCurrent (NULL, NULL);
- _destroy_dummy_gl_context (dummy);
- }
-#ifdef GDK_WIN32_ENABLE_EGL
- else
- {
- egl_disp = _gdk_win32_get_egl_display (display_win32);
-
- if (egl_disp == EGL_NO_DISPLAY || !eglInitialize (egl_disp, NULL, NULL))
- {
- if (egl_disp != EGL_NO_DISPLAY)
- {
- eglTerminate (egl_disp);
- egl_disp = EGL_NO_DISPLAY;
- }
-
- return FALSE;
- }
-
-
- display_win32->egl_disp = egl_disp;
- display_win32->have_egl = TRUE;
- display_win32->egl_version = epoxy_egl_version (egl_disp);
-
- eglBindAPI(EGL_OPENGL_ES_API);
-
- display_win32->hasEglSurfacelessContext =
- epoxy_has_egl_extension (egl_disp, "EGL_KHR_surfaceless_context");
-
- GDK_NOTE (OPENGL,
- g_print ("EGL API version %d.%d found\n"
- " - Vendor: %s\n"
- " - Checked extensions:\n"
- "\t* EGL_KHR_surfaceless_context: %s\n",
- display_win32->egl_version / 10,
- display_win32->egl_version % 10,
- eglQueryString (display_win32->egl_disp, EGL_VENDOR),
- display_win32->hasEglSurfacelessContext ? "yes" : "no"));
- }
-#endif
-
- return TRUE;
-}
-
-/**
- * gdk_win32_display_get_egl_display:
- * @display: (type GdkWin32Display): a Win32 display
- *
- * Retrieves the EGL display connection object for the given GDK display.
- *
- * Returns: (nullable): the EGL display
- */
-gpointer
-gdk_win32_display_get_egl_display (GdkDisplay *display)
-{
- GdkWin32Display *display_win32;
-
- g_return_val_if_fail (GDK_IS_WIN32_DISPLAY (display), NULL);
-
-#ifdef GDK_WIN32_ENABLE_EGL
- if (!_gdk_win32_display_init_gl (display))
- return NULL;
-
- display_win32 = GDK_WIN32_DISPLAY (display);
-
- if (display_win32->have_wgl)
- return NULL;
-
- return display_win32->egl_disp;
-#else
- /* no EGL support */
- return NULL;
-#endif
-}
-
-/* Setup the legacy context after creating it */
-static gboolean
-_ensure_legacy_gl_context (HDC hdc,
- HGLRC hglrc_legacy,
- GdkGLContext *share)
-{
- GdkWin32GLContext *context_win32;
-
- if (!wglMakeCurrent (hdc, hglrc_legacy))
- return FALSE;
-
- if (share != NULL)
- {
- context_win32 = GDK_WIN32_GL_CONTEXT (share);
-
- return wglShareLists (hglrc_legacy, context_win32->hglrc);
- }
-
- return TRUE;
-}
-
-static HGLRC
-_create_gl_context_with_attribs (HDC hdc,
- HGLRC hglrc_base,
- GdkGLContext *share,
- int flags,
- int major,
- int minor,
- gboolean *is_legacy)
-{
- HGLRC hglrc;
- GdkWin32GLContext *context_win32;
-
- /* if we have wglCreateContextAttribsARB(), create a
- * context with the compatibility profile if a legacy
- * context is requested, or when we go into fallback mode
- */
- int profile = *is_legacy ? WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB :
- WGL_CONTEXT_CORE_PROFILE_BIT_ARB;
-
- int attribs[] = {
- WGL_CONTEXT_PROFILE_MASK_ARB, profile,
- WGL_CONTEXT_MAJOR_VERSION_ARB, *is_legacy ? 3 : major,
- WGL_CONTEXT_MINOR_VERSION_ARB, *is_legacy ? 0 : minor,
- WGL_CONTEXT_FLAGS_ARB, flags,
- 0
- };
-
- if (share != NULL)
- context_win32 = GDK_WIN32_GL_CONTEXT (share);
-
- hglrc = wglCreateContextAttribsARB (hdc,
- share != NULL ? context_win32->hglrc : NULL,
- attribs);
-
- return hglrc;
-}
-
-static HGLRC
-_create_gl_context (HDC hdc,
- GdkGLContext *share,
- int flags,
- int major,
- int minor,
- gboolean *is_legacy,
- gboolean hasWglARBCreateContext)
-{
- /* We need a legacy context for *all* cases */
- HGLRC hglrc_base = wglCreateContext (hdc);
- gboolean success = TRUE;
-
- /* Save up the HDC and HGLRC that we are currently using, to restore back to it when we are done here */
- HDC hdc_current = wglGetCurrentDC ();
- HGLRC hglrc_current = wglGetCurrentContext ();
-
- /* if we have no wglCreateContextAttribsARB(), return the legacy context when all is set */
- if (*is_legacy && !hasWglARBCreateContext)
- {
- if (_ensure_legacy_gl_context (hdc, hglrc_base, share))
- {
- wglMakeCurrent (hdc_current, hglrc_current);
- return hglrc_base;
- }
-
- success = FALSE;
- goto gl_fail;
- }
- else
- {
- HGLRC hglrc = NULL;
-
- if (!wglMakeCurrent (hdc, hglrc_base))
- {
- success = FALSE;
- goto gl_fail;
- }
-
- /*
- * We need a Core GL 4.1 context in order to use the GL support in
- * the GStreamer media widget backend, but wglCreateContextAttribsARB()
- * may only give us the GL context version that we ask for here, and
- * nothing more. So, if we are asking for a pre-GL 4.1 context,
- * try to ask for a 4.1 context explicitly first. If that is not supported,
- * then we fall back to whatever version that we were asking for (or, even a
- * legacy context if that fails), at a price of not able to have GL support
- * for the media GStreamer backend.
- */
- if (major < 4 || (major == 4 && minor < 1))
- hglrc = _create_gl_context_with_attribs (hdc,
- hglrc_base,
- share,
- flags,
- 4,
- 1,
- is_legacy);
-
- if (hglrc == NULL)
- hglrc = _create_gl_context_with_attribs (hdc,
- hglrc_base,
- share,
- flags,
- major,
- minor,
- is_legacy);
-
- /* return the legacy context we have if it could be setup properly, in case the 3.0+ context creation failed */
- if (hglrc == NULL)
- {
- if (!(*is_legacy))
- {
- /* If we aren't using a legacy context in the beginning, try again with a compatibility profile 3.0 context */
- hglrc = _create_gl_context_with_attribs (hdc,
- hglrc_base,
- share,
- flags,
- 0, 0,
- is_legacy);
-
- *is_legacy = TRUE;
- }
-
- if (hglrc == NULL)
- {
- if (!_ensure_legacy_gl_context (hdc, hglrc_base, share))
- success = FALSE;
- }
-
- if (success)
- GDK_NOTE (OPENGL, g_print ("Using legacy context as fallback\n"));
- }
-
-gl_fail:
-
- if (!success)
- {
- wglMakeCurrent (NULL, NULL);
- wglDeleteContext (hglrc_base);
- return NULL;
- }
-
- wglMakeCurrent (hdc_current, hglrc_current);
-
- if (hglrc != NULL)
- {
- wglDeleteContext (hglrc_base);
- return hglrc;
- }
-
- return hglrc_base;
- }
-}
-
-static gboolean
-_set_pixformat_for_hdc (HDC hdc,
- int *best_idx,
- GdkWin32Display *display)
-{
- gboolean already_checked = TRUE;
- *best_idx = GetPixelFormat (hdc);
-
- /* one is only allowed to call SetPixelFormat(), and so ChoosePixelFormat()
- * one single time per window HDC
- */
- if (*best_idx == 0)
- {
- PIXELFORMATDESCRIPTOR pfd;
- gboolean set_pixel_format_result = FALSE;
-
- GDK_NOTE (OPENGL, g_print ("requesting pixel format...\n"));
- already_checked = FALSE;
- *best_idx = _get_wgl_pfd (hdc, &pfd, display);
-
- if (*best_idx != 0)
- set_pixel_format_result = SetPixelFormat (hdc, *best_idx, &pfd);
-
- /* ChoosePixelFormat() or SetPixelFormat() failed, bail out */
- if (*best_idx == 0 || !set_pixel_format_result)
- return FALSE;
- }
-
- GDK_NOTE (OPENGL, g_print ("%s""requested and set pixel format: %d\n", already_checked ? "already " : "", *best_idx));
-
- return TRUE;
-}
-
-#ifdef GDK_WIN32_ENABLE_EGL
-
-#define MAX_EGL_ATTRS 30
-
-static gboolean
-find_eglconfig_for_window (GdkWin32Display *display,
- EGLConfig *egl_config_out,
- EGLint *min_swap_interval_out,
- GError **error)
-{
- EGLint attrs[MAX_EGL_ATTRS];
- EGLint count;
- EGLConfig *configs, chosen_config;
-
- int i = 0;
-
- EGLDisplay egl_disp = display->egl_disp;
-
- attrs[i++] = EGL_CONFORMANT;
- attrs[i++] = EGL_OPENGL_ES2_BIT;
- attrs[i++] = EGL_SURFACE_TYPE;
- attrs[i++] = EGL_WINDOW_BIT;
-
- attrs[i++] = EGL_COLOR_BUFFER_TYPE;
- attrs[i++] = EGL_RGB_BUFFER;
-
- attrs[i++] = EGL_RED_SIZE;
- attrs[i++] = 1;
- attrs[i++] = EGL_GREEN_SIZE;
- attrs[i++] = 1;
- attrs[i++] = EGL_BLUE_SIZE;
- attrs[i++] = 1;
- attrs[i++] = EGL_ALPHA_SIZE;
- attrs[i++] = 1;
-
- attrs[i++] = EGL_NONE;
- g_assert (i < MAX_EGL_ATTRS);
-
- if (!eglChooseConfig (display->egl_disp, attrs, NULL, 0, &count) || count < 1)
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_UNSUPPORTED_FORMAT,
- _("No available configurations for the given pixel format"));
- return FALSE;
- }
-
- configs = g_new (EGLConfig, count);
-
- if (!eglChooseConfig (display->egl_disp, attrs, configs, count, &count) || count < 1)
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_UNSUPPORTED_FORMAT,
- _("No available configurations for the given pixel format"));
- return FALSE;
- }
-
- /* Pick first valid configuration i guess? */
- chosen_config = configs[0];
-
- if (!eglGetConfigAttrib (display->egl_disp, chosen_config,
- EGL_MIN_SWAP_INTERVAL, min_swap_interval_out))
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- "Could not retrieve the minimum swap interval");
- g_free (configs);
- return FALSE;
- }
-
- if (egl_config_out != NULL)
- *egl_config_out = chosen_config;
-
- g_free (configs);
-
- return TRUE;
-}
-
-#define N_EGL_ATTRS 16
-
-static EGLContext
-_create_egl_context (EGLDisplay display,
- EGLConfig config,
- GdkGLContext *share,
- int flags,
- int major,
- int minor,
- gboolean *is_legacy)
-{
- EGLContext ctx;
- EGLint context_attribs[N_EGL_ATTRS];
- int i = 0;
-
- /* ANGLE does not support the GL_OES_vertex_array_object extension, so we need to use ES3 directly */
- context_attribs[i++] = EGL_CONTEXT_CLIENT_VERSION;
- context_attribs[i++] = 3;
-
- /* Specify the flags */
- context_attribs[i++] = EGL_CONTEXT_FLAGS_KHR;
- context_attribs[i++] = flags;
-
- context_attribs[i++] = EGL_NONE;
- g_assert (i < N_EGL_ATTRS);
-
- ctx = eglCreateContext (display,
- config,
- share != NULL ? GDK_WIN32_GL_CONTEXT (share)->egl_context
- : EGL_NO_CONTEXT,
- context_attribs);
-
- if (ctx != EGL_NO_CONTEXT)
- GDK_NOTE (OPENGL, g_message ("Created EGL context[%p]", ctx));
-
- return ctx;
-}
-#endif /* GDK_WIN32_ENABLE_EGL */
-
-static gboolean
-gdk_win32_gl_context_realize (GdkGLContext *context,
- GError **error)
-{
- GdkGLContext *share = gdk_gl_context_get_shared_context (context);
- GdkGLContext *shared_data_context;
- GdkWin32GLContext *context_win32 = GDK_WIN32_GL_CONTEXT (context);
-
- gboolean debug_bit, compat_bit, legacy_bit;
- gboolean use_es = FALSE;
-
- /* request flags and specific versions for core (3.2+) WGL context */
- int flags = 0;
- int major = 0;
- int minor = 0;
-
- GdkSurface *surface = gdk_gl_context_get_surface (context);
- GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
- GdkDisplay *display = gdk_surface_get_display (surface);
- GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display);
-
- gdk_gl_context_get_required_version (context, &major, &minor);
- debug_bit = gdk_gl_context_get_debug_enabled (context);
- compat_bit = gdk_gl_context_get_forward_compatible (context);
- shared_data_context = gdk_surface_get_shared_data_gl_context (surface);
-
- /*
- * A legacy context cannot be shared with core profile ones, so this means we
- * must stick to a legacy context if the shared context is a legacy context
- */
- if (share != NULL && gdk_gl_context_is_legacy (share))
- legacy_bit = TRUE;
-
- /* if GDK_GL_LEGACY is set, we default to a legacy context */
- legacy_bit = g_getenv ("GDK_GL_LEGACY") != NULL;
-
- use_es = GDK_DISPLAY_DEBUG_CHECK (display, GL_GLES) ||
- (share != NULL && gdk_gl_context_get_use_es (share));
-
- if (win32_display->have_wgl || !use_es)
- {
- /* These are the real WGL context items that we will want to use later */
- HGLRC hglrc;
- int pixel_format;
-
- if (!_set_pixformat_for_hdc (context_win32->gl_hdc,
- &pixel_format,
- win32_display))
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_UNSUPPORTED_FORMAT,
- _("No available configurations for the given pixel format"));
-
- return FALSE;
- }
-
- /* if there isn't wglCreateContextAttribsARB() on WGL, use a legacy context */
- if (!legacy_bit)
- legacy_bit = !win32_display->hasWglARBCreateContext;
- if (debug_bit)
- flags |= WGL_CONTEXT_DEBUG_BIT_ARB;
- if (compat_bit)
- flags |= WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB;
-
- GDK_NOTE (OPENGL,
- g_print ("Creating %s WGL context (version:%d.%d, debug:%s, forward:%s, legacy: %s)\n",
- compat_bit ? "core" : "compat",
- major,
- minor,
- debug_bit ? "yes" : "no",
- compat_bit ? "yes" : "no",
- legacy_bit ? "yes" : "no"));
-
- hglrc = _create_gl_context (context_win32->gl_hdc,
- share ? share : shared_data_context,
- flags,
- major,
- minor,
- &legacy_bit,
- win32_display->hasWglARBCreateContext);
-
- if (hglrc == NULL)
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- _("Unable to create a GL context"));
- return FALSE;
- }
-
- GDK_NOTE (OPENGL,
- g_print ("Created WGL context[%p], pixel_format=%d\n",
- hglrc,
- pixel_format));
-
- context_win32->hglrc = hglrc;
- }
-
-#ifdef GDK_WIN32_ENABLE_EGL
- else
- {
- EGLContext egl_context;
- EGLContext ctx;
-
- if (debug_bit)
- flags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
- if (compat_bit)
- flags |= EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR;
-
- GDK_NOTE (OPENGL, g_message ("Creating EGL context version %d.%d (debug:%s, forward:%s, legacy:%s)",
- major, minor,
- debug_bit ? "yes" : "no",
- compat_bit ? "yes" : "no",
- legacy_bit ? "yes" : "no"));
-
- ctx = _create_egl_context (win32_display->egl_disp,
- context_win32->egl_config,
- share ? share : shared_data_context,
- flags,
- major,
- minor,
- &legacy_bit);
-
- if (ctx == EGL_NO_CONTEXT)
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- _("Unable to create a GL context"));
- return FALSE;
- }
-
- GDK_NOTE (OPENGL,
- g_print ("Created EGL context[%p]\n",
- ctx));
-
- context_win32->egl_context = ctx;
- use_es = TRUE;
- }
-#endif
-
- /* set whether we are using GLES */
- gdk_gl_context_set_use_es (context, use_es);
-
- /* Ensure that any other context is created with a legacy bit set */
- gdk_gl_context_set_is_legacy (context, legacy_bit);
-
- return TRUE;
-}
+G_DEFINE_ABSTRACT_TYPE (GdkWin32GLContext, gdk_win32_gl_context, GDK_TYPE_GL_CONTEXT)
static void
gdk_win32_gl_context_class_init (GdkWin32GLContextClass *klass)
{
- GdkGLContextClass *gl_context_class = GDK_GL_CONTEXT_CLASS(klass);
- GdkDrawContextClass *draw_context_class = GDK_DRAW_CONTEXT_CLASS(klass);
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gl_context_class->realize = gdk_win32_gl_context_realize;
-
- draw_context_class->begin_frame = gdk_win32_gl_context_begin_frame;
- draw_context_class->end_frame = gdk_win32_gl_context_end_frame;
-
- gobject_class->dispose = _gdk_win32_gl_context_dispose;
}
static void
gdk_win32_gl_context_init (GdkWin32GLContext *self)
{
}
-
-GdkGLContext *
-_gdk_win32_surface_create_gl_context (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error)
-{
- GdkDisplay *display = gdk_surface_get_display (surface);
- GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
- GdkWin32GLContext *context = NULL;
-
- /* Acquire and store up the Windows-specific HWND and HDC */
-/* HWND hwnd;*/
- HDC hdc;
-
-#ifdef GDK_WIN32_ENABLE_EGL
- EGLContext egl_context;
- EGLConfig config;
-#endif
-
- display_win32->gl_hwnd = GDK_SURFACE_HWND (surface);
- hdc = GetDC (display_win32->gl_hwnd);
-
-#ifdef GDK_WIN32_ENABLE_EGL
- /* display_win32->hdc_egl_temp should *not* be destroyed here! It is destroyed at dispose()! */
- display_win32->hdc_egl_temp = hdc;
-#endif
-
- if (!_gdk_win32_display_init_gl (display))
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- _("No GL implementation is available"));
- return NULL;
- }
-
-#if 0
- if (display_win32->have_wgl)
- {
- hwnd = GDK_SURFACE_HWND (surface);
- hdc = GetDC (hwnd);
-
- display_win32->gl_hwnd = hwnd;
- }
-#endif
-
-#ifdef GDK_WIN32_ENABLE_EGL
- if (display_win32->have_egl && !find_eglconfig_for_window (display_win32, &config,
- &display_win32->egl_min_swap_interval, error))
- return NULL;
-#endif
-
- context = g_object_new (GDK_TYPE_WIN32_GL_CONTEXT,
- "surface", surface,
- "shared-context", share,
- NULL);
-
- context->gl_hdc = hdc;
- context->is_attached = attached;
-
-#ifdef GDK_WIN32_ENABLE_EGL
- if (display_win32->have_egl)
- context->egl_config = config;
-#endif
-
- return GDK_GL_CONTEXT (context);
-}
-
-gboolean
-_gdk_win32_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context)
-{
- GdkWin32GLContext *context_win32;
- GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display);
- GdkSurface *surface;
-
- gboolean do_frame_sync = FALSE;
-
- if (context == NULL)
- {
-#ifdef GDK_WIN32_ENABLE_EGL
- if (display_win32->egl_disp != EGL_NO_DISPLAY)
- eglMakeCurrent(display_win32->egl_disp,
- EGL_NO_SURFACE,
- EGL_NO_SURFACE,
- EGL_NO_CONTEXT);
- else
-#endif
- wglMakeCurrent(NULL, NULL);
-
- return TRUE;
- }
-
- context_win32 = GDK_WIN32_GL_CONTEXT (context);
-
- if (!gdk_gl_context_get_use_es (context))
- {
- if (!wglMakeCurrent (context_win32->gl_hdc, context_win32->hglrc))
- {
- GDK_NOTE (OPENGL,
- g_print ("Making WGL context current failed\n"));
- return FALSE;
- }
-
- if (context_win32->is_attached && display_win32->hasWglEXTSwapControl)
- {
- surface = gdk_gl_context_get_surface (context);
-
- /* If there is compositing there is no particular need to delay
- * the swap when drawing on the offscreen, rendering to the screen
- * happens later anyway, and its up to the compositor to sync that
- * to the vblank. */
- display = gdk_surface_get_display (surface);
- do_frame_sync = ! gdk_display_is_composited (display);
-
- if (do_frame_sync != context_win32->do_frame_sync)
- {
- context_win32->do_frame_sync = do_frame_sync;
-
- if (do_frame_sync)
- wglSwapIntervalEXT (1);
- else
- wglSwapIntervalEXT (0);
- }
- }
- }
-
-#ifdef GDK_WIN32_ENABLE_EGL
- else
- {
- EGLSurface egl_surface;
-
- surface = gdk_gl_context_get_surface (context);
-
- if (context_win32->is_attached)
- egl_surface = _gdk_win32_surface_get_egl_surface (surface, context_win32->egl_config, FALSE);
- else
- {
- if (display_win32->hasEglSurfacelessContext)
- egl_surface = EGL_NO_SURFACE;
- else
- egl_surface = _gdk_win32_surface_get_egl_surface (surface, context_win32->egl_config, TRUE);
- }
-
- if (!eglMakeCurrent (display_win32->egl_disp,
- egl_surface,
- egl_surface,
- context_win32->egl_context))
- {
- g_warning ("eglMakeCurrent failed");
- return FALSE;
- }
-
- if (display_win32->egl_min_swap_interval == 0)
- eglSwapInterval (display_win32->egl_disp, 0);
- else
- g_debug ("Can't disable GL swap interval");
- }
-#endif
-
- return TRUE;
-}
-
-/**
- * gdk_win32_display_get_wgl_version:
- * @display: a `GdkDisplay`
- * @major: (out): return location for the WGL major version
- * @minor: (out): return location for the WGL minor version
- *
- * Retrieves the version of the WGL implementation.
- *
- * Returns: %TRUE if WGL is available
- */
-gboolean
-gdk_win32_display_get_wgl_version (GdkDisplay *display,
- int *major,
- int *minor)
-{
- g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
-
- if (!GDK_IS_WIN32_DISPLAY (display))
- return FALSE;
-
- if (!_gdk_win32_display_init_gl (display))
- return FALSE;
-
- if (major != NULL)
- *major = GDK_WIN32_DISPLAY (display)->gl_version / 10;
- if (minor != NULL)
- *minor = GDK_WIN32_DISPLAY (display)->gl_version % 10;
-
- return TRUE;
-}
-
-void
-_gdk_win32_surface_invalidate_egl_framebuffer (GdkSurface *surface)
-{
-/* If we are using ANGLE, we need to force redraw of the whole Window and its child windows
- * as we need to re-acquire the EGL surfaces that we rendered to upload to Cairo explicitly,
- * using gdk_window_invalidate_rect (), when we maximize or restore or use aerosnap
- */
-#ifdef GDK_WIN32_ENABLE_EGL
- if (surface->gl_paint_context != NULL && gdk_gl_context_get_use_es (surface->gl_paint_context))
- {
- GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
-
- impl->egl_force_redraw_all = TRUE;
- }
-#endif
-}
diff --git a/gdk/win32/gdkglcontext-win32.h b/gdk/win32/gdkglcontext-win32.h
index 3249d4c6db..f8ba71159f 100644
--- a/gdk/win32/gdkglcontext-win32.h
+++ b/gdk/win32/gdkglcontext-win32.h
@@ -35,24 +35,13 @@
G_BEGIN_DECLS
+#define GDK_WIN32_GL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_GL_CONTEXT, GdkWin32GLContextClass))
+#define GDK_WIN32_GL_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_GL_CONTEXT, GdkWin32GLContextClass))
+#define GDK_WIN32_IS_GL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_GL_CONTEXT))
+
struct _GdkWin32GLContext
{
GdkGLContext parent_instance;
-
- /* WGL Context Items */
- HGLRC hglrc;
- HDC gl_hdc;
- guint need_alpha_bits : 1;
-
- /* other items */
- guint is_attached : 1;
- guint do_frame_sync : 1;
-
-#ifdef GDK_WIN32_ENABLE_EGL
- /* EGL (Angle) Context Items */
- EGLContext egl_context;
- EGLConfig egl_config;
-#endif
};
struct _GdkWin32GLContextClass
@@ -60,15 +49,33 @@ struct _GdkWin32GLContextClass
GdkGLContextClass parent_class;
};
-GdkGLContext *
-_gdk_win32_surface_create_gl_context (GdkSurface *window,
- gboolean attached,
- GdkGLContext *share,
- GError **error);
+/* WGL */
+#define GDK_TYPE_WIN32_GL_CONTEXT_WGL (gdk_win32_gl_context_wgl_get_type())
+#define GDK_WIN32_GL_CONTEXT_WGL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_WIN32_GL_CONTEXT_WGL, GdkWin32GLContextWGL))
+#define GDK_IS_WIN32_GL_CONTEXT_WGL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_WIN32_GL_CONTEXT_WGL))
+
+typedef struct _GdkWin32GLContextWGL GdkWin32GLContextWGL;
+
+gboolean gdk_win32_display_init_wgl (GdkDisplay *display,
+ GError **error);
+void gdk_win32_gl_context_wgl_bind_surface (GdkWin32GLContextWGL *ctx,
+ GdkWin32Surface *win32_surface);
+
+GType gdk_win32_gl_context_wgl_get_type (void) G_GNUC_CONST;
+
+/* EGL */
+#define GDK_TYPE_WIN32_GL_CONTEXT_EGL (gdk_win32_gl_context_egl_get_type())
+#define GDK_WIN32_GL_CONTEXT_EGL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_WIN32_GL_CONTEXT_EGL, GdkWin32GLContextEGL))
+#define GDK_IS_WIN32_GL_CONTEXT_EGL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_WIN32_GL_CONTEXT_EGL))
+
+typedef struct _GdkWin32GLContextEGL GdkWin32GLContextEGL;
+
+gboolean gdk_win32_display_init_egl (GdkDisplay *display,
+ GError **error);
+void gdk_win32_surface_destroy_egl_surface (GdkWin32Surface *self);
+
+GType gdk_win32_gl_context_egl_get_type (void) G_GNUC_CONST;
-gboolean
-_gdk_win32_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context);
void
_gdk_win32_surface_invalidate_egl_framebuffer (GdkSurface *surface);
diff --git a/gdk/win32/gdkkeys-win32.c b/gdk/win32/gdkkeys-win32.c
index 976003aea3..981f52ab54 100644
--- a/gdk/win32/gdkkeys-win32.c
+++ b/gdk/win32/gdkkeys-win32.c
@@ -694,6 +694,7 @@ update_keymap (GdkKeymap *gdk_keymap)
if (hkls_len != keymap->layout_handles->len)
keymap->keysym_tab = g_renew (guint, keymap->keysym_tab, keysym_tab_size);
+ memset (key_state, 0, sizeof(key_state));
memset (keymap->keysym_tab, 0, keysym_tab_size);
g_array_set_size (keymap->layout_handles, hkls_len);
g_array_set_size (keymap->options, hkls_len);
diff --git a/gdk/win32/gdkmonitor-win32.c b/gdk/win32/gdkmonitor-win32.c
index 19289fb6a0..0dad478345 100644
--- a/gdk/win32/gdkmonitor-win32.c
+++ b/gdk/win32/gdkmonitor-win32.c
@@ -681,7 +681,7 @@ enum_monitor (HMONITOR hmonitor,
else
{
/* First acquire the scale using the current screen */
- scale = _gdk_win32_display_get_monitor_scale_factor (data->display, NULL, NULL, NULL);
+ scale = gdk_win32_display_get_monitor_scale_factor (data->display, NULL, NULL);
/* acquire the scale using the monitor which the window is nearest on Windows 8.1+ */
if (data->display->have_at_least_win81)
@@ -695,7 +695,7 @@ enum_monitor (HMONITOR hmonitor,
pt.x = w32mon->work_rect.x + w32mon->work_rect.width / 2;
pt.y = w32mon->work_rect.y + w32mon->work_rect.height / 2;
hmonitor = MonitorFromPoint (pt, MONITOR_DEFAULTTONEAREST);
- scale = _gdk_win32_display_get_monitor_scale_factor (data->display, hmonitor, NULL, NULL);
+ scale = gdk_win32_display_get_monitor_scale_factor (data->display, NULL, hmonitor);
}
}
diff --git a/gdk/win32/gdkscreen-win32.c b/gdk/win32/gdkscreen-win32.c
index 4eb87eabfd..b1e4694876 100644
--- a/gdk/win32/gdkscreen-win32.c
+++ b/gdk/win32/gdkscreen-win32.c
@@ -78,8 +78,7 @@ init_root_window (GdkWin32Screen *screen_win32)
win32_display = GDK_WIN32_DISPLAY (_gdk_display);
if (win32_display->dpi_aware_type != PROCESS_DPI_UNAWARE)
- screen_win32->surface_scale = _gdk_win32_display_get_monitor_scale_factor (win32_display,
- NULL,
+ screen_win32->surface_scale = gdk_win32_display_get_monitor_scale_factor (win32_display,
NULL,
NULL);
else
diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c
index bca73c6edb..4c1f7c1a3f 100644
--- a/gdk/win32/gdksurface-win32.c
+++ b/gdk/win32/gdksurface-win32.c
@@ -397,12 +397,13 @@ RegisterGdkClass (GdkSurfaceType wtype)
wcl.hbrBackground = NULL; \
wcl.hCursor = LoadCursor (NULL, IDC_ARROW);
+ /* MSDN: CS_OWNDC is needed for OpenGL contexts */
+ wcl.style |= CS_OWNDC;
+
switch (wtype)
{
case GDK_SURFACE_TOPLEVEL:
case GDK_SURFACE_POPUP:
- /* MSDN: CS_OWNDC is needed for OpenGL contexts */
- wcl.style |= CS_OWNDC;
if (0 == klassTOPLEVEL)
{
wcl.lpszClassName = L"gdkSurfaceToplevel";
@@ -521,7 +522,7 @@ _gdk_win32_display_create_surface (GdkDisplay *display,
surface->width = width;
surface->height = height;
- impl->surface_scale = _gdk_win32_display_get_monitor_scale_factor (display_win32, NULL, NULL, NULL);
+ impl->surface_scale = gdk_win32_display_get_monitor_scale_factor (display_win32, NULL, NULL);
dwExStyle = 0;
owner = NULL;
@@ -654,6 +655,7 @@ _gdk_win32_display_create_surface (GdkDisplay *display,
impl);
g_object_unref (frame_clock);
+ impl->hdc = GetDC (impl->handle);
return surface;
}
@@ -4426,19 +4428,19 @@ gdk_win32_surface_set_shadow_width (GdkSurface *window,
int
-_gdk_win32_surface_get_scale_factor (GdkSurface *window)
+_gdk_win32_surface_get_scale_factor (GdkSurface *surface)
{
GdkDisplay *display;
GdkWin32Surface *impl;
GdkWin32Display *win32_display;
- if (GDK_SURFACE_DESTROYED (window))
+ if (GDK_SURFACE_DESTROYED (surface))
return 1;
- g_return_val_if_fail (window != NULL, 1);
+ g_return_val_if_fail (surface != NULL, 1);
- display = gdk_surface_get_display (window);
- impl = GDK_WIN32_SURFACE (window);
+ display = gdk_surface_get_display (surface);
+ impl = GDK_WIN32_SURFACE (surface);
win32_display = GDK_WIN32_DISPLAY (display);
@@ -4447,9 +4449,8 @@ _gdk_win32_surface_get_scale_factor (GdkSurface *window)
if (win32_display->has_fixed_scale)
impl->surface_scale = win32_display->surface_scale;
else
- impl->surface_scale = _gdk_win32_display_get_monitor_scale_factor (win32_display,
- NULL,
- GDK_SURFACE_HWND (window),
+ impl->surface_scale = gdk_win32_display_get_monitor_scale_factor (win32_display,
+ surface,
NULL);
return impl->surface_scale;
@@ -4623,7 +4624,6 @@ gdk_win32_surface_class_init (GdkWin32SurfaceClass *klass)
impl_class->destroy_notify = gdk_win32_surface_destroy_notify;
impl_class->drag_begin = _gdk_win32_surface_drag_begin;
- impl_class->create_gl_context = _gdk_win32_surface_create_gl_context;
impl_class->get_scale_factor = _gdk_win32_surface_get_scale_factor;
impl_class->request_layout = _gdk_win32_surface_request_layout;
impl_class->compute_size = _gdk_win32_surface_compute_size;
@@ -5045,9 +5045,9 @@ gdk_win32_drag_surface_iface_init (GdkDragSurfaceInterface *iface)
#ifdef GDK_WIN32_ENABLE_EGL
EGLSurface
-_gdk_win32_surface_get_egl_surface (GdkSurface *surface,
- EGLConfig config,
- gboolean is_dummy)
+gdk_win32_surface_get_egl_surface (GdkSurface *surface,
+ EGLConfig config,
+ gboolean is_dummy)
{
GdkWin32Display *display = GDK_WIN32_DISPLAY (gdk_surface_get_display (surface));
GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
@@ -5066,7 +5066,10 @@ _gdk_win32_surface_get_egl_surface (GdkSurface *surface,
else
{
if (impl->egl_surface == EGL_NO_SURFACE)
- impl->egl_surface = eglCreateWindowSurface (display->egl_disp, config, display->gl_hwnd, NULL);
+ impl->egl_surface = eglCreateWindowSurface (display->egl_disp,
+ config,
+ GDK_SURFACE_HWND (surface),
+ NULL);
return impl->egl_surface;
}
@@ -5149,3 +5152,20 @@ gdk_win32_surface_handle_queued_move_resize (GdkDrawContext *draw_context)
return queued_window_rect;
}
+
+void
+_gdk_win32_surface_invalidate_egl_framebuffer (GdkSurface *surface)
+{
+/* If we are using ANGLE, we need to force redraw of the whole Window and its child windows
+ * as we need to re-acquire the EGL surfaces that we rendered to upload to Cairo explicitly,
+ * using gdk_window_invalidate_rect (), when we maximize or restore or use aerosnap
+ */
+#ifdef GDK_WIN32_ENABLE_EGL
+ if (surface->gl_paint_context != NULL && gdk_gl_context_get_use_es (surface->gl_paint_context))
+ {
+ GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
+
+ impl->egl_force_redraw_all = TRUE;
+ }
+#endif
+}
diff --git a/gdk/win32/gdksurface-win32.h b/gdk/win32/gdksurface-win32.h
index 5f85c50373..6ac1d6a059 100644
--- a/gdk/win32/gdksurface-win32.h
+++ b/gdk/win32/gdksurface-win32.h
@@ -379,9 +379,9 @@ RECT
gdk_win32_surface_handle_queued_move_resize (GdkDrawContext *draw_context);
#ifdef GDK_WIN32_ENABLE_EGL
-EGLSurface _gdk_win32_surface_get_egl_surface (GdkSurface *surface,
- EGLConfig config,
- gboolean is_dummy);
+EGLSurface gdk_win32_surface_get_egl_surface (GdkSurface *surface,
+ EGLConfig config,
+ gboolean is_dummy);
#endif
G_END_DECLS
diff --git a/gdk/win32/meson.build b/gdk/win32/meson.build
index 6f57d5a4cd..1f4c9d6e9f 100644
--- a/gdk/win32/meson.build
+++ b/gdk/win32/meson.build
@@ -13,6 +13,7 @@ gdk_win32_sources = files([
'gdkdrop-win32.c',
'gdkevents-win32.c',
'gdkglcontext-win32.c',
+ 'gdkglcontext-win32-wgl.c',
'gdkglobals-win32.c',
'gdkhdataoutputstream-win32.c',
'gdkkeys-win32.c',
@@ -47,6 +48,7 @@ GDK_WIN32_EGL_CFLAGS = []
if win32_has_egl
GDK_WIN32_EGL_CFLAGS = ['-DGDK_WIN32_ENABLE_EGL']
+ gdk_win32_sources += ['gdkglcontext-win32-egl.c']
endif
gdk_win32_deps = [ # FIXME
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index 67ffa7b09c..33a3648f4e 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -69,10 +69,6 @@
#include <X11/extensions/shape.h>
-#ifdef HAVE_XCOMPOSITE
-#include <X11/extensions/Xcomposite.h>
-#endif
-
#ifdef HAVE_RANDR
#include <X11/extensions/Xrandr.h>
#endif
@@ -1339,20 +1335,70 @@ set_sm_client_id (GdkDisplay *display,
gdk_x11_get_xatom_by_name_for_display (display, "SM_CLIENT_ID"));
}
-void
-gdk_display_setup_window_visual (GdkDisplay *display,
- int depth,
- Visual *visual,
- Colormap colormap,
- gboolean rgba)
+static void
+gdk_x11_display_query_default_visual (GdkX11Display *self,
+ Visual **out_visual,
+ int *out_depth)
{
- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
+ XVisualInfo template, *visinfo;
+ int n_visuals;
+ Display *dpy;
+
+ dpy = gdk_x11_display_get_xdisplay (GDK_DISPLAY (self));
- display_x11->window_depth = depth;
- display_x11->window_visual = visual;
- display_x11->window_colormap = colormap;
+ template.screen = self->screen->screen_num;
+ template.depth = 32;
+ template.red_mask = 0xff0000;
+ template.green_mask = 0x00ff00;
+ template.blue_mask = 0x0000ff;
- gdk_display_set_rgba (display, rgba);
+ visinfo = XGetVisualInfo (dpy,
+ VisualScreenMask | VisualDepthMask
+ | VisualRedMaskMask | VisualGreenMaskMask | VisualBlueMaskMask,
+ &template,
+ &n_visuals);
+ if (visinfo != NULL)
+ {
+ *out_visual = visinfo[0].visual;
+ *out_depth = visinfo[0].depth;
+ XFree (visinfo);
+ return;
+ }
+
+ *out_visual = DefaultVisual (dpy, self->screen->screen_num);
+ *out_depth = DefaultDepth (dpy, self->screen->screen_num);
+}
+
+static void
+gdk_x11_display_init_leader_surface (GdkX11Display *self)
+{
+ GdkDisplay *display = GDK_DISPLAY (self);
+ Display *xdisplay = gdk_x11_display_get_xdisplay (display);
+
+ self->window_colormap = XCreateColormap (xdisplay,
+ DefaultRootWindow (xdisplay),
+ self->window_visual,
+ AllocNone);
+ gdk_display_set_rgba (display, self->window_depth == 32);
+
+ /* We need to initialize events after we have the screen
+ * structures in places
+ */
+ _gdk_x11_xsettings_init (GDK_X11_SCREEN (self->screen));
+
+ self->device_manager = _gdk_x11_device_manager_new (display);
+
+ gdk_event_init (display);
+
+ self->leader_gdk_surface =
+ _gdk_x11_display_create_surface (display,
+ GDK_SURFACE_TEMP,
+ NULL,
+ -100, -100, 1, 1);
+
+ (_gdk_x11_surface_get_toplevel (self->leader_gdk_surface))->is_leader = TRUE;
+ self->leader_window = GDK_SURFACE_XID (self->leader_gdk_surface);
+ self->leader_window_title_set = FALSE;
}
/**
@@ -1420,28 +1466,20 @@ gdk_x11_display_open (const char *display_name)
#endif
/* initialize the display's screens */
- display_x11->screen = _gdk_x11_screen_new (display, DefaultScreen (display_x11->xdisplay), TRUE);
+ display_x11->screen = _gdk_x11_screen_new (display, DefaultScreen (display_x11->xdisplay));
- /* We need to initialize events after we have the screen
- * structures in places
+ /* If GL is available we want to pick better default/rgba visuals,
+ * as we care about GLX details such as alpha/depth/stencil depth,
+ * stereo and double buffering
+ *
+ * Note that this also sets up the leader surface while creating the inital
+ * GL context.
*/
- _gdk_x11_xsettings_init (GDK_X11_SCREEN (display_x11->screen));
-
- display_x11->device_manager = _gdk_x11_device_manager_new (display);
-
- gdk_event_init (display);
-
- display_x11->leader_gdk_surface =
- _gdk_x11_display_create_surface (display,
- GDK_SURFACE_TEMP,
- NULL,
- -100, -100, 1, 1);
-
- (_gdk_x11_surface_get_toplevel (display_x11->leader_gdk_surface))->is_leader = TRUE;
-
- display_x11->leader_window = GDK_SURFACE_XID (display_x11->leader_gdk_surface);
-
- display_x11->leader_window_title_set = FALSE;
+ if (!gdk_display_prepare_gl (display, NULL))
+ {
+ gdk_x11_display_query_default_visual (display_x11, &display_x11->window_visual, &display_x11->window_depth);
+ gdk_x11_display_init_leader_surface (display_x11);
+ }
#ifdef HAVE_XFIXES
if (XFixesQueryExtension (display_x11->xdisplay,
@@ -1454,24 +1492,6 @@ gdk_x11_display_open (const char *display_name)
#endif
display_x11->have_xfixes = FALSE;
-#ifdef HAVE_XCOMPOSITE
- if (XCompositeQueryExtension (display_x11->xdisplay,
- &ignore, &ignore))
- {
- int major, minor;
-
- XCompositeQueryVersion (display_x11->xdisplay, &major, &minor);
-
- /* Prior to Composite version 0.4, composited windows clipped their
- * parents, so you had to use IncludeInferiors to draw to the parent
- * This isn't useful for our purposes, so require 0.4
- */
- display_x11->have_xcomposite = major > 0 || (major == 0 && minor >= 4);
- }
- else
-#endif
- display_x11->have_xcomposite = FALSE;
-
display_x11->have_shapes = FALSE;
display_x11->have_input_shapes = FALSE;
@@ -1928,7 +1948,6 @@ gdk_x11_display_finalize (GObject *object)
/* Free all GdkX11Screens */
g_object_unref (display_x11->screen);
- g_list_free_full (display_x11->screens, g_object_unref);
g_list_store_remove_all (display_x11->monitors);
g_object_unref (display_x11->monitors);
@@ -1940,6 +1959,8 @@ gdk_x11_display_finalize (GObject *object)
XCloseDisplay (display_x11->xdisplay);
+ g_clear_error (&display_x11->gl_error);
+
/* error traps */
while (display_x11->error_traps != NULL)
{
@@ -1993,52 +2014,6 @@ gdk_x11_lookup_xdisplay (Display *xdisplay)
return display;
}
-/*
- * _gdk_x11_display_screen_for_xrootwin:
- * @display: a `GdkDisplay`
- * @xrootwin: window ID for one of the screen’s of the display.
- *
- * Given the root window ID of one of the screen’s of a `GdkDisplay`,
- * finds the screen.
- *
- * Returns: (transfer none): the `GdkX11Screen` corresponding to @xrootwin
- */
-GdkX11Screen *
-_gdk_x11_display_screen_for_xrootwin (GdkDisplay *display,
- Window xrootwin)
-{
- GdkX11Screen *screen;
- XWindowAttributes attrs;
- gboolean result;
- GdkX11Display *display_x11;
- GList *l;
-
- screen = GDK_X11_DISPLAY (display)->screen;
-
- if (GDK_SCREEN_XROOTWIN (screen) == xrootwin)
- return screen;
-
- display_x11 = GDK_X11_DISPLAY (display);
-
- for (l = display_x11->screens; l; l = l->next)
- {
- screen = l->data;
- if (GDK_SCREEN_XROOTWIN (screen) == xrootwin)
- return screen;
- }
-
- gdk_x11_display_error_trap_push (display);
- result = XGetWindowAttributes (display_x11->xdisplay, xrootwin, &attrs);
- if (gdk_x11_display_error_trap_pop (display) || !result)
- return NULL;
-
- screen = _gdk_x11_screen_new (display, XScreenNumberOfScreen (attrs.screen), FALSE);
-
- display_x11->screens = g_list_prepend (display_x11->screens, screen);
-
- return screen;
-}
-
/**
* gdk_x11_display_get_xdisplay:
* @display: (type GdkX11Display): a `GdkDisplay`
@@ -2910,6 +2885,60 @@ gdk_boolean_handled_accumulator (GSignalInvocationHint *ihint,
return continue_emission;
}
+static gboolean
+gdk_x11_display_init_gl_backend (GdkX11Display *self,
+ Visual **out_visual,
+ int *out_depth,
+ GError **error)
+{
+ GdkDisplay *display G_GNUC_UNUSED = GDK_DISPLAY (self);
+
+ if (GDK_DISPLAY_DEBUG_CHECK (display, GL_EGL))
+ return gdk_x11_display_init_egl (self, TRUE, out_visual, out_depth, error);
+ if (GDK_DISPLAY_DEBUG_CHECK (display, GL_GLX))
+ return gdk_x11_display_init_glx (self, out_visual, out_depth, error);
+
+ /* No env vars set, do the regular GL initialization.
+ *
+ * We try EGL first, but are very picky about what we accept.
+ * If that fails, we try to go with GLX instead.
+ * And if that also fails, we try EGL again, but this time accept anything.
+ *
+ * The idea here is that EGL is the preferred method going forward, but GLX is
+ * the tried and tested method that we know works. So if we detect issues with
+ * EGL, we want to avoid using it in favor of GLX.
+ */
+
+ if (gdk_x11_display_init_egl (self, FALSE, out_visual, out_depth, error))
+ return TRUE;
+ g_clear_error (error);
+
+ if (gdk_x11_display_init_glx (self, out_visual, out_depth, error))
+ return TRUE;
+ g_clear_error (error);
+
+ return gdk_x11_display_init_egl (self, TRUE, out_visual, out_depth, error);
+}
+
+static GdkGLContext *
+gdk_x11_display_init_gl (GdkDisplay *display,
+ GError **error)
+{
+ GdkX11Display *self = GDK_X11_DISPLAY (display);
+
+ if (!gdk_x11_display_init_gl_backend (self, &self->window_visual, &self->window_depth, error))
+ return FALSE;
+
+ gdk_x11_display_init_leader_surface (self);
+
+ if (self->egl_display)
+ return g_object_new (GDK_TYPE_X11_GL_CONTEXT_EGL, "surface", self->leader_gdk_surface, NULL);
+ else if (self->glx_config != NULL)
+ return g_object_new (GDK_TYPE_X11_GL_CONTEXT_GLX, "surface", self->leader_gdk_surface, NULL);
+ else
+ g_return_val_if_reached (NULL);
+}
+
static void
gdk_x11_display_class_init (GdkX11DisplayClass * class)
{
@@ -2940,7 +2969,7 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
display_class->create_surface = _gdk_x11_display_create_surface;
display_class->get_keymap = gdk_x11_display_get_keymap;
- display_class->make_gl_context_current = gdk_x11_display_make_gl_context_current;
+ display_class->init_gl = gdk_x11_display_init_gl;
display_class->get_default_seat = gdk_x11_display_get_default_seat;
diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
index 5ffae57b74..2a7356f752 100644
--- a/gdk/x11/gdkdisplay-x11.h
+++ b/gdk/x11/gdkdisplay-x11.h
@@ -42,7 +42,6 @@ struct _GdkX11Display
GdkDisplay parent_instance;
Display *xdisplay;
GdkX11Screen *screen;
- GList *screens;
GList *toplevels;
GdkX11DeviceManagerXI2 *device_manager;
@@ -71,8 +70,6 @@ struct _GdkX11Display
gboolean have_xfixes;
int xfixes_event_base;
- gboolean have_xcomposite;
-
gboolean have_randr12;
gboolean have_randr13;
gboolean have_randr15;
@@ -132,12 +129,17 @@ struct _GdkX11Display
guint have_damage;
#endif
+ /* If GL is not supported, store the error here */
+ GError *gl_error;
+
/* GLX information */
+ /* GLXFBConfig */ gpointer glx_config;
int glx_version;
- int glx_error_base;
- int glx_event_base;
/* EGL information */
+ /* We use gpointer here so we don't have to pull in EGL headers (which glx doesn't like) */
+ /* EGLDisplay */ gpointer egl_display;
+ /* EGLConfig */ gpointer egl_config;
int egl_version;
/* Translation between X server time and system-local monotonic time */
@@ -146,9 +148,6 @@ struct _GdkX11Display
guint server_time_is_monotonic_time : 1;
- guint have_glx : 1;
- guint have_egl : 1;
-
/* GLX extensions we check */
guint has_glx_swap_interval : 1;
guint has_glx_create_context : 1;
@@ -165,7 +164,6 @@ struct _GdkX11Display
guint has_egl_khr_create_context : 1;
guint has_egl_buffer_age : 1;
guint has_egl_swap_buffers_with_damage : 1;
- guint has_egl_surfaceless_context : 1;
};
struct _GdkX11DisplayClass
@@ -176,8 +174,6 @@ struct _GdkX11DisplayClass
const XEvent *event);
};
-GdkX11Screen * _gdk_x11_display_screen_for_xrootwin (GdkDisplay *display,
- Window xrootwin);
void _gdk_x11_display_error_event (GdkDisplay *display,
XErrorEvent *error);
gsize gdk_x11_display_get_max_request_size (GdkDisplay *display);
diff --git a/gdk/x11/gdkdrag-x11.c b/gdk/x11/gdkdrag-x11.c
index 515848bd5e..88e65a2a2c 100644
--- a/gdk/x11/gdkdrag-x11.c
+++ b/gdk/x11/gdkdrag-x11.c
@@ -47,9 +47,6 @@
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/extensions/shape.h>
-#ifdef HAVE_XCOMPOSITE
-#include <X11/extensions/Xcomposite.h>
-#endif
#include <string.h>
@@ -518,9 +515,6 @@ gdk_surface_cache_new (GdkDisplay *display)
Window xroot_window = GDK_DISPLAY_XROOTWIN (display);
GdkChildInfoX11 *children;
guint nchildren, i;
-#ifdef HAVE_XCOMPOSITE
- Window cow;
-#endif
GdkSurfaceCache *result = g_new (GdkSurfaceCache, 1);
@@ -571,27 +565,6 @@ gdk_surface_cache_new (GdkDisplay *display)
g_free (children);
-#ifdef HAVE_XCOMPOSITE
- /*
- * Add the composite overlay window to the cache, as this can be a reasonable
- * Xdnd proxy as well.
- * This is only done when the screen is composited in order to avoid mapping
- * the COW. We assume that the CM is using the COW (which is true for pretty
- * much any CM currently in use).
- */
- if (gdk_display_is_composited (display))
- {
- gdk_x11_display_error_trap_push (display);
- cow = XCompositeGetOverlayWindow (xdisplay, xroot_window);
- gdk_surface_cache_add (result, cow, 0, 0,
- WidthOfScreen (GDK_X11_SCREEN (screen)->xscreen),
- HeightOfScreen (GDK_X11_SCREEN (screen)->xscreen),
- TRUE);
- XCompositeReleaseOverlayWindow (xdisplay, xroot_window);
- gdk_x11_display_error_trap_pop_ignored (display);
- }
-#endif
-
return result;
}
diff --git a/gdk/x11/gdkdrop-x11.c b/gdk/x11/gdkdrop-x11.c
index d9c1c4157f..3470382da7 100644
--- a/gdk/x11/gdkdrop-x11.c
+++ b/gdk/x11/gdkdrop-x11.c
@@ -45,9 +45,6 @@
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/extensions/shape.h>
-#ifdef HAVE_XCOMPOSITE
-#include <X11/extensions/Xcomposite.h>
-#endif
#include <string.h>
diff --git a/gdk/x11/gdkglcontext-egl.c b/gdk/x11/gdkglcontext-egl.c
index b278b9d36c..eb5fd33724 100644
--- a/gdk/x11/gdkglcontext-egl.c
+++ b/gdk/x11/gdkglcontext-egl.c
@@ -19,7 +19,6 @@
#include "gdkx11glcontext.h"
#include "gdkx11screen.h"
#include "gdkx11surface.h"
-#include "gdkvisual-x11.h"
#include "gdkx11property.h"
#include <X11/Xatom.h>
@@ -35,55 +34,15 @@ struct _GdkX11GLContextEGL
{
GdkX11GLContext parent_instance;
- EGLDisplay egl_display;
- EGLConfig egl_config;
EGLContext egl_context;
-};
-
-typedef struct {
- EGLDisplay egl_display;
- EGLConfig egl_config;
- EGLSurface egl_surface;
- /* Only set by the dummy surface we attach to the display */
- Display *xdisplay;
- Window dummy_xwin;
- XVisualInfo *xvisinfo;
-} DrawableInfo;
+ guint do_frame_sync : 1;
+};
typedef struct _GdkX11GLContextClass GdkX11GLContextEGLClass;
G_DEFINE_TYPE (GdkX11GLContextEGL, gdk_x11_gl_context_egl, GDK_TYPE_X11_GL_CONTEXT)
-static void
-drawable_info_free (gpointer data)
-{
- DrawableInfo *info = data;
-
- if (data == NULL)
- return;
-
- if (info->egl_surface != NULL)
- {
- eglDestroySurface (info->egl_display, info->egl_surface);
- info->egl_surface = NULL;
- }
-
- if (info->dummy_xwin != None)
- {
- XDestroyWindow (info->xdisplay, info->dummy_xwin);
- info->dummy_xwin = None;
- }
-
- if (info->xvisinfo != NULL)
- {
- XFree (info->xvisinfo);
- info->xvisinfo = NULL;
- }
-
- g_free (info);
-}
-
/**
* gdk_x11_display_get_egl_display:
* @display: (type GdkX11Display): an X11 display
@@ -99,19 +58,23 @@ drawable_info_free (gpointer data)
gpointer
gdk_x11_display_get_egl_display (GdkDisplay *display)
{
- EGLDisplay edpy = NULL;
- Display *dpy;
+ GdkX11Display *self;
g_return_val_if_fail (GDK_IS_X11_DISPLAY (display), NULL);
- if (GDK_X11_DISPLAY (display)->have_glx)
- return NULL;
+ self = GDK_X11_DISPLAY (display);
- edpy = g_object_get_data (G_OBJECT (display), "-gdk-x11-egl-display");
- if (edpy != NULL)
- return edpy;
+ return self->egl_display;
+}
- dpy = gdk_x11_display_get_xdisplay (display);
+static void
+gdk_x11_display_create_egl_display (GdkX11Display *self)
+{
+ Display *dpy;
+
+ g_assert (self->egl_display == NULL);
+
+ dpy = gdk_x11_display_get_xdisplay (GDK_DISPLAY (self));
if (epoxy_has_egl_extension (NULL, "EGL_KHR_platform_base"))
{
@@ -119,10 +82,10 @@ gdk_x11_display_get_egl_display (GdkDisplay *display)
(void *) eglGetProcAddress ("eglGetPlatformDisplay");
if (getPlatformDisplay != NULL)
- edpy = getPlatformDisplay (EGL_PLATFORM_X11_KHR, dpy, NULL);
+ self->egl_display = getPlatformDisplay (EGL_PLATFORM_X11_KHR, dpy, NULL);
- if (edpy != NULL)
- goto out;
+ if (self->egl_display != NULL)
+ return;
}
if (epoxy_has_egl_extension (NULL, "EGL_EXT_platform_base"))
@@ -131,145 +94,231 @@ gdk_x11_display_get_egl_display (GdkDisplay *display)
(void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
if (getPlatformDisplay)
- edpy = getPlatformDisplay (EGL_PLATFORM_X11_EXT, dpy, NULL);
+ self->egl_display = getPlatformDisplay (EGL_PLATFORM_X11_EXT, dpy, NULL);
- if (edpy != NULL)
- goto out;
+ if (self->egl_display != NULL)
+ return;
}
- edpy = eglGetDisplay ((EGLNativeDisplayType) dpy);
+ self->egl_display = eglGetDisplay ((EGLNativeDisplayType) dpy);
+}
-out:
- if (edpy != NULL)
- g_object_set_data (G_OBJECT (display), "-gdk-x11-egl-display", edpy);
+static XVisualInfo *
+gdk_x11_display_get_visual_info_for_visual (GdkX11Display *self,
+ VisualID visualid)
+{
+ XVisualInfo template, *visinfo;
+ int nvisuals;
+
+ template.screen = self->screen->screen_num;
+ template.visualid = visualid;
+
+ visinfo = XGetVisualInfo (gdk_x11_display_get_xdisplay (GDK_DISPLAY (self)),
+ VisualScreenMask | VisualIDMask,
+ &template,
+ &nvisuals);
+ g_warn_if_fail (nvisuals == 1);
+
+ return visinfo;
+}
- return edpy;
+static gboolean
+visual_is_rgba (XVisualInfo *visinfo)
+{
+ return
+ visinfo->depth == 32 &&
+ visinfo->visual->red_mask == 0xff0000 &&
+ visinfo->visual->green_mask == 0x00ff00 &&
+ visinfo->visual->blue_mask == 0x0000ff;
}
-static XVisualInfo *
-get_visual_info_for_egl_config (GdkDisplay *display,
- EGLConfig egl_config)
+#define MAX_EGL_ATTRS 30
+
+static gboolean
+gdk_x11_display_create_egl_config (GdkX11Display *display,
+ gboolean force,
+ Visual **out_visual,
+ int *out_depth,
+ GError **error)
{
- XVisualInfo visinfo_template;
- int template_mask = 0;
- XVisualInfo *visinfo = NULL;
- int visinfos_count;
- EGLint visualid, red_size, green_size, blue_size, alpha_size;
- EGLDisplay egl_display = gdk_x11_display_get_egl_display (display);
+ GdkX11Display *self = GDK_X11_DISPLAY (display);
+ EGLint attrs[MAX_EGL_ATTRS];
+ EGLConfig *configs;
+ EGLint count, alloced;
+ enum {
+ NO_VISUAL_FOUND,
+ WITH_MULTISAMPLING,
+ WITH_STENCIL_AND_DEPTH_BUFFER,
+ NO_ALPHA,
+ NO_ALPHA_VISUAL,
+ PERFECT
+ } best_features;
+
+ int i = 0;
+
+ attrs[i++] = EGL_SURFACE_TYPE;
+ attrs[i++] = EGL_WINDOW_BIT;
+
+ attrs[i++] = EGL_COLOR_BUFFER_TYPE;
+ attrs[i++] = EGL_RGB_BUFFER;
- eglGetConfigAttrib (egl_display, egl_config, EGL_NATIVE_VISUAL_ID, &visualid);
+ attrs[i++] = EGL_RED_SIZE;
+ attrs[i++] = 8;
+ attrs[i++] = EGL_GREEN_SIZE;
+ attrs[i++] = 8;
+ attrs[i++] = EGL_BLUE_SIZE;
+ attrs[i++] = 8;
+ attrs[i++] = EGL_ALPHA_SIZE;
+ attrs[i++] = 8;
- if (visualid != 0)
+ attrs[i++] = EGL_NONE;
+ g_assert (i < MAX_EGL_ATTRS);
+
+ if (!eglChooseConfig (self->egl_display, attrs, NULL, -1, &alloced) || alloced == 0)
{
- visinfo_template.visualid = visualid;
- template_mask |= VisualIDMask;
+ g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
+ _("No EGL configuration available"));
+ return FALSE;
}
- else
+
+ configs = g_new (EGLConfig, alloced);
+ if (!eglChooseConfig (self->egl_display, attrs, configs, alloced, &count))
{
- /* some EGL drivers don't implement the EGL_NATIVE_VISUAL_ID
- * attribute, so attempt to find the closest match.
- */
- eglGetConfigAttrib (egl_display, egl_config, EGL_RED_SIZE, &red_size);
- eglGetConfigAttrib (egl_display, egl_config, EGL_GREEN_SIZE, &green_size);
- eglGetConfigAttrib (egl_display, egl_config, EGL_BLUE_SIZE, &blue_size);
- eglGetConfigAttrib (egl_display, egl_config, EGL_ALPHA_SIZE, &alpha_size);
-
- visinfo_template.depth = red_size + green_size + blue_size + alpha_size;
- template_mask |= VisualDepthMask;
-
- visinfo_template.screen = DefaultScreen (gdk_x11_display_get_xdisplay (display));
- template_mask |= VisualScreenMask;
+ g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
+ _("Failed to get EGL configurations"));
+ return FALSE;
}
+ g_warn_if_fail (alloced == count);
- visinfo = XGetVisualInfo (gdk_x11_display_get_xdisplay (display),
- template_mask,
- &visinfo_template,
- &visinfos_count);
+ best_features = NO_VISUAL_FOUND;
- if (visinfos_count < 1)
- return NULL;
+ for (i = 0; i < count; i++)
+ {
+ XVisualInfo *visinfo;
+ int tmp, visualid;
- return visinfo;
-}
+ if (!eglGetConfigAttrib (self->egl_display, configs[i], EGL_NATIVE_VISUAL_ID, &visualid))
+ continue;
-static EGLSurface
-gdk_x11_display_get_egl_dummy_surface (GdkDisplay *display,
- EGLConfig egl_config)
-{
- DrawableInfo *info;
- XVisualInfo *xvisinfo;
- XSetWindowAttributes attrs;
-
- info = g_object_get_data (G_OBJECT (display), "-gdk-x11-egl-dummy-surface");
- if (info != NULL)
- return info->egl_surface;
-
- xvisinfo = get_visual_info_for_egl_config (display, egl_config);
- if (xvisinfo == NULL)
- return NULL;
-
- info = g_new (DrawableInfo, 1);
- info->xdisplay = gdk_x11_display_get_xdisplay (display);
- info->xvisinfo = xvisinfo;
- info->egl_display = gdk_x11_display_get_egl_display (display);
- info->egl_config = egl_config;
-
- attrs.override_redirect = True;
- attrs.colormap = XCreateColormap (info->xdisplay,
- DefaultRootWindow (info->xdisplay),
- xvisinfo->visual,
- AllocNone);
- attrs.border_pixel = 0;
-
- info->dummy_xwin =
- XCreateWindow (info->xdisplay,
- DefaultRootWindow (info->xdisplay),
- -100, -100, 1, 1,
- 0,
- xvisinfo->depth,
- CopyFromParent,
- xvisinfo->visual,
- CWOverrideRedirect | CWColormap | CWBorderPixel,
- &attrs);
-
- info->egl_surface =
- eglCreateWindowSurface (info->egl_display,
- info->egl_config,
- (EGLNativeWindowType) info->dummy_xwin,
- NULL);
+ visinfo = gdk_x11_display_get_visual_info_for_visual (self, visualid);
+ if (visinfo == NULL)
+ continue;
+
+ if (!eglGetConfigAttrib (self->egl_display, configs[i], EGL_SAMPLE_BUFFERS, &tmp) || tmp != 0)
+ {
+ if (best_features < WITH_MULTISAMPLING)
+ {
+ GDK_NOTE (OPENGL, g_message ("Best EGL config is %u for visual 0x%lX with multisampling", i, visinfo->visualid));
+ best_features = WITH_MULTISAMPLING;
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->egl_config = configs[i];
+ }
+ XFree (visinfo);
+ continue;
+ }
+
+ if (!eglGetConfigAttrib (self->egl_display, configs[i], EGL_DEPTH_SIZE, &tmp) || tmp != 0 ||
+ !eglGetConfigAttrib (self->egl_display, configs[i], EGL_STENCIL_SIZE, &tmp) || tmp != 0)
+ {
+ GDK_NOTE (OPENGL, g_message ("Best EGL config is %u for visual 0x%lX with stencil or depth buffer", i, visinfo->visualid));
+ if (best_features < WITH_STENCIL_AND_DEPTH_BUFFER)
+ {
+ best_features = WITH_STENCIL_AND_DEPTH_BUFFER;
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->egl_config = configs[i];
+ }
+ XFree (visinfo);
+ continue;
+ }
+
+ if (!visual_is_rgba (visinfo))
+ {
+ GDK_NOTE (OPENGL, g_message ("Best EGL config is %u for visual 0x%lX without RGBA Visual", i, visinfo->visualid));
+ if (best_features < NO_ALPHA_VISUAL)
+ {
+ best_features = NO_ALPHA_VISUAL;
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->egl_config = configs[i];
+ }
+ XFree (visinfo);
+ continue;
+ }
+
+ GDK_NOTE (OPENGL, g_message ("EGL Config %u for visual 0x%lX is the perfect choice", i, visinfo->visualid));
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->egl_config = configs[i];
+ XFree (visinfo);
+ /* everything is perfect */
+ best_features = PERFECT;
+ break;
+ }
+
+ g_free (configs);
- g_object_set_data_full (G_OBJECT (display), "-gdk-x11-egl-dummy-surface",
- info,
- drawable_info_free);
+ if (best_features == NO_VISUAL_FOUND)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("No EGL configuration with required features found"));
+ return FALSE;
+ }
+ else if (!force && best_features != PERFECT)
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("No perfect EGL configuration found"));
+ return FALSE;
+ }
- return info->egl_surface;
+ return TRUE;
}
+#undef MAX_EGL_ATTRS
+
static EGLSurface
-gdk_x11_surface_get_egl_surface (GdkSurface *surface,
- EGLConfig config)
+gdk_x11_surface_get_egl_surface (GdkSurface *surface)
{
- GdkDisplay *display = gdk_surface_get_display (surface);
- EGLDisplay egl_display = gdk_x11_display_get_egl_display (display);
- DrawableInfo *info;
-
- info = g_object_get_data (G_OBJECT (surface), "-gdk-x11-egl-drawable");
- if (info != NULL)
- return info->egl_surface;
-
- info = g_new0 (DrawableInfo, 1);
- info->egl_display = egl_display;
- info->egl_config = config;
- info->egl_surface =
- eglCreateWindowSurface (info->egl_display, config,
+ GdkX11Surface *self = GDK_X11_SURFACE (surface);
+ GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (self));
+ GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
+
+ if (self->egl_surface)
+ return self->egl_surface;
+
+ self->egl_surface =
+ eglCreateWindowSurface (display_x11->egl_display,
+ display_x11->egl_config,
(EGLNativeWindowType) gdk_x11_surface_get_xid (surface),
NULL);
- g_object_set_data_full (G_OBJECT (surface), "-gdk-x11-egl-drawable",
- info,
- drawable_info_free);
+ return self->egl_surface;
+}
+
+void
+gdk_x11_surface_destroy_egl_surface (GdkX11Surface *self)
+{
+ GdkX11Display *display_x11;
+
+ if (self->egl_surface == NULL)
+ return;
+
+ display_x11 = GDK_X11_DISPLAY (gdk_surface_get_display (GDK_SURFACE (self)));
- return info->egl_surface;
+ eglDestroySurface (display_x11->egl_display, self->egl_surface);
+ self->egl_surface = NULL;
+}
+
+static void
+gdk_x11_gl_context_egl_begin_frame (GdkDrawContext *draw_context,
+ cairo_region_t *region)
+{
+ GDK_DRAW_CONTEXT_CLASS (gdk_x11_gl_context_egl_parent_class)->begin_frame (draw_context, region);
+
+ glDrawBuffers (1, (GLenum[1]) { GL_BACK });
}
static void
@@ -277,20 +326,16 @@ gdk_x11_gl_context_egl_end_frame (GdkDrawContext *draw_context,
cairo_region_t *painted)
{
GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
- GdkX11GLContextEGL *context_egl = GDK_X11_GL_CONTEXT_EGL (context);
GdkSurface *surface = gdk_gl_context_get_surface (context);
GdkDisplay *display = gdk_surface_get_display (surface);
GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
- EGLDisplay egl_display = gdk_x11_display_get_egl_display (display);
EGLSurface egl_surface;
GDK_DRAW_CONTEXT_CLASS (gdk_x11_gl_context_egl_parent_class)->end_frame (draw_context, painted);
- if (gdk_gl_context_get_shared_context (context) != NULL)
- return;
gdk_gl_context_make_current (context);
- egl_surface = gdk_x11_surface_get_egl_surface (surface, context_egl->egl_config);
+ egl_surface = gdk_x11_surface_get_egl_surface (surface);
gdk_profiler_add_mark (GDK_PROFILER_CURRENT_TIME, 0, "x11", "swap buffers");
if (display_x11->has_egl_swap_buffers_with_damage)
@@ -319,11 +364,74 @@ gdk_x11_gl_context_egl_end_frame (GdkDrawContext *draw_context,
rects[j++] = rect.height * scale;
}
- eglSwapBuffersWithDamageEXT (egl_display, egl_surface, rects, n_rects);
+ eglSwapBuffersWithDamageEXT (display_x11->egl_display, egl_surface, rects, n_rects);
g_free (heap_rects);
}
else
- eglSwapBuffers (egl_display, egl_surface);
+ eglSwapBuffers (display_x11->egl_display, egl_surface);
+}
+
+static gboolean
+gdk_x11_gl_context_egl_clear_current (GdkGLContext *context)
+{
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
+
+ return eglMakeCurrent (display_x11->egl_display,
+ EGL_NO_SURFACE,
+ EGL_NO_SURFACE,
+ EGL_NO_CONTEXT);
+}
+
+static gboolean
+gdk_x11_gl_context_egl_make_current (GdkGLContext *context,
+ gboolean surfaceless)
+{
+ GdkX11GLContextEGL *self = GDK_X11_GL_CONTEXT_EGL (context);
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
+ GdkSurface *surface;
+ EGLSurface egl_surface;
+ gboolean do_frame_sync = FALSE;
+
+ if (surfaceless)
+ {
+ return eglMakeCurrent (display_x11->egl_display,
+ EGL_NO_SURFACE,
+ EGL_NO_SURFACE,
+ self->egl_context);
+ }
+
+ surface = gdk_gl_context_get_surface (context);
+ egl_surface = gdk_x11_surface_get_egl_surface (surface);
+
+ GDK_DISPLAY_NOTE (display, OPENGL,
+ g_message ("Making EGL context %p current to surface %p",
+ self->egl_context, egl_surface));
+
+ if (!eglMakeCurrent (display_x11->egl_display,
+ egl_surface,
+ egl_surface,
+ self->egl_context))
+ return FALSE;
+
+ /* If the WM is compositing there is no particular need to delay
+ * the swap when drawing on the offscreen, rendering to the screen
+ * happens later anyway, and its up to the compositor to sync that
+ * to the vblank. */
+ do_frame_sync = ! gdk_display_is_composited (display);
+
+ if (do_frame_sync != self->do_frame_sync)
+ {
+ self->do_frame_sync = do_frame_sync;
+
+ if (do_frame_sync)
+ eglSwapInterval (display_x11->egl_display, 1);
+ else
+ eglSwapInterval (display_x11->egl_display, 0);
+ }
+
+ return TRUE;
}
static cairo_region_t *
@@ -335,20 +443,13 @@ gdk_x11_gl_context_egl_get_damage (GdkGLContext *context)
if (display_x11->has_egl_buffer_age)
{
GdkSurface *surface = gdk_draw_context_get_surface (GDK_DRAW_CONTEXT (context));
- GdkGLContext *shared = gdk_gl_context_get_shared_context (context);
- GdkX11GLContextEGL *shared_egl;
EGLSurface egl_surface;
int buffer_age = 0;
- shared = gdk_gl_context_get_shared_context (context);
- if (shared == NULL)
- shared = context;
- shared_egl = GDK_X11_GL_CONTEXT_EGL (shared);
+ egl_surface = gdk_x11_surface_get_egl_surface (surface);
+ gdk_gl_context_make_current (context);
- egl_surface = gdk_x11_surface_get_egl_surface (surface, shared_egl->egl_config);
- gdk_gl_context_make_current (shared);
-
- eglQuerySurface (gdk_x11_display_get_egl_display (display),
+ eglQuerySurface (display_x11->egl_display,
egl_surface,
EGL_BUFFER_AGE_EXT,
&buffer_age);
@@ -389,20 +490,16 @@ gdk_x11_gl_context_egl_realize (GdkGLContext *context,
GdkX11Display *display_x11;
GdkDisplay *display;
GdkX11GLContextEGL *context_egl;
- GdkGLContext *share, *shared_data_context;
- GdkSurface *surface;
+ GdkGLContext *share;
gboolean debug_bit, forward_bit, legacy_bit, use_es;
int major, minor, i = 0;
EGLint context_attrs[N_EGL_ATTRS];
- EGLDisplay egl_display;
- surface = gdk_gl_context_get_surface (context);
- display = gdk_surface_get_display (surface);
+ display = gdk_gl_context_get_display (context);
context_egl = GDK_X11_GL_CONTEXT_EGL (context);
display_x11 = GDK_X11_DISPLAY (display);
- share = gdk_gl_context_get_shared_context (context);
- shared_data_context = gdk_surface_get_shared_data_gl_context (surface);
+ share = gdk_display_get_gl_context (display);
gdk_gl_context_get_required_version (context, &major, &minor);
debug_bit = gdk_gl_context_get_debug_enabled (context);
@@ -465,16 +562,12 @@ gdk_x11_gl_context_egl_realize (GdkGLContext *context,
legacy_bit ? "yes" : "no",
use_es ? "yes" : "no"));
- egl_display = gdk_x11_display_get_egl_display (display);
-
context_egl->egl_context =
- eglCreateContext (egl_display,
- context_egl->egl_config,
+ eglCreateContext (display_x11->egl_display,
+ display_x11->egl_config,
share != NULL
? GDK_X11_GL_CONTEXT_EGL (share)->egl_context
- : shared_data_context != NULL
- ? GDK_X11_GL_CONTEXT_EGL (shared_data_context)->egl_context
- : EGL_NO_CONTEXT,
+ : EGL_NO_CONTEXT,
context_attrs);
/* If we're not asking for a GLES context, and we don't have the legacy bit set
@@ -493,13 +586,11 @@ gdk_x11_gl_context_egl_realize (GdkGLContext *context,
g_message ("Context creation failed; trying legacy EGL context"));
context_egl->egl_context =
- eglCreateContext (egl_display,
- context_egl->egl_config,
+ eglCreateContext (display_x11->egl_display,
+ display_x11->egl_config,
share != NULL
? GDK_X11_GL_CONTEXT_EGL (share)->egl_context
- : shared_data_context != NULL
- ? GDK_X11_GL_CONTEXT_EGL (shared_data_context)->egl_context
- : EGL_NO_CONTEXT,
+ : EGL_NO_CONTEXT,
context_attrs);
}
@@ -530,15 +621,14 @@ gdk_x11_gl_context_egl_dispose (GObject *gobject)
if (context_egl->egl_context != NULL)
{
GdkGLContext *context = GDK_GL_CONTEXT (gobject);
- GdkDisplay *display = gdk_gl_context_get_display (context);
- EGLDisplay egl_display = gdk_x11_display_get_egl_display (display);
+ GdkX11Display *display_x11 = GDK_X11_DISPLAY (gdk_gl_context_get_display (context));
/* Unset the current context if we're disposing it */
if (eglGetCurrentContext () == context_egl->egl_context)
- eglMakeCurrent (egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ eglMakeCurrent (display_x11->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
GDK_NOTE (OPENGL, g_message ("Destroying EGL context"));
- eglDestroyContext (egl_display, context_egl->egl_context);
+ eglDestroyContext (display_x11->egl_display, context_egl->egl_context);
context_egl->egl_context = NULL;
}
@@ -553,8 +643,11 @@ gdk_x11_gl_context_egl_class_init (GdkX11GLContextEGLClass *klass)
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
context_class->realize = gdk_x11_gl_context_egl_realize;
+ context_class->make_current = gdk_x11_gl_context_egl_make_current;
+ context_class->clear_current = gdk_x11_gl_context_egl_clear_current;
context_class->get_damage = gdk_x11_gl_context_egl_get_damage;
+ draw_context_class->begin_frame = gdk_x11_gl_context_egl_begin_frame;
draw_context_class->end_frame = gdk_x11_gl_context_egl_end_frame;
gobject_class->dispose = gdk_x11_gl_context_egl_dispose;
@@ -563,220 +656,100 @@ gdk_x11_gl_context_egl_class_init (GdkX11GLContextEGLClass *klass)
static void
gdk_x11_gl_context_egl_init (GdkX11GLContextEGL *self)
{
+ self->do_frame_sync = TRUE;
}
gboolean
-gdk_x11_screen_init_egl (GdkX11Screen *screen)
+gdk_x11_display_init_egl (GdkX11Display *self,
+ gboolean force,
+ Visual **out_visual,
+ int *out_depth,
+ GError **error)
{
- GdkDisplay *display = GDK_SCREEN_DISPLAY (screen);
- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
- EGLDisplay edpy;
+ GdkDisplay *display = GDK_DISPLAY (self);
Display *dpy;
int major, minor;
- if (display_x11->have_egl)
- return TRUE;
-
dpy = gdk_x11_display_get_xdisplay (display);
if (!epoxy_has_egl ())
- return FALSE;
-
- edpy = gdk_x11_display_get_egl_display (display);
- if (edpy == NULL)
- return FALSE;
-
- if (!eglInitialize (edpy, &major, &minor))
- return FALSE;
-
- /* While NVIDIA might support EGL, it might very well not support
- * all the EGL subset we rely on; we should be looking at more
- * EGL extensions, but for the time being, this is a blanket
- * fallback to GLX
- */
- const char *vendor = eglQueryString (edpy, EGL_VENDOR);
- if (strstr (vendor, "NVIDIA") != NULL)
{
- eglTerminate (edpy);
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("EGL is not supported"));
return FALSE;
}
- display_x11->have_egl = TRUE;
- display_x11->egl_version = epoxy_egl_version (dpy);
-
- display_x11->has_egl_khr_create_context =
- epoxy_has_egl_extension (edpy, "EGL_KHR_create_context");
- display_x11->has_egl_buffer_age =
- epoxy_has_egl_extension (edpy, "EGL_EXT_buffer_age");
- display_x11->has_egl_swap_buffers_with_damage =
- epoxy_has_egl_extension (edpy, "EGL_EXT_swap_buffers_with_damage");
- display_x11->has_egl_surfaceless_context =
- epoxy_has_egl_extension (edpy, "EGL_KHR_surfaceless_context");
-
- GDK_DISPLAY_NOTE (display, OPENGL,
- g_message ("EGL found\n"
- " - Version: %s\n"
- " - Vendor: %s\n"
- " - Client API: %s\n"
- " - Checked extensions:\n"
- "\t* EGL_KHR_create_context: %s\n"
- "\t* EGL_EXT_buffer_age: %s\n"
- "\t* EGL_EXT_swap_buffers_with_damage: %s\n"
- "\t* EGL_KHR_surfaceless_context: %s\n",
- eglQueryString (edpy, EGL_VERSION),
- eglQueryString (edpy, EGL_VENDOR),
- eglQueryString (edpy, EGL_CLIENT_APIS),
- display_x11->has_egl_khr_create_context ? "yes" : "no",
- display_x11->has_egl_buffer_age ? "yes" : "no",
- display_x11->has_egl_swap_buffers_with_damage ? "yes" : "no",
- display_x11->has_egl_surfaceless_context ? "yes" : "no"));
-
- return TRUE;
-}
-
-#define MAX_EGL_ATTRS 30
-
-static gboolean
-find_eglconfig_for_display (GdkDisplay *display,
- EGLConfig *egl_config_out,
- GError **error)
-{
- EGLint attrs[MAX_EGL_ATTRS];
- EGLint count;
- EGLConfig egl_config;
- EGLDisplay egl_display;
- int i = 0;
-
- attrs[i++] = EGL_SURFACE_TYPE;
- attrs[i++] = EGL_WINDOW_BIT;
-
- attrs[i++] = EGL_COLOR_BUFFER_TYPE;
- attrs[i++] = EGL_RGB_BUFFER;
-
- attrs[i++] = EGL_RED_SIZE;
- attrs[i++] = 8;
- attrs[i++] = EGL_GREEN_SIZE;
- attrs[i++] = 8;
- attrs[i++] = EGL_BLUE_SIZE;
- attrs[i++] = 8;
- attrs[i++] = EGL_ALPHA_SIZE;
- attrs[i++] = 8;
-
- attrs[i++] = EGL_NONE;
- g_assert (i < MAX_EGL_ATTRS);
-
- /* Pick first valid configuration that the driver returns us */
- egl_display = gdk_x11_display_get_egl_display (display);
- if (!eglChooseConfig (egl_display, attrs, &egl_config, 1, &count) || count < 1)
+ gdk_x11_display_create_egl_display (self);
+ if (self->egl_display == NULL)
{
g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_UNSUPPORTED_FORMAT,
- _("No available configurations for the given pixel format"));
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("Failed to create EGL display"));
return FALSE;
}
- g_assert (egl_config_out);
- *egl_config_out = egl_config;
-
- return TRUE;
-}
-
-#undef MAX_EGL_ATTRS
-
-GdkX11GLContext *
-gdk_x11_gl_context_egl_new (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error)
-{
- GdkDisplay *display;
- GdkX11GLContextEGL *context;
- EGLConfig egl_config;
-
- display = gdk_surface_get_display (surface);
-
- if (!find_eglconfig_for_display (display, &egl_config, error))
- return NULL;
-
- context = g_object_new (GDK_TYPE_X11_GL_CONTEXT_EGL,
- "surface", surface,
- "shared-context", share,
- NULL);
-
- context->egl_config = egl_config;
-
- return GDK_X11_GL_CONTEXT (context);
-}
-
-gboolean
-gdk_x11_gl_context_egl_make_current (GdkDisplay *display,
- GdkGLContext *context)
-{
- GdkX11GLContextEGL *context_egl = GDK_X11_GL_CONTEXT_EGL (context);
- GdkX11GLContext *context_x11 = GDK_X11_GL_CONTEXT (context);
- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
- GdkSurface *surface;
- EGLDisplay egl_display;
- EGLSurface egl_surface;
-
- egl_display = gdk_x11_display_get_egl_display (display);
-
- if (context == NULL)
+ if (!eglInitialize (self->egl_display, &major, &minor))
{
- eglMakeCurrent (egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
- return TRUE;
+ self->egl_display = NULL;
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("Could not initialize EGL display"));
+ return FALSE;
}
-
- if (context_egl->egl_context == NULL)
+ if (major < GDK_EGL_MIN_VERSION_MAJOR ||
+ (major == GDK_EGL_MIN_VERSION_MAJOR && minor < GDK_EGL_MIN_VERSION_MINOR))
{
- g_critical ("No EGL context associated to the GdkGLContext; you must "
- "call gdk_gl_context_realize() first.");
+ eglTerminate (dpy);
+ self->egl_display = NULL;
+ g_set_error (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("EGL version %d.%d is too old. GTK requires %d.%d"),
+ major, minor, GDK_EGL_MIN_VERSION_MAJOR, GDK_EGL_MIN_VERSION_MINOR);
return FALSE;
}
- surface = gdk_gl_context_get_surface (context);
-
- if (context_x11->is_attached || gdk_draw_context_is_in_frame (GDK_DRAW_CONTEXT (context)))
- egl_surface = gdk_x11_surface_get_egl_surface (surface, context_egl->egl_config);
- else
+ if (!epoxy_has_egl_extension (self->egl_display, "EGL_KHR_surfaceless_context"))
{
- if (display_x11->has_egl_surfaceless_context)
- egl_surface = EGL_NO_SURFACE;
- else
- egl_surface = gdk_x11_display_get_egl_dummy_surface (display, context_egl->egl_config);
+ eglTerminate (dpy);
+ self->egl_display = NULL;
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_PROFILE,
+ _("Surfaceless contexts are not supported on this EGL implementation"));
+ return FALSE;
}
- GDK_DISPLAY_NOTE (display, OPENGL,
- g_message ("Making EGL context %p current to surface %p",
- context_egl->egl_context, egl_surface));
-
- if (!eglMakeCurrent (egl_display, egl_surface, egl_surface, context_egl->egl_context))
+ if (!gdk_x11_display_create_egl_config (self, force, out_visual, out_depth, error))
{
- GDK_DISPLAY_NOTE (display, OPENGL,
- g_message ("Making EGL context current failed"));
+ eglTerminate (self->egl_display);
+ self->egl_display = NULL;
return FALSE;
}
- if (context_x11->is_attached)
- {
- gboolean do_frame_sync = FALSE;
-
- /* If the WM is compositing there is no particular need to delay
- * the swap when drawing on the offscreen, rendering to the screen
- * happens later anyway, and its up to the compositor to sync that
- * to the vblank. */
- do_frame_sync = ! gdk_display_is_composited (display);
+ self->egl_version = epoxy_egl_version (dpy);
- if (do_frame_sync != context_x11->do_frame_sync)
- {
- context_x11->do_frame_sync = do_frame_sync;
+ self->has_egl_khr_create_context =
+ epoxy_has_egl_extension (self->egl_display, "EGL_KHR_create_context");
+ self->has_egl_buffer_age =
+ epoxy_has_egl_extension (self->egl_display, "EGL_EXT_buffer_age");
+ self->has_egl_swap_buffers_with_damage =
+ epoxy_has_egl_extension (self->egl_display, "EGL_EXT_swap_buffers_with_damage");
- if (do_frame_sync)
- eglSwapInterval (egl_display, 1);
- else
- eglSwapInterval (egl_display, 0);
- }
- }
+ GDK_DISPLAY_NOTE (display, OPENGL,
+ g_message ("EGL found\n"
+ " - Version: %s\n"
+ " - Vendor: %s\n"
+ " - Client API: %s\n"
+ " - Checked extensions:\n"
+ "\t* EGL_KHR_create_context: %s\n"
+ "\t* EGL_EXT_buffer_age: %s\n"
+ "\t* EGL_EXT_swap_buffers_with_damage: %s\n",
+ eglQueryString (self->egl_display, EGL_VERSION),
+ eglQueryString (self->egl_display, EGL_VENDOR),
+ eglQueryString (self->egl_display, EGL_CLIENT_APIS),
+ self->has_egl_khr_create_context ? "yes" : "no",
+ self->has_egl_buffer_age ? "yes" : "no",
+ self->has_egl_swap_buffers_with_damage ? "yes" : "no"));
return TRUE;
}
@@ -805,10 +778,7 @@ gdk_x11_display_get_egl_version (GdkDisplay *display,
GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
- if (display_x11->have_glx)
- return FALSE;
-
- if (!gdk_x11_screen_init_egl (display_x11->screen))
+ if (display_x11->egl_display == NULL)
return FALSE;
if (major != NULL)
diff --git a/gdk/x11/gdkglcontext-glx.c b/gdk/x11/gdkglcontext-glx.c
index eece4ce360..6e4c46abb1 100644
--- a/gdk/x11/gdkglcontext-glx.c
+++ b/gdk/x11/gdkglcontext-glx.c
@@ -19,7 +19,6 @@
#include "gdkx11glcontext.h"
#include "gdkx11screen.h"
#include "gdkx11surface.h"
-#include "gdkvisual-x11.h"
#include "gdkx11property.h"
#include <X11/Xatom.h>
@@ -36,70 +35,47 @@ struct _GdkX11GLContextGLX
GdkX11GLContext parent_instance;
GLXContext glx_context;
- GLXFBConfig glx_config;
- GLXDrawable attached_drawable;
- GLXDrawable unattached_drawable;
#ifdef HAVE_XDAMAGE
GLsync frame_fence;
Damage xdamage;
#endif
- guint is_direct : 1;
+ guint do_frame_sync : 1;
};
typedef struct _GdkX11GLContextClass GdkX11GLContextGLXClass;
-typedef struct {
- GdkDisplay *display;
-
- GLXDrawable glx_drawable;
-
- Window dummy_xwin;
- GLXWindow dummy_glx;
-
- guint32 last_frame_counter;
-} DrawableInfo;
-
G_DEFINE_TYPE (GdkX11GLContextGLX, gdk_x11_gl_context_glx, GDK_TYPE_X11_GL_CONTEXT)
-static void
-drawable_info_free (gpointer data_)
+static GLXDrawable
+gdk_x11_surface_get_glx_drawable (GdkSurface *surface)
{
- DrawableInfo *data = data_;
- Display *dpy;
-
- gdk_x11_display_error_trap_push (data->display);
-
- dpy = gdk_x11_display_get_xdisplay (data->display);
-
- if (data->glx_drawable)
- glXDestroyWindow (dpy, data->glx_drawable);
-
- if (data->dummy_glx)
- glXDestroyWindow (dpy, data->dummy_glx);
+ GdkX11Surface *self = GDK_X11_SURFACE (surface);
+ GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (self));
+ GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
- if (data->dummy_xwin)
- XDestroyWindow (dpy, data->dummy_xwin);
+ if (self->glx_drawable)
+ return self->glx_drawable;
- gdk_x11_display_error_trap_pop_ignored (data->display);
+ self->glx_drawable = glXCreateWindow (gdk_x11_display_get_xdisplay (display),
+ display_x11->glx_config,
+ gdk_x11_surface_get_xid (surface),
+ NULL);
- g_slice_free (DrawableInfo, data);
+ return self->glx_drawable;
}
-static DrawableInfo *
-get_glx_drawable_info (GdkSurface *surface)
+void
+gdk_x11_surface_destroy_glx_drawable (GdkX11Surface *self)
{
- return g_object_get_data (G_OBJECT (surface), "-gdk-x11-surface-glx-info");
-}
+ if (self->glx_drawable == None)
+ return;
-static void
-set_glx_drawable_info (GdkSurface *surface,
- DrawableInfo *info)
-{
- g_object_set_data_full (G_OBJECT (surface), "-gdk-x11-surface-glx-info",
- info,
- drawable_info_free);
+ glXDestroyWindow (gdk_x11_display_get_xdisplay (gdk_surface_get_display (GDK_SURFACE (self))),
+ self->glx_drawable);
+
+ self->glx_drawable = None;
}
static void
@@ -127,35 +103,44 @@ maybe_wait_for_vblank (GdkDisplay *display,
}
}
+static GLXDrawable
+gdk_x11_gl_context_glx_get_drawable (GdkX11GLContextGLX *self)
+{
+ GdkDrawContext *draw_context = GDK_DRAW_CONTEXT (self);
+ GdkSurface *surface;
+
+ if (gdk_draw_context_is_in_frame (draw_context))
+ surface = gdk_draw_context_get_surface (draw_context);
+ else
+ surface = GDK_X11_DISPLAY (gdk_draw_context_get_display (draw_context))->leader_gdk_surface;
+
+ return gdk_x11_surface_get_glx_drawable (surface);
+}
+
static void
gdk_x11_gl_context_glx_end_frame (GdkDrawContext *draw_context,
cairo_region_t *painted)
{
+ GdkX11GLContextGLX *self = GDK_X11_GL_CONTEXT_GLX (draw_context);
GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
- GdkX11GLContext *context_x11 = GDK_X11_GL_CONTEXT (context);
- GdkX11GLContextGLX *context_glx = GDK_X11_GL_CONTEXT_GLX (context);
GdkSurface *surface = gdk_gl_context_get_surface (context);
+ GdkX11Surface *x11_surface = GDK_X11_SURFACE (surface);
GdkDisplay *display = gdk_gl_context_get_display (context);
Display *dpy = gdk_x11_display_get_xdisplay (display);
GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
- DrawableInfo *info;
GLXDrawable drawable;
GDK_DRAW_CONTEXT_CLASS (gdk_x11_gl_context_glx_parent_class)->end_frame (draw_context, painted);
- if (gdk_gl_context_get_shared_context (context) != NULL)
- return;
gdk_gl_context_make_current (context);
- info = get_glx_drawable_info (surface);
-
- drawable = context_glx->attached_drawable;
+ drawable = gdk_x11_surface_get_glx_drawable (surface);
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("Flushing GLX buffers for drawable %lu (window: %lu), frame sync: %s",
(unsigned long) drawable,
(unsigned long) gdk_x11_surface_get_xid (surface),
- context_x11->do_frame_sync ? "yes" : "no"));
+ self->do_frame_sync ? "yes" : "no"));
gdk_profiler_add_mark (GDK_PROFILER_CURRENT_TIME, 0, "x11", "swap buffers");
@@ -167,7 +152,7 @@ gdk_x11_gl_context_glx_end_frame (GdkDrawContext *draw_context,
* GLX_SGI_swap_control, and we ask the driver to do the right
* thing.
*/
- if (context_x11->do_frame_sync)
+ if (self->do_frame_sync)
{
guint32 end_frame_counter = 0;
gboolean has_counter = display_x11->has_glx_video_sync;
@@ -176,15 +161,13 @@ gdk_x11_gl_context_glx_end_frame (GdkDrawContext *draw_context,
if (display_x11->has_glx_video_sync)
glXGetVideoSyncSGI (&end_frame_counter);
- if (context_x11->do_frame_sync && !display_x11->has_glx_swap_interval)
+ if (self->do_frame_sync && !display_x11->has_glx_swap_interval)
{
glFinish ();
if (has_counter && can_wait)
{
- guint32 last_counter = info != NULL ? info->last_frame_counter : 0;
-
- if (last_counter == end_frame_counter)
+ if (x11_surface->glx_frame_counter == end_frame_counter)
maybe_wait_for_vblank (display, drawable);
}
else if (can_wait)
@@ -195,11 +178,11 @@ gdk_x11_gl_context_glx_end_frame (GdkDrawContext *draw_context,
gdk_x11_surface_pre_damage (surface);
#ifdef HAVE_XDAMAGE
- if (context_glx->xdamage != 0 && _gdk_x11_surface_syncs_frames (surface))
+ if (self->xdamage != 0 && _gdk_x11_surface_syncs_frames (surface))
{
- g_assert (context_glx->frame_fence == 0);
+ g_assert (self->frame_fence == 0);
- context_glx->frame_fence = glFenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
+ self->frame_fence = glFenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
/* We consider the frame still getting painted until the GL operation is
* finished, and the window gets damage reported from the X server.
@@ -212,8 +195,67 @@ gdk_x11_gl_context_glx_end_frame (GdkDrawContext *draw_context,
glXSwapBuffers (dpy, drawable);
- if (context_x11->do_frame_sync && info != NULL && display_x11->has_glx_video_sync)
- glXGetVideoSyncSGI (&info->last_frame_counter);
+ if (self->do_frame_sync && display_x11->has_glx_video_sync)
+ glXGetVideoSyncSGI (&x11_surface->glx_frame_counter);
+}
+
+static gboolean
+gdk_x11_gl_context_glx_clear_current (GdkGLContext *context)
+{
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ Display *dpy = gdk_x11_display_get_xdisplay (display);
+
+ glXMakeContextCurrent (dpy, None, None, NULL);
+ return TRUE;
+}
+
+static gboolean
+gdk_x11_gl_context_glx_make_current (GdkGLContext *context,
+ gboolean surfaceless)
+
+{
+ GdkX11GLContextGLX *self = GDK_X11_GL_CONTEXT_GLX (context);
+ GdkDisplay *display = gdk_gl_context_get_display (context);
+ Display *dpy = gdk_x11_display_get_xdisplay (display);
+ gboolean do_frame_sync = FALSE;
+ GdkSurface *surface;
+ GLXWindow drawable;
+
+ drawable = gdk_x11_gl_context_glx_get_drawable (self);
+
+ if (!surfaceless)
+ surface = gdk_gl_context_get_surface (context);
+ else
+ surface = GDK_X11_DISPLAY (display)->leader_gdk_surface;
+ drawable = gdk_x11_surface_get_glx_drawable (surface);
+
+ GDK_DISPLAY_NOTE (display, OPENGL,
+ g_message ("Making GLX context %p current to drawable %lu",
+ context, (unsigned long) drawable));
+
+ if (!glXMakeContextCurrent (dpy, drawable, drawable, self->glx_context))
+ return FALSE;
+
+ if (!surfaceless && GDK_X11_DISPLAY (display)->has_glx_swap_interval)
+ {
+ /* If the WM is compositing there is no particular need to delay
+ * the swap when drawing on the offscreen, rendering to the screen
+ * happens later anyway, and its up to the compositor to sync that
+ * to the vblank. */
+ do_frame_sync = ! gdk_display_is_composited (display);
+
+ if (do_frame_sync != self->do_frame_sync)
+ {
+ self->do_frame_sync = do_frame_sync;
+
+ if (do_frame_sync)
+ glXSwapIntervalSGI (1);
+ else
+ glXSwapIntervalSGI (0);
+ }
+ }
+
+ return TRUE;
}
static cairo_region_t *
@@ -226,17 +268,10 @@ gdk_x11_gl_context_glx_get_damage (GdkGLContext *context)
if (display_x11->has_glx_buffer_age)
{
- GdkGLContext *shared;
- GdkX11GLContextGLX *shared_glx;
+ GdkX11GLContextGLX *self = GDK_X11_GL_CONTEXT_GLX (context);
- shared = gdk_gl_context_get_shared_context (context);
- if (shared == NULL)
- shared = context;
-
- shared_glx = GDK_X11_GL_CONTEXT_GLX (shared);
-
- gdk_gl_context_make_current (shared);
- glXQueryDrawable (dpy, shared_glx->attached_drawable,
+ gdk_gl_context_make_current (context);
+ glXQueryDrawable (dpy, gdk_x11_gl_context_glx_get_drawable (self),
GLX_BACK_BUFFER_AGE_EXT, &buffer_age);
switch (buffer_age)
@@ -268,15 +303,6 @@ gdk_x11_gl_context_glx_get_damage (GdkGLContext *context)
return GDK_GL_CONTEXT_CLASS (gdk_x11_gl_context_glx_parent_class)->get_damage (context);
}
-static XVisualInfo *
-find_xvisinfo_for_fbconfig (GdkDisplay *display,
- GLXFBConfig config)
-{
- Display *dpy = gdk_x11_display_get_xdisplay (display);
-
- return glXGetVisualFromFBConfig (dpy, config);
-}
-
static GLXContext
create_gl3_context (GdkDisplay *display,
GLXFBConfig config,
@@ -405,12 +431,8 @@ on_gl_surface_xevent (GdkGLContext *context,
GdkX11Display *display_x11)
{
GdkX11GLContextGLX *context_glx = GDK_X11_GL_CONTEXT_GLX (context);
- GdkX11GLContext *context_x11 = GDK_X11_GL_CONTEXT (context);
XDamageNotifyEvent *damage_xevent;
- if (!context_x11->is_attached)
- return FALSE;
-
if (xevent->type != (display_x11->damage_event_base + XDamageNotify))
return FALSE;
@@ -495,22 +517,18 @@ gdk_x11_gl_context_glx_realize (GdkGLContext *context,
GdkX11Display *display_x11;
GdkDisplay *display;
GdkX11GLContextGLX *context_glx;
- XVisualInfo *xvisinfo;
Display *dpy;
- DrawableInfo *info;
- GdkGLContext *share;
- GdkGLContext *shared_data_context;
GdkSurface *surface;
+ GdkGLContext *share;
gboolean debug_bit, compat_bit, legacy_bit, es_bit;
int major, minor, flags;
- surface = gdk_gl_context_get_surface (context);
- display = gdk_surface_get_display (surface);
+ display = gdk_gl_context_get_display (context);
dpy = gdk_x11_display_get_xdisplay (display);
context_glx = GDK_X11_GL_CONTEXT_GLX (context);
display_x11 = GDK_X11_DISPLAY (display);
- share = gdk_gl_context_get_shared_context (context);
- shared_data_context = gdk_surface_get_shared_data_gl_context (surface);
+ share = gdk_display_get_gl_context (display);
+ surface = gdk_gl_context_get_surface (context);
gdk_gl_context_get_required_version (context, &major, &minor);
debug_bit = gdk_gl_context_get_debug_enabled (context);
@@ -550,7 +568,7 @@ gdk_x11_gl_context_glx_realize (GdkGLContext *context,
if (legacy_bit && !GDK_X11_DISPLAY (display)->has_glx_create_context)
{
GDK_DISPLAY_NOTE (display, OPENGL, g_message ("Creating legacy GL context on request"));
- context_glx->glx_context = create_legacy_context (display, context_glx->glx_config, share ? share : shared_data_context);
+ context_glx->glx_context = create_legacy_context (display, display_x11->glx_config, share);
}
else
{
@@ -574,15 +592,15 @@ gdk_x11_gl_context_glx_realize (GdkGLContext *context,
GDK_DISPLAY_NOTE (display, OPENGL, g_message ("Creating GL3 context"));
context_glx->glx_context = create_gl3_context (display,
- context_glx->glx_config,
- share ? share : shared_data_context,
+ display_x11->glx_config,
+ share,
profile, flags, major, minor);
/* Fall back to legacy in case the GL3 context creation failed */
if (context_glx->glx_context == NULL)
{
GDK_DISPLAY_NOTE (display, OPENGL, g_message ("Creating fallback legacy context"));
- context_glx->glx_context = create_legacy_context (display, context_glx->glx_config, share ? share : shared_data_context);
+ context_glx->glx_context = create_legacy_context (display, display_x11->glx_config, share);
legacy_bit = TRUE;
es_bit = FALSE;
}
@@ -602,70 +620,10 @@ gdk_x11_gl_context_glx_realize (GdkGLContext *context,
/* Ensure that any other context is created with an ES bit set */
gdk_gl_context_set_use_es (context, es_bit);
- xvisinfo = find_xvisinfo_for_fbconfig (display, context_glx->glx_config);
-
- info = get_glx_drawable_info (surface);
- if (info == NULL)
- {
- XSetWindowAttributes attrs;
- unsigned long mask;
-
- gdk_x11_display_error_trap_push (display);
-
- info = g_slice_new0 (DrawableInfo);
- info->display = display;
- info->last_frame_counter = 0;
-
- attrs.override_redirect = True;
- attrs.colormap = XCreateColormap (dpy, DefaultRootWindow (dpy), xvisinfo->visual, AllocNone);
- attrs.border_pixel = 0;
- mask = CWOverrideRedirect | CWColormap | CWBorderPixel;
- info->dummy_xwin = XCreateWindow (dpy, DefaultRootWindow (dpy),
- -100, -100, 1, 1,
- 0,
- xvisinfo->depth,
- CopyFromParent,
- xvisinfo->visual,
- mask,
- &attrs);
- XMapWindow(dpy, info->dummy_xwin);
-
- if (display_x11->glx_version >= 13)
- {
- info->glx_drawable = glXCreateWindow (dpy, context_glx->glx_config,
- gdk_x11_surface_get_xid (surface),
- NULL);
- info->dummy_glx = glXCreateWindow (dpy, context_glx->glx_config, info->dummy_xwin, NULL);
- }
-
- if (gdk_x11_display_error_trap_pop (display))
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- _("Unable to create a GL context"));
-
- XFree (xvisinfo);
- drawable_info_free (info);
- glXDestroyContext (dpy, context_glx->glx_context);
- context_glx->glx_context = NULL;
-
- return FALSE;
- }
-
- set_glx_drawable_info (surface, info);
- }
-
- XFree (xvisinfo);
-
- context_glx->attached_drawable = info->glx_drawable ? info->glx_drawable : gdk_x11_surface_get_xid (surface);
- context_glx->unattached_drawable = info->dummy_glx ? info->dummy_glx : info->dummy_xwin;
-
- context_glx->is_direct = glXIsDirect (dpy, context_glx->glx_context);
-
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("Realized GLX context[%p], %s, version: %d.%d",
context_glx->glx_context,
- context_glx->is_direct ? "direct" : "indirect",
+ glXIsDirect (dpy, context_glx->glx_context) ? "direct" : "indirect",
display_x11->glx_version / 10,
display_x11->glx_version % 10));
@@ -735,6 +693,8 @@ gdk_x11_gl_context_glx_class_init (GdkX11GLContextGLXClass *klass)
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
context_class->realize = gdk_x11_gl_context_glx_realize;
+ context_class->make_current = gdk_x11_gl_context_glx_make_current;
+ context_class->clear_current = gdk_x11_gl_context_glx_clear_current;
context_class->get_damage = gdk_x11_gl_context_glx_get_damage;
draw_context_class->end_frame = gdk_x11_gl_context_glx_end_frame;
@@ -745,23 +705,42 @@ gdk_x11_gl_context_glx_class_init (GdkX11GLContextGLXClass *klass)
static void
gdk_x11_gl_context_glx_init (GdkX11GLContextGLX *self)
{
+ self->do_frame_sync = TRUE;
+}
+
+static gboolean
+visual_is_rgba (XVisualInfo *visinfo)
+{
+ return
+ visinfo->depth == 32 &&
+ visinfo->visual->red_mask == 0xff0000 &&
+ visinfo->visual->green_mask == 0x00ff00 &&
+ visinfo->visual->blue_mask == 0x0000ff;
}
#define MAX_GLX_ATTRS 30
static gboolean
-find_fbconfig (GdkDisplay *display,
- GLXFBConfig *fb_config_out,
- GError **error)
+gdk_x11_display_create_glx_config (GdkX11Display *self,
+ Visual **out_visual,
+ int *out_depth,
+ GError **error)
{
- static int attrs[MAX_GLX_ATTRS];
+ GdkDisplay *display = GDK_DISPLAY (self);
Display *dpy = gdk_x11_display_get_xdisplay (display);
+ int attrs[MAX_GLX_ATTRS];
GLXFBConfig *configs;
- int n_configs, i;
- gboolean retval = FALSE;
- VisualID xvisual_id = XVisualIDFromVisual (gdk_x11_display_get_window_visual (GDK_X11_DISPLAY (display)));
+ int count;
+ enum {
+ NO_VISUAL_FOUND,
+ WITH_MULTISAMPLING,
+ WITH_STENCIL_AND_DEPTH_BUFFER,
+ NO_ALPHA,
+ NO_ALPHA_VISUAL,
+ PERFECT
+ } best_features;
+ int i = 0;
- i = 0;
attrs[i++] = GLX_DRAWABLE_TYPE;
attrs[i++] = GLX_WINDOW_BIT;
@@ -777,408 +756,99 @@ find_fbconfig (GdkDisplay *display,
attrs[i++] = 1;
attrs[i++] = GLX_BLUE_SIZE;
attrs[i++] = 1;
-
- if (gdk_display_is_rgba (display))
- {
- attrs[i++] = GLX_ALPHA_SIZE;
- attrs[i++] = 1;
- }
- else
- {
- attrs[i++] = GLX_ALPHA_SIZE;
- attrs[i++] = GLX_DONT_CARE;
- }
+ attrs[i++] = GLX_ALPHA_SIZE;
+ attrs[i++] = 1;
attrs[i++] = None;
-
g_assert (i < MAX_GLX_ATTRS);
- configs = glXChooseFBConfig (dpy, DefaultScreen (dpy), attrs, &n_configs);
- if (configs == NULL || n_configs == 0)
+ configs = glXChooseFBConfig (dpy, DefaultScreen (dpy), attrs, &count);
+ if (configs == NULL || count == 0)
{
g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_UNSUPPORTED_FORMAT,
- _("No available configurations for the given pixel format"));
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("No GLX configurations available"));
return FALSE;
}
- for (i = 0; i < n_configs; i++)
+ best_features = NO_VISUAL_FOUND;
+
+ for (i = 0; i < count; i++)
{
XVisualInfo *visinfo;
+ int tmp;
visinfo = glXGetVisualFromFBConfig (dpy, configs[i]);
if (visinfo == NULL)
continue;
- if (visinfo->visualid != xvisual_id)
+ if (glXGetFBConfigAttrib (dpy, configs[i], GLX_SAMPLE_BUFFERS_ARB, &tmp) != Success || tmp != 0)
{
+ if (best_features < WITH_MULTISAMPLING)
+ {
+ GDK_NOTE (OPENGL, g_message ("Best GLX config is %u for visual 0x%lX with multisampling", i, visinfo->visualid));
+ best_features = WITH_MULTISAMPLING;
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->glx_config = configs[i];
+ }
XFree (visinfo);
continue;
}
- if (fb_config_out != NULL)
- *fb_config_out = configs[i];
-
- XFree (visinfo);
- retval = TRUE;
- goto out;
- }
-
- g_set_error (error, GDK_GL_ERROR,
- GDK_GL_ERROR_UNSUPPORTED_FORMAT,
- _("No available configurations for the given RGBA pixel format"));
-
-out:
- XFree (configs);
-
- return retval;
-}
-
-#undef MAX_GLX_ATTRS
-
-struct glvisualinfo {
- int supports_gl;
- int double_buffer;
- int stereo;
- int alpha_size;
- int depth_size;
- int stencil_size;
- int num_multisample;
- int visual_caveat;
-};
-
-static gboolean
-visual_compatible (const GdkX11Visual *a, const GdkX11Visual *b)
-{
- return a->type == b->type &&
- a->depth == b->depth &&
- a->red_mask == b->red_mask &&
- a->green_mask == b->green_mask &&
- a->blue_mask == b->blue_mask &&
- a->colormap_size == b->colormap_size &&
- a->bits_per_rgb == b->bits_per_rgb;
-}
-
-static gboolean
-visual_is_rgba (const GdkX11Visual *visual)
-{
- return
- visual->depth == 32 &&
- visual->red_mask == 0xff0000 &&
- visual->green_mask == 0x00ff00 &&
- visual->blue_mask == 0x0000ff;
-}
-
-/* This picks a compatible (as in has the same X visual details) visual
- that has "better" characteristics on the GL side */
-static GdkX11Visual *
-pick_better_visual_for_gl (GdkX11Screen *x11_screen,
- struct glvisualinfo *gl_info,
- GdkX11Visual *compatible)
-{
- GdkX11Visual *visual;
- int i;
- gboolean want_alpha = visual_is_rgba (compatible);
-
- /* First look for "perfect match", i.e:
- * supports gl
- * double buffer
- * alpha iff visual is an rgba visual
- * no unnecessary stuff
- */
- for (i = 0; i < x11_screen->nvisuals; i++)
- {
- visual = x11_screen->visuals[i];
- if (visual_compatible (visual, compatible) &&
- gl_info[i].supports_gl &&
- gl_info[i].double_buffer &&
- !gl_info[i].stereo &&
- (want_alpha ? (gl_info[i].alpha_size > 0) : (gl_info[i].alpha_size == 0)) &&
- (gl_info[i].depth_size == 0) &&
- (gl_info[i].stencil_size == 0) &&
- (gl_info[i].num_multisample == 0) &&
- (gl_info[i].visual_caveat == GLX_NONE_EXT))
- return visual;
- }
-
- if (!want_alpha)
- {
- /* Next, allow alpha even if we don't want it: */
- for (i = 0; i < x11_screen->nvisuals; i++)
- {
- visual = x11_screen->visuals[i];
- if (visual_compatible (visual, compatible) &&
- gl_info[i].supports_gl &&
- gl_info[i].double_buffer &&
- !gl_info[i].stereo &&
- (gl_info[i].depth_size == 0) &&
- (gl_info[i].stencil_size == 0) &&
- (gl_info[i].num_multisample == 0) &&
- (gl_info[i].visual_caveat == GLX_NONE_EXT))
- return visual;
- }
- }
-
- /* Next, allow depth and stencil buffers: */
- for (i = 0; i < x11_screen->nvisuals; i++)
- {
- visual = x11_screen->visuals[i];
- if (visual_compatible (visual, compatible) &&
- gl_info[i].supports_gl &&
- gl_info[i].double_buffer &&
- !gl_info[i].stereo &&
- (gl_info[i].num_multisample == 0) &&
- (gl_info[i].visual_caveat == GLX_NONE_EXT))
- return visual;
- }
-
- /* Next, allow multisample: */
- for (i = 0; i < x11_screen->nvisuals; i++)
- {
- visual = x11_screen->visuals[i];
- if (visual_compatible (visual, compatible) &&
- gl_info[i].supports_gl &&
- gl_info[i].double_buffer &&
- !gl_info[i].stereo &&
- (gl_info[i].visual_caveat == GLX_NONE_EXT))
- return visual;
- }
-
- return compatible;
-}
-
-static gboolean
-get_cached_gl_visuals (GdkDisplay *display, int *system, int *rgba)
-{
- gboolean found;
- Atom type_return;
- int format_return;
- gulong nitems_return;
- gulong bytes_after_return;
- guchar *data = NULL;
- Display *dpy;
-
- dpy = gdk_x11_display_get_xdisplay (display);
-
- found = FALSE;
-
- gdk_x11_display_error_trap_push (display);
- if (XGetWindowProperty (dpy, DefaultRootWindow (dpy),
- gdk_x11_get_xatom_by_name_for_display (display, "GDK_VISUALS"),
- 0, 2, False, XA_INTEGER, &type_return,
- &format_return, &nitems_return,
- &bytes_after_return, &data) == Success)
- {
- if (type_return == XA_INTEGER &&
- format_return == 32 &&
- nitems_return == 2 &&
- data != NULL)
+ if (glXGetFBConfigAttrib (dpy, configs[i], GLX_DEPTH_SIZE, &tmp) != Success || tmp != 0 ||
+ glXGetFBConfigAttrib (dpy, configs[i], GLX_STENCIL_SIZE, &tmp) != Success || tmp != 0)
{
- long *visuals = (long *) data;
-
- *system = (int)visuals[0];
- *rgba = (int)visuals[1];
- found = TRUE;
+ if (best_features < WITH_STENCIL_AND_DEPTH_BUFFER)
+ {
+ GDK_NOTE (OPENGL, g_message ("Best GLX config is %u for visual 0x%lX with a stencil or depth buffer", i, visinfo->visualid));
+ best_features = WITH_STENCIL_AND_DEPTH_BUFFER;
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->glx_config = configs[i];
+ }
+ XFree (visinfo);
+ continue;
}
- }
- gdk_x11_display_error_trap_pop_ignored (display);
-
- if (data)
- XFree (data);
-
- return found;
-}
-
-static void
-save_cached_gl_visuals (GdkDisplay *display, int system, int rgba)
-{
- long visualdata[2];
- Display *dpy;
-
- dpy = gdk_x11_display_get_xdisplay (display);
-
- visualdata[0] = system;
- visualdata[1] = rgba;
-
- gdk_x11_display_error_trap_push (display);
- XChangeProperty (dpy, DefaultRootWindow (dpy),
- gdk_x11_get_xatom_by_name_for_display (display, "GDK_VISUALS"),
- XA_INTEGER, 32, PropModeReplace,
- (unsigned char *)visualdata, 2);
- gdk_x11_display_error_trap_pop_ignored (display);
-}
-
-void
-gdk_x11_screen_update_visuals_for_glx (GdkX11Screen *x11_screen)
-{
- GdkDisplay *display;
- GdkX11Display *display_x11;
- Display *dpy;
- struct glvisualinfo *gl_info;
- int i;
- int system_visual_id, rgba_visual_id;
-
- display = x11_screen->display;
- display_x11 = GDK_X11_DISPLAY (display);
- dpy = gdk_x11_display_get_xdisplay (display);
-
- if (display_x11->have_egl)
- return;
-
- /* We save the default visuals as a property on the root window to avoid
- having to initialize GL each time, as it may not be used later. */
- if (get_cached_gl_visuals (display, &system_visual_id, &rgba_visual_id))
- {
- for (i = 0; i < x11_screen->nvisuals; i++)
+
+ if (!visual_is_rgba (visinfo))
{
- GdkX11Visual *visual = x11_screen->visuals[i];
- int visual_id = gdk_x11_visual_get_xvisual (visual)->visualid;
-
- if (visual_id == system_visual_id)
- x11_screen->system_visual = visual;
- if (visual_id == rgba_visual_id)
- x11_screen->rgba_visual = visual;
+ if (best_features < NO_ALPHA_VISUAL)
+ {
+ GDK_NOTE (OPENGL, g_message ("Best GLX config is %u for visual 0x%lX with no RGBA Visual", i, visinfo->visualid));
+ best_features = NO_ALPHA_VISUAL;
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->glx_config = configs[i];
+ }
+ XFree (visinfo);
+ continue;
}
- return;
- }
-
- if (!gdk_x11_screen_init_glx (x11_screen))
- return;
-
- gl_info = g_new0 (struct glvisualinfo, x11_screen->nvisuals);
-
- for (i = 0; i < x11_screen->nvisuals; i++)
- {
- XVisualInfo *visual_list;
- XVisualInfo visual_template;
- int nxvisuals;
-
- visual_template.screen = x11_screen->screen_num;
- visual_template.visualid = gdk_x11_visual_get_xvisual (x11_screen->visuals[i])->visualid;
- visual_list = XGetVisualInfo (x11_screen->xdisplay, VisualIDMask| VisualScreenMask, &visual_template, &nxvisuals);
-
- if (visual_list == NULL)
- continue;
-
- glXGetConfig (dpy, &visual_list[0], GLX_USE_GL, &gl_info[i].supports_gl);
- glXGetConfig (dpy, &visual_list[0], GLX_DOUBLEBUFFER, &gl_info[i].double_buffer);
- glXGetConfig (dpy, &visual_list[0], GLX_STEREO, &gl_info[i].stereo);
- glXGetConfig (dpy, &visual_list[0], GLX_ALPHA_SIZE, &gl_info[i].alpha_size);
- glXGetConfig (dpy, &visual_list[0], GLX_DEPTH_SIZE, &gl_info[i].depth_size);
- glXGetConfig (dpy, &visual_list[0], GLX_STENCIL_SIZE, &gl_info[i].stencil_size);
-
- if (display_x11->has_glx_multisample)
- glXGetConfig(dpy, &visual_list[0], GLX_SAMPLE_BUFFERS_ARB, &gl_info[i].num_multisample);
-
- if (display_x11->has_glx_visual_rating)
- glXGetConfig(dpy, &visual_list[0], GLX_VISUAL_CAVEAT_EXT, &gl_info[i].visual_caveat);
- else
- gl_info[i].visual_caveat = GLX_NONE_EXT;
-
- XFree (visual_list);
- }
-
- x11_screen->system_visual = pick_better_visual_for_gl (x11_screen, gl_info, x11_screen->system_visual);
- if (x11_screen->rgba_visual)
- x11_screen->rgba_visual = pick_better_visual_for_gl (x11_screen, gl_info, x11_screen->rgba_visual);
-
- g_free (gl_info);
-
- save_cached_gl_visuals (display,
- gdk_x11_visual_get_xvisual (x11_screen->system_visual)->visualid,
- x11_screen->rgba_visual
- ? gdk_x11_visual_get_xvisual (x11_screen->rgba_visual)->visualid
- : 0);
-}
-
-GdkX11GLContext *
-gdk_x11_gl_context_glx_new (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error)
-{
- GdkDisplay *display;
- GdkX11GLContextGLX *context;
- GLXFBConfig config;
-
- display = gdk_surface_get_display (surface);
- if (!find_fbconfig (display, &config, error))
- return NULL;
-
- context = g_object_new (GDK_TYPE_X11_GL_CONTEXT_GLX,
- "surface", surface,
- "shared-context", share,
- NULL);
-
- context->glx_config = config;
-
- return GDK_X11_GL_CONTEXT (context);
-}
-
-gboolean
-gdk_x11_gl_context_glx_make_current (GdkDisplay *display,
- GdkGLContext *context)
-{
- GdkX11GLContextGLX *context_glx;
- GdkX11GLContext *context_x11;
- Display *dpy = gdk_x11_display_get_xdisplay (display);
- gboolean do_frame_sync = FALSE;
- GLXWindow drawable;
-
- if (context == NULL)
- {
- glXMakeContextCurrent (dpy, None, None, NULL);
- return TRUE;
- }
-
- context_glx = GDK_X11_GL_CONTEXT_GLX (context);
- if (context_glx->glx_context == NULL)
- {
- g_critical ("No GLX context associated to the GdkGLContext; you must "
- "call gdk_gl_context_realize() first.");
- return FALSE;
+ GDK_NOTE (OPENGL, g_message ("GLX config %u for visual 0x%lX is the perfect choice", i, visinfo->visualid));
+ best_features = PERFECT;
+ *out_visual = visinfo->visual;
+ *out_depth = visinfo->depth;
+ self->glx_config = configs[i];
+ XFree (visinfo);
+ break;
}
- context_x11 = GDK_X11_GL_CONTEXT (context);
- if (context_x11->is_attached || gdk_draw_context_is_in_frame (GDK_DRAW_CONTEXT (context)))
- drawable = context_glx->attached_drawable;
- else
- drawable = context_glx->unattached_drawable;
-
- GDK_DISPLAY_NOTE (display, OPENGL,
- g_message ("Making GLX context %p current to drawable %lu",
- context, (unsigned long) drawable));
+ XFree (configs);
- if (!glXMakeContextCurrent (dpy, drawable, drawable, context_glx->glx_context))
+ if (best_features == NO_VISUAL_FOUND)
{
- GDK_DISPLAY_NOTE (display, OPENGL,
- g_message ("Making GLX context current failed"));
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("No GLX configuration with required features found"));
return FALSE;
}
- if (context_x11->is_attached && GDK_X11_DISPLAY (display)->has_glx_swap_interval)
- {
- /* If the WM is compositing there is no particular need to delay
- * the swap when drawing on the offscreen, rendering to the screen
- * happens later anyway, and its up to the compositor to sync that
- * to the vblank. */
- do_frame_sync = ! gdk_display_is_composited (display);
-
- if (do_frame_sync != context_x11->do_frame_sync)
- {
- context_x11->do_frame_sync = do_frame_sync;
-
- if (do_frame_sync)
- glXSwapIntervalSGI (1);
- else
- glXSwapIntervalSGI (0);
- }
- }
-
return TRUE;
}
+#undef MAX_GLX_ATTRS
+
/**
* gdk_x11_display_get_glx_version:
* @display: (type GdkX11Display): a `GdkDisplay`
@@ -1201,7 +871,7 @@ gdk_x11_display_get_glx_version (GdkDisplay *display,
GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
- if (!gdk_x11_screen_init_glx (display_x11->screen))
+ if (display_x11->glx_config == NULL)
return FALSE;
if (major != NULL)
@@ -1213,42 +883,41 @@ gdk_x11_display_get_glx_version (GdkDisplay *display,
}
/*< private >
- * gdk_x11_screen_init_glx:
- * @screen: an X11 screen
+ * gdk_x11_display_init_glx:
+ * @display_x11: an X11 display that has not been inited yet.
+ * @out_visual: set to the Visual to be used with the returned config
+ * @out_depth: set to the depth to be used with the returned config
+ * @error: Return location for error
*
* Initializes the cached GLX state for the given @screen.
*
- * It's safe to call this function multiple times.
+ * This function must be called exactly once during initialization.
*
* Returns: %TRUE if GLX was initialized
*/
gboolean
-gdk_x11_screen_init_glx (GdkX11Screen *screen)
+gdk_x11_display_init_glx (GdkX11Display *display_x11,
+ Visual **out_visual,
+ int *out_depth,
+ GError **error)
{
- GdkDisplay *display = GDK_SCREEN_DISPLAY (screen);
- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
+ GdkDisplay *display = GDK_DISPLAY (display_x11);
Display *dpy;
- int error_base, event_base;
int screen_num;
- if (display_x11->have_glx)
- return TRUE;
-
dpy = gdk_x11_display_get_xdisplay (display);
if (!epoxy_has_glx (dpy))
- return FALSE;
-
- if (!glXQueryExtension (dpy, &error_base, &event_base))
- return FALSE;
-
- screen_num = screen->screen_num;
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ _("GLX is not supported"));
+ return FALSE;
+ }
- display_x11->have_glx = TRUE;
+ screen_num = display_x11->screen->screen_num;
display_x11->glx_version = epoxy_glx_version (dpy, screen_num);
- display_x11->glx_error_base = error_base;
- display_x11->glx_event_base = event_base;
display_x11->has_glx_create_context =
epoxy_has_glx_extension (dpy, screen_num, "GLX_ARB_create_context_profile");
@@ -1306,6 +975,9 @@ gdk_x11_screen_init_glx (GdkX11Screen *screen)
XFree (data);
}
+ if (!gdk_x11_display_create_glx_config (display_x11, out_visual, out_depth, error))
+ return FALSE;
+
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("GLX version %d.%d found\n"
" - Vendor: %s\n"
diff --git a/gdk/x11/gdkglcontext-x11.c b/gdk/x11/gdkglcontext-x11.c
index cb87cf8425..d758066812 100644
--- a/gdk/x11/gdkglcontext-x11.c
+++ b/gdk/x11/gdkglcontext-x11.c
@@ -29,7 +29,6 @@
#include "gdkx11glcontext.h"
#include "gdkx11screen.h"
#include "gdkx11surface.h"
-#include "gdkvisual-x11.h"
#include "gdkx11property.h"
#include <X11/Xatom.h>
@@ -51,78 +50,5 @@ gdk_x11_gl_context_class_init (GdkX11GLContextClass *klass)
static void
gdk_x11_gl_context_init (GdkX11GLContext *self)
{
- self->do_frame_sync = TRUE;
}
-gboolean
-gdk_x11_screen_init_gl (GdkX11Screen *screen)
-{
- GdkDisplay *display G_GNUC_UNUSED = GDK_SCREEN_DISPLAY (screen);
-
- if (GDK_DISPLAY_DEBUG_CHECK (display, GL_DISABLE))
- return FALSE;
-
- if (!GDK_DISPLAY_DEBUG_CHECK (display, GL_GLX))
- {
- /* We favour EGL */
- if (gdk_x11_screen_init_egl (screen))
- return TRUE;
- }
-
- if (gdk_x11_screen_init_glx (screen))
- return TRUE;
-
- return FALSE;
-}
-
-GdkGLContext *
-gdk_x11_surface_create_gl_context (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error)
-{
- GdkX11GLContext *context = NULL;
- GdkX11Display *display_x11;
- GdkDisplay *display;
-
- display = gdk_surface_get_display (surface);
-
- if (!gdk_x11_screen_init_gl (GDK_SURFACE_SCREEN (surface)))
- {
- g_set_error_literal (error, GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- _("No GL implementation is available"));
- return NULL;
- }
-
- display_x11 = GDK_X11_DISPLAY (display);
- if (display_x11->have_egl)
- context = gdk_x11_gl_context_egl_new (surface, attached, share, error);
- else if (display_x11->have_glx)
- context = gdk_x11_gl_context_glx_new (surface, attached, share, error);
- else
- g_assert_not_reached ();
-
- if (context == NULL)
- return NULL;
-
- context->is_attached = attached;
-
- return GDK_GL_CONTEXT (context);
-}
-
-gboolean
-gdk_x11_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context)
-{
- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
-
- if (display_x11->have_egl)
- return gdk_x11_gl_context_egl_make_current (display, context);
- else if (display_x11->have_glx)
- return gdk_x11_gl_context_glx_make_current (display, context);
- else
- g_assert_not_reached ();
-
- return FALSE;
-}
diff --git a/gdk/x11/gdkglcontext-x11.h b/gdk/x11/gdkglcontext-x11.h
index dc6048b3fe..89bc03b578 100644
--- a/gdk/x11/gdkglcontext-x11.h
+++ b/gdk/x11/gdkglcontext-x11.h
@@ -34,8 +34,7 @@
#include <epoxy/glx.h>
#include "gdkglcontextprivate.h"
-#include "gdkdisplayprivate.h"
-#include "gdkvisual-x11.h"
+#include "gdkdisplay-x11.h"
#include "gdksurface.h"
#include "gdkinternals.h"
@@ -48,27 +47,13 @@ G_BEGIN_DECLS
struct _GdkX11GLContext
{
GdkGLContext parent_instance;
-
- guint do_frame_sync : 1;
- guint is_attached : 1;
};
struct _GdkX11GLContextClass
{
GdkGLContextClass parent_class;
-
- void (* bind_for_frame_fence) (GdkX11GLContext *self);
};
-gboolean gdk_x11_screen_init_gl (GdkX11Screen *screen);
-
-GdkGLContext * gdk_x11_surface_create_gl_context (GdkSurface *window,
- gboolean attached,
- GdkGLContext *share,
- GError **error);
-gboolean gdk_x11_display_make_gl_context_current (GdkDisplay *display,
- GdkGLContext *context);
-
/* GLX */
#define GDK_TYPE_X11_GL_CONTEXT_GLX (gdk_x11_gl_context_glx_get_type())
#define GDK_X11_GL_CONTEXT_GLX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_X11_GL_CONTEXT_GLX, GdkX11GLContextGLX))
@@ -76,16 +61,13 @@ gboolean gdk_x11_display_make_gl_context_current (GdkDisplay *display,
typedef struct _GdkX11GLContextGLX GdkX11GLContextGLX;
-gboolean gdk_x11_screen_init_glx (GdkX11Screen *screen);
-void gdk_x11_screen_update_visuals_for_glx (GdkX11Screen *screen);
+gboolean gdk_x11_display_init_glx (GdkX11Display *display_x11,
+ Visual **out_visual,
+ int *out_depth,
+ GError **error);
+void gdk_x11_surface_destroy_glx_drawable (GdkX11Surface *self);
GType gdk_x11_gl_context_glx_get_type (void) G_GNUC_CONST;
-GdkX11GLContext * gdk_x11_gl_context_glx_new (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
- GError **error);
-gboolean gdk_x11_gl_context_glx_make_current (GdkDisplay *display,
- GdkGLContext *context);
/* EGL */
@@ -95,14 +77,14 @@ gboolean gdk_x11_gl_context_glx_make_current (GdkDisplay *
typedef struct _GdkX11GLContextEGL GdkX11GLContextEGL;
-gboolean gdk_x11_screen_init_egl (GdkX11Screen *screen);
-GType gdk_x11_gl_context_egl_get_type (void) G_GNUC_CONST;
-GdkX11GLContext * gdk_x11_gl_context_egl_new (GdkSurface *surface,
- gboolean attached,
- GdkGLContext *share,
+gboolean gdk_x11_display_init_egl (GdkX11Display *display_x11,
+ gboolean force,
+ Visual **out_visual,
+ int *out_depth,
GError **error);
-gboolean gdk_x11_gl_context_egl_make_current (GdkDisplay *display,
- GdkGLContext *context);
+void gdk_x11_surface_destroy_egl_surface (GdkX11Surface *self);
+
+GType gdk_x11_gl_context_egl_get_type (void) G_GNUC_CONST;
G_END_DECLS
diff --git a/gdk/x11/gdkprivate-x11.h b/gdk/x11/gdkprivate-x11.h
index 97155106a5..5a0f565f55 100644
--- a/gdk/x11/gdkprivate-x11.h
+++ b/gdk/x11/gdkprivate-x11.h
@@ -55,11 +55,6 @@ typedef GdkFilterReturn (*GdkFilterFunc) (const XEvent *xevent,
void _gdk_x11_error_handler_push (void);
void _gdk_x11_error_handler_pop (void);
-void gdk_display_setup_window_visual (GdkDisplay *display,
- int depth,
- Visual *visual,
- Colormap colormap,
- gboolean rgba);
int gdk_x11_display_get_window_depth (GdkX11Display *display);
Visual * gdk_x11_display_get_window_visual (GdkX11Display *display);
Colormap gdk_x11_display_get_window_colormap (GdkX11Display *display);
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index 9ab16f6db9..e84645bf17 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -91,9 +91,6 @@ gdk_x11_screen_dispose (GObject *object)
_gdk_x11_xsettings_finish (x11_screen);
- for (i = 0; i < x11_screen->nvisuals; i++)
- g_object_run_dispose (G_OBJECT (x11_screen->visuals[i]));
-
G_OBJECT_CLASS (gdk_x11_screen_parent_class)->dispose (object);
x11_screen->xdisplay = NULL;
@@ -106,12 +103,6 @@ static void
gdk_x11_screen_finalize (GObject *object)
{
GdkX11Screen *x11_screen = GDK_X11_SCREEN (object);
- int i;
-
- /* Visual Part */
- for (i = 0; i < x11_screen->nvisuals; i++)
- g_object_unref (x11_screen->visuals[i]);
- g_free (x11_screen->visuals);
g_free (x11_screen->window_manager_name);
@@ -866,8 +857,7 @@ init_multihead (GdkX11Screen *screen)
GdkX11Screen *
_gdk_x11_screen_new (GdkDisplay *display,
- int screen_number,
- gboolean setup_display)
+ int screen_number)
{
GdkX11Screen *x11_screen;
GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
@@ -898,8 +888,6 @@ _gdk_x11_screen_new (GdkDisplay *display,
init_randr_support (x11_screen);
init_multihead (x11_screen);
- _gdk_x11_screen_init_visuals (x11_screen, setup_display);
-
return x11_screen;
}
diff --git a/gdk/x11/gdkscreen-x11.h b/gdk/x11/gdkscreen-x11.h
index cba79af75d..2d9c8ae677 100644
--- a/gdk/x11/gdkscreen-x11.h
+++ b/gdk/x11/gdkscreen-x11.h
@@ -23,7 +23,6 @@
#define __GDK_X11_SCREEN__
#include "gdkx11screen.h"
-#include "gdkvisual-x11.h"
#include <X11/X.h>
#include <X11/Xlib.h>
@@ -71,16 +70,6 @@ struct _GdkX11Screen
guint xft_antialias : 1;
guint xft_hinting : 1;
- /* Visual Part */
- int nvisuals;
- GdkX11Visual **visuals;
- GdkX11Visual *system_visual;
- int available_depths[7];
- GdkVisualType available_types[6];
- gint16 navailable_depths;
- gint16 navailable_types;
- GdkX11Visual *rgba_visual;
-
/* cache for window->translate vfunc */
GC subwindow_gcs[32];
};
@@ -94,8 +83,7 @@ struct _GdkX11ScreenClass
GType _gdk_x11_screen_get_type (void);
GdkX11Screen *_gdk_x11_screen_new (GdkDisplay *display,
- int screen_number,
- gboolean setup_display);
+ int screen_number);
void _gdk_x11_screen_window_manager_changed (GdkX11Screen *screen);
void _gdk_x11_screen_size_changed (GdkX11Screen *screen,
@@ -120,9 +108,6 @@ _gdk_x11_screen_get_xft_setting (GdkX11Screen *screen,
const char *name,
GValue *value);
-void _gdk_x11_screen_init_visuals (GdkX11Screen *screen,
- gboolean setup_display);
-
G_END_DECLS
#endif /* __GDK_X11_SCREEN__ */
diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c
index e4952f2c7b..505fbd2b9a 100644
--- a/gdk/x11/gdksurface-x11.c
+++ b/gdk/x11/gdksurface-x11.c
@@ -31,7 +31,6 @@
#include "gdkpopupprivate.h"
#include "gdktoplevelprivate.h"
#include "gdkdragsurfaceprivate.h"
-#include "gdkvisual-x11.h"
#include "gdkinternals.h"
#include "gdkdeviceprivate.h"
#include "gdkdevice-xi2-private.h"
@@ -65,14 +64,6 @@
#include <X11/XKBlib.h>
#endif
-#ifdef HAVE_XCOMPOSITE
-#include <X11/extensions/Xcomposite.h>
-#endif
-
-#ifdef HAVE_XFIXES
-#include <X11/extensions/Xfixes.h>
-#endif
-
const int _gdk_x11_event_mask_table[21] =
{
ExposureMask,
@@ -1169,16 +1160,12 @@ _gdk_x11_display_create_surface (GdkDisplay *display,
GdkX11Display *display_x11;
Window xparent;
- Visual *xvisual;
Display *xdisplay;
XSetWindowAttributes xattributes;
long xattributes_mask;
XClassHint *class_hint;
- unsigned int class;
- int depth;
-
int abs_x;
int abs_y;
@@ -1231,12 +1218,8 @@ _gdk_x11_display_create_surface (GdkDisplay *display,
xattributes_mask = 0;
- xvisual = gdk_x11_display_get_window_visual (display_x11);
-
impl->override_redirect = FALSE;
- class = InputOutput;
-
xattributes.background_pixmap = None;
xattributes_mask |= CWBackPixmap;
@@ -1260,8 +1243,6 @@ _gdk_x11_display_create_surface (GdkDisplay *display,
impl->override_redirect = TRUE;
}
- depth = gdk_x11_display_get_window_depth (display_x11);
-
if (surface->width * impl->surface_scale > 32767 ||
surface->height * impl->surface_scale > 32767)
{
@@ -1284,7 +1265,10 @@ _gdk_x11_display_create_surface (GdkDisplay *display,
(surface->y + abs_y) * impl->surface_scale,
MAX (1, surface->width * impl->surface_scale),
MAX (1, surface->height * impl->surface_scale),
- 0, depth, class, xvisual,
+ 0,
+ gdk_x11_display_get_window_depth (display_x11),
+ InputOutput,
+ gdk_x11_display_get_window_visual (display_x11),
xattributes_mask, &xattributes);
g_object_ref (surface);
@@ -1375,7 +1359,12 @@ gdk_x11_surface_destroy (GdkSurface *surface,
}
if (!foreign_destroy)
- XDestroyWindow (GDK_SURFACE_XDISPLAY (surface), GDK_SURFACE_XID (surface));
+ {
+ gdk_x11_surface_destroy_egl_surface (impl);
+ gdk_x11_surface_destroy_glx_drawable (impl);
+
+ XDestroyWindow (GDK_SURFACE_XDISPLAY (surface), GDK_SURFACE_XID (surface));
+ }
}
/* This function is called when the XWindow is really gone.
@@ -1644,6 +1633,8 @@ gdk_x11_surface_hide (GdkSurface *surface)
g_clear_pointer (&impl->toplevel_layout, gdk_toplevel_layout_unref);
gdk_x11_surface_withdraw (surface);
+
+ impl->glx_frame_counter = 0;
}
static inline void
@@ -2445,14 +2436,6 @@ gdk_x11_surface_set_geometry_hints (GdkSurface *surface,
}
size_hints.flags = 0;
-
- size_hints.flags |= PPosition;
- /* We need to initialize the following obsolete fields because KWM
- * apparently uses these fields if they are non-zero.
- * #@#!#!$!.
- */
- size_hints.x = 0;
- size_hints.y = 0;
if (geom_mask & GDK_HINT_MIN_SIZE)
{
@@ -4821,7 +4804,6 @@ gdk_x11_surface_class_init (GdkX11SurfaceClass *klass)
impl_class->drag_begin = _gdk_x11_surface_drag_begin;
impl_class->get_scale_factor = gdk_x11_surface_get_scale_factor;
impl_class->set_opaque_region = gdk_x11_surface_set_opaque_region;
- impl_class->create_gl_context = gdk_x11_surface_create_gl_context;
impl_class->request_layout = gdk_x11_surface_request_layout;
impl_class->compute_size = gdk_x11_surface_compute_size;
}
diff --git a/gdk/x11/gdksurface-x11.h b/gdk/x11/gdksurface-x11.h
index 89f4b12845..a4c9e53e0a 100644
--- a/gdk/x11/gdksurface-x11.h
+++ b/gdk/x11/gdksurface-x11.h
@@ -87,6 +87,9 @@ struct _GdkX11Surface
guint compute_size_source_id;
cairo_surface_t *cairo_surface;
+ /* EGLSurface */ gpointer egl_surface;
+ /* GLXDrawable */ XID glx_drawable;
+ guint32 glx_frame_counter;
int abs_x;
int abs_y;
diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c
deleted file mode 100644
index 1e48e477a7..0000000000
--- a/gdk/x11/gdkvisual-x11.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* GDK - The GIMP Drawing Kit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * 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/>.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include "gdkprivate-x11.h"
-#include "gdkscreen-x11.h"
-#include "gdkvisual-x11.h"
-#include "gdkglcontext-x11.h"
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-struct _GdkX11VisualClass
-{
- GObjectClass parent_class;
-};
-
-G_DEFINE_TYPE (GdkX11Visual, gdk_x11_visual, G_TYPE_OBJECT)
-
-static void
-gdk_x11_visual_init (GdkX11Visual *x11_visual)
-{
-}
-
-static void
-gdk_x11_visual_class_init (GdkX11VisualClass *class)
-{
-}
-
-void
-_gdk_x11_screen_init_visuals (GdkX11Screen *x11_screen,
- gboolean setup_display)
-{
- static const int possible_depths[8] = { 32, 30, 24, 16, 15, 8, 4, 1 };
- static const GdkVisualType possible_types[6] =
- {
- GDK_VISUAL_DIRECT_COLOR,
- GDK_VISUAL_TRUE_COLOR,
- GDK_VISUAL_PSEUDO_COLOR,
- GDK_VISUAL_STATIC_COLOR,
- GDK_VISUAL_GRAYSCALE,
- GDK_VISUAL_STATIC_GRAY
- };
-
- XVisualInfo *visual_list;
- XVisualInfo visual_template;
- GdkX11Visual *temp_visual;
- Visual *default_xvisual;
- GdkX11Visual **visuals;
- int nxvisuals;
- int nvisuals;
- int i, j;
-
- nxvisuals = 0;
- visual_template.screen = x11_screen->screen_num;
- visual_list = XGetVisualInfo (x11_screen->xdisplay, VisualScreenMask, &visual_template, &nxvisuals);
-
- visuals = g_new (GdkX11Visual *, nxvisuals);
- for (i = 0; i < nxvisuals; i++)
- visuals[i] = g_object_new (GDK_TYPE_X11_VISUAL, NULL);
-
- default_xvisual = DefaultVisual (x11_screen->xdisplay, x11_screen->screen_num);
-
- nvisuals = 0;
- for (i = 0; i < nxvisuals; i++)
- {
- if (visual_list[i].depth >= 1)
- {
-#ifdef __cplusplus
- switch (visual_list[i].c_class)
-#else /* __cplusplus */
- switch (visual_list[i].class)
-#endif /* __cplusplus */
- {
- case StaticGray:
- visuals[nvisuals]->type = GDK_VISUAL_STATIC_GRAY;
- break;
- case GrayScale:
- visuals[nvisuals]->type = GDK_VISUAL_GRAYSCALE;
- break;
- case StaticColor:
- visuals[nvisuals]->type = GDK_VISUAL_STATIC_COLOR;
- break;
- case PseudoColor:
- visuals[nvisuals]->type = GDK_VISUAL_PSEUDO_COLOR;
- break;
- case TrueColor:
- visuals[nvisuals]->type = GDK_VISUAL_TRUE_COLOR;
- break;
- case DirectColor:
- visuals[nvisuals]->type = GDK_VISUAL_DIRECT_COLOR;
- break;
- default:
- g_warn_if_reached ();
- break;
- }
-
- visuals[nvisuals]->depth = visual_list[i].depth;
- visuals[nvisuals]->byte_order =
- (ImageByteOrder(x11_screen->xdisplay) == LSBFirst) ?
- GDK_LSB_FIRST : GDK_MSB_FIRST;
- visuals[nvisuals]->red_mask = visual_list[i].red_mask;
- visuals[nvisuals]->green_mask = visual_list[i].green_mask;
- visuals[nvisuals]->blue_mask = visual_list[i].blue_mask;
- visuals[nvisuals]->colormap_size = visual_list[i].colormap_size;
- visuals[nvisuals]->bits_per_rgb = visual_list[i].bits_per_rgb;
- GDK_X11_VISUAL (visuals[nvisuals])->xvisual = visual_list[i].visual;
-
- if ((visuals[nvisuals]->type != GDK_VISUAL_TRUE_COLOR) &&
- (visuals[nvisuals]->type != GDK_VISUAL_DIRECT_COLOR))
- {
- visuals[nvisuals]->red_mask = 0;
- visuals[nvisuals]->green_mask = 0;
- visuals[nvisuals]->blue_mask = 0;
- }
-
- nvisuals += 1;
- }
- }
-
- if (visual_list)
- XFree (visual_list);
-
- for (i = 0; i < nvisuals; i++)
- {
- for (j = i+1; j < nvisuals; j++)
- {
- if (visuals[j]->depth >= visuals[i]->depth)
- {
- if ((visuals[j]->depth == 8) && (visuals[i]->depth == 8))
- {
- if (visuals[j]->type == GDK_VISUAL_PSEUDO_COLOR)
- {
- temp_visual = visuals[j];
- visuals[j] = visuals[i];
- visuals[i] = temp_visual;
- }
- else if ((visuals[i]->type != GDK_VISUAL_PSEUDO_COLOR) &&
- visuals[j]->type > visuals[i]->type)
- {
- temp_visual = visuals[j];
- visuals[j] = visuals[i];
- visuals[i] = temp_visual;
- }
- }
- else if ((visuals[j]->depth > visuals[i]->depth) ||
- ((visuals[j]->depth == visuals[i]->depth) &&
- (visuals[j]->type > visuals[i]->type)))
- {
- temp_visual = visuals[j];
- visuals[j] = visuals[i];
- visuals[i] = temp_visual;
- }
- }
- }
- }
-
- for (i = 0; i < nvisuals; i++)
- {
- if (default_xvisual->visualid == GDK_X11_VISUAL (visuals[i])->xvisual->visualid)
- x11_screen->system_visual = visuals[i];
-
- /* For now, we only support 8888 ARGB for the "rgba visual".
- * Additional formats (like ABGR) could be added later if they
- * turn up.
- */
- if (x11_screen->rgba_visual == NULL &&
- visuals[i]->depth == 32 &&
- (visuals[i]->red_mask == 0xff0000 &&
- visuals[i]->green_mask == 0x00ff00 &&
- visuals[i]->blue_mask == 0x0000ff))
- {
- x11_screen->rgba_visual = visuals[i];
- }
- }
-
-#ifdef G_ENABLE_DEBUG
- if (GDK_DISPLAY_DEBUG_CHECK (GDK_SCREEN_DISPLAY (x11_screen), MISC))
- {
- static const char *const visual_names[] =
- {
- "static gray",
- "grayscale",
- "static color",
- "pseudo color",
- "true color",
- "direct color",
- };
-
- for (i = 0; i < nvisuals; i++)
- g_message ("visual: %s: %d", visual_names[visuals[i]->type], visuals[i]->depth);
- }
-#endif /* G_ENABLE_DEBUG */
-
- x11_screen->navailable_depths = 0;
- for (i = 0; i < G_N_ELEMENTS (possible_depths); i++)
- {
- for (j = 0; j < nvisuals; j++)
- {
- if (visuals[j]->depth == possible_depths[i])
- {
- x11_screen->available_depths[x11_screen->navailable_depths++] = visuals[j]->depth;
- break;
- }
- }
- }
-
- if (x11_screen->navailable_depths == 0)
- g_error ("unable to find a usable depth");
-
- x11_screen->navailable_types = 0;
- for (i = 0; i < G_N_ELEMENTS (possible_types); i++)
- {
- for (j = 0; j < nvisuals; j++)
- {
- if (visuals[j]->type == possible_types[i])
- {
- x11_screen->available_types[x11_screen->navailable_types++] = visuals[j]->type;
- break;
- }
- }
- }
-
- if (x11_screen->navailable_types == 0)
- g_error ("unable to find a usable visual type");
-
- x11_screen->visuals = visuals;
- x11_screen->nvisuals = nvisuals;
-
- /* If GL is available we want to pick better default/rgba visuals,
- * as we care about GLX details such as alpha/depth/stencil depth,
- * stereo and double buffering
- */
- gdk_x11_screen_update_visuals_for_glx (x11_screen);
-
- if (setup_display)
- {
- if (x11_screen->rgba_visual)
- {
- Visual *xvisual = GDK_X11_VISUAL (x11_screen->rgba_visual)->xvisual;
- Colormap colormap;
-
- colormap = XCreateColormap (x11_screen->xdisplay,
- RootWindow (x11_screen->xdisplay, x11_screen->screen_num),
- xvisual,
- AllocNone);
- gdk_display_setup_window_visual (GDK_SCREEN_DISPLAY (x11_screen),
- x11_screen->rgba_visual->depth,
- GDK_X11_VISUAL (x11_screen->rgba_visual)->xvisual,
- colormap,
- TRUE);
- }
- else
- {
- gdk_display_setup_window_visual (GDK_SCREEN_DISPLAY (x11_screen),
- DefaultDepth (x11_screen->xdisplay, x11_screen->screen_num),
- DefaultVisual (x11_screen->xdisplay, x11_screen->screen_num),
- DefaultColormap (x11_screen->xdisplay, x11_screen->screen_num),
- FALSE);
- }
- }
-}
-
-/*< private >
- * gdk_x11_screen_lookup_visual:
- * @screen: a `GdkX11Screen`
- * @xvisualid: an X Visual ID.
- *
- * Looks up the `GdkVisual` for a particular screen and X Visual ID.
- *
- * Returns: (transfer none) (nullable) (type GdkX11Visual): the `GdkVisual`
- */
-GdkX11Visual *
-gdk_x11_screen_lookup_visual (GdkX11Screen *x11_screen,
- VisualID xvisualid)
-{
- int i;
-
- for (i = 0; i < x11_screen->nvisuals; i++)
- if (xvisualid == GDK_X11_VISUAL (x11_screen->visuals[i])->xvisual->visualid)
- return x11_screen->visuals[i];
-
- return NULL;
-}
-
-/*< private >
- * gdk_x11_visual_get_xvisual:
- * @visual: a `GdkX11Visual`
- *
- * Returns the X visual belonging to a `GdkX11Visual`.
- *
- * Returns: (transfer none): an Xlib Visual*.
- **/
-Visual *
-gdk_x11_visual_get_xvisual (GdkX11Visual *visual)
-{
- g_return_val_if_fail (GDK_IS_X11_VISUAL (visual), NULL);
-
- return GDK_X11_VISUAL (visual)->xvisual;
-}
diff --git a/gdk/x11/gdkvisual-x11.h b/gdk/x11/gdkvisual-x11.h
deleted file mode 100644
index 7b1acb4e0c..0000000000
--- a/gdk/x11/gdkvisual-x11.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __GDK_X11_VISUAL__
-#define __GDK_X11_VISUAL__
-
-G_BEGIN_DECLS
-
-#include <gdk/gdk.h>
-#include <gdk/x11/gdkx11screen.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-G_BEGIN_DECLS
-
-#define GDK_TYPE_X11_VISUAL (gdk_x11_visual_get_type ())
-#define GDK_X11_VISUAL(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_VISUAL, GdkX11Visual))
-#define GDK_X11_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_VISUAL, GdkX11VisualClass))
-#define GDK_IS_X11_VISUAL(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_VISUAL))
-#define GDK_IS_X11_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_VISUAL))
-#define GDK_X11_VISUAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_VISUAL, GdkX11VisualClass))
-
-typedef struct _GdkX11Visual GdkX11Visual;
-typedef struct _GdkX11VisualClass GdkX11VisualClass;
-
-typedef enum
-{
- GDK_VISUAL_STATIC_GRAY,
- GDK_VISUAL_GRAYSCALE,
- GDK_VISUAL_STATIC_COLOR,
- GDK_VISUAL_PSEUDO_COLOR,
- GDK_VISUAL_TRUE_COLOR,
- GDK_VISUAL_DIRECT_COLOR
-} GdkVisualType;
-
-typedef enum
-{
- GDK_LSB_FIRST,
- GDK_MSB_FIRST
-} GdkByteOrder;
-
-struct _GdkX11Visual
-{
- GObject parent_instance;
-
- GdkVisualType type;
- int depth;
- GdkByteOrder byte_order;
- int colormap_size;
- int bits_per_rgb;
-
- guint32 red_mask;
- guint32 green_mask;
- guint32 blue_mask;
-
- Visual *xvisual;
-};
-
-GType gdk_x11_visual_get_type (void);
-
-Visual * gdk_x11_visual_get_xvisual (GdkX11Visual *visual);
-
-#define GDK_VISUAL_XVISUAL(visual) (gdk_x11_visual_get_xvisual (visual))
-
-GdkX11Visual* gdk_x11_screen_lookup_visual (GdkX11Screen *screen,
- VisualID xvisualid);
-
-G_END_DECLS
-
-#endif
diff --git a/gdk/x11/meson.build b/gdk/x11/meson.build
index 082fc9803a..58d12bb8a1 100644
--- a/gdk/x11/meson.build
+++ b/gdk/x11/meson.build
@@ -16,7 +16,6 @@ gdk_x11_public_sources = files([
'gdkproperty-x11.c',
'gdkscreen-x11.c',
'gdkselection-x11.c',
- 'gdkvisual-x11.c',
'gdksurface-x11.c',
'gdkxid.c',
'xsettings-client.c',
@@ -69,7 +68,6 @@ gdk_x11_deps = [
xcursor_dep,
xdamage_dep,
xfixes_dep,
- xcomposite_dep,
xrandr_dep,
xinerama_dep,
]
diff --git a/gsk/gl/gskgldriver.c b/gsk/gl/gskgldriver.c
index 621c25825c..8fe726b315 100644
--- a/gsk/gl/gskgldriver.c
+++ b/gsk/gl/gskgldriver.c
@@ -518,14 +518,13 @@ gsk_gl_driver_get_texture_for_texture (GskGLDriver *self,
if (GDK_IS_GL_TEXTURE (texture))
{
- GdkGLContext *texture_context = gdk_gl_texture_get_context ((GdkGLTexture *)texture);
- GdkGLContext *shared_context = gdk_gl_context_get_shared_context (self->gl_context);
+ GdkGLTexture *gl_texture = (GdkGLTexture *) texture;
+ GdkGLContext *texture_context = gdk_gl_texture_get_context (gl_texture);
- if (texture_context == self->gl_context ||
- (gdk_gl_context_get_shared_context (texture_context) == shared_context && shared_context != NULL))
+ if (gdk_gl_context_is_shared (self->gl_context, texture_context))
{
/* A GL texture from the same GL context is a simple task... */
- return gdk_gl_texture_get_id ((GdkGLTexture *)texture);
+ return gdk_gl_texture_get_id (gl_texture);
}
else
{
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index c7751b8e3a..9a9705d0fd 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -2780,6 +2780,17 @@ gsk_container_node_get_child (const GskRenderNode *node,
return self->children[idx];
}
+GskRenderNode **
+gsk_container_node_get_children (const GskRenderNode *node,
+ guint *n_children)
+{
+ const GskContainerNode *self = (const GskContainerNode *) node;
+
+ *n_children = self->n_children;
+
+ return self->children;
+}
+
/*** GSK_TRANSFORM_NODE ***/
/**
@@ -2793,6 +2804,7 @@ struct _GskTransformNode
GskRenderNode *child;
GskTransform *transform;
+ float dx, dy;
};
static void
@@ -2944,6 +2956,11 @@ gsk_transform_node_new (GskRenderNode *child,
self->child = gsk_render_node_ref (child);
self->transform = gsk_transform_ref (transform);
+ if (gsk_transform_get_category (transform) >= GSK_TRANSFORM_CATEGORY_2D_TRANSLATE)
+ gsk_transform_to_translate (transform, &self->dx, &self->dy);
+ else
+ self->dx = self->dy = 0;
+
gsk_transform_transform_bounds (self->transform,
&child->bounds,
&node->bounds);
@@ -2983,6 +3000,17 @@ gsk_transform_node_get_transform (const GskRenderNode *node)
return self->transform;
}
+void
+gsk_transform_node_get_translate (const GskRenderNode *node,
+ float *dx,
+ float *dy)
+{
+ const GskTransformNode *self = (const GskTransformNode *) node;
+
+ *dx = self->dx;
+ *dy = self->dy;
+}
+
/*** GSK_OPACITY_NODE ***/
/**
diff --git a/gsk/gskrendernodeparser.c b/gsk/gskrendernodeparser.c
index a8b13c39fe..9aa091001f 100644
--- a/gsk/gskrendernodeparser.c
+++ b/gsk/gskrendernodeparser.c
@@ -2352,18 +2352,6 @@ gsk_text_node_serialize_glyphs (GskRenderNode *node,
}
break;
}
- else if (glyphs[i].glyph == ascii->glyphs[j].glyph)
- {
- if (glyphs[i].geometry.width != ascii->glyphs[j].geometry.width)
- g_print ("not ascii because of width (%d != %d)\n",
- glyphs[i].geometry.width,
- ascii->glyphs[j].geometry.width);
- if (glyphs[i].geometry.x_offset != 0 ||
- glyphs[i].geometry.y_offset != 0)
- g_print ("not ascii because of offset\n");
- if (!glyphs[i].attr.is_cluster_start)
- g_print ("not ascii because of cluster\n");
- }
}
if (j != ascii->num_glyphs)
continue;
@@ -2375,16 +2363,16 @@ gsk_text_node_serialize_glyphs (GskRenderNode *node,
g_string_set_size (str, 0);
}
- g_string_append_printf (p, "%u %g",
- glyphs[i].glyph,
- (double) glyphs[i].geometry.width / PANGO_SCALE);
+ g_string_append_printf (p, "%u ", glyphs[i].glyph);
+ string_append_double (p, (double) glyphs[i].geometry.width / PANGO_SCALE);
if (!glyphs[i].attr.is_cluster_start ||
glyphs[i].geometry.x_offset != 0 ||
glyphs[i].geometry.y_offset != 0)
{
- g_string_append_printf (p, " %g %g",
- (double) glyphs[i].geometry.x_offset / PANGO_SCALE,
- (double) glyphs[i].geometry.y_offset / PANGO_SCALE);
+ g_string_append (p, " ");
+ string_append_double (p, (double) glyphs[i].geometry.x_offset / PANGO_SCALE);
+ g_string_append (p, " ");
+ string_append_double (p, (double) glyphs[i].geometry.y_offset / PANGO_SCALE);
if (!glyphs[i].attr.is_cluster_start)
g_string_append (p, " same-cluster");
}
diff --git a/gsk/gskrendernodeprivate.h b/gsk/gskrendernodeprivate.h
index 8fef8e7aa4..ac20813b65 100644
--- a/gsk/gskrendernodeprivate.h
+++ b/gsk/gskrendernodeprivate.h
@@ -103,6 +103,14 @@ bool gsk_border_node_get_uniform_color (const GskRenderNode
void gsk_text_node_serialize_glyphs (GskRenderNode *self,
GString *str);
+GskRenderNode ** gsk_container_node_get_children (const GskRenderNode *node,
+ guint *n_children);
+
+void gsk_transform_node_get_translate (const GskRenderNode *node,
+ float *dx,
+ float *dy);
+
+
G_END_DECLS
#endif /* __GSK_RENDER_NODE_PRIVATE_H__ */
diff --git a/gsk/gsktransform.c b/gsk/gsktransform.c
index 38a1b598d3..b58eb55aad 100644
--- a/gsk/gsktransform.c
+++ b/gsk/gsktransform.c
@@ -1487,21 +1487,21 @@ gsk_transform_to_2d (GskTransform *self,
float *out_dx,
float *out_dy)
{
- if (self == NULL ||
- self->category < GSK_TRANSFORM_CATEGORY_2D)
+ *out_xx = 1.0f;
+ *out_yx = 0.0f;
+ *out_xy = 0.0f;
+ *out_yy = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+
+ if (self == NULL)
+ return;
+
+ if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D))
{
- if (self != NULL)
- {
- char *s = gsk_transform_to_string (self);
- g_warning ("Given transform \"%s\" is not a 2D transform.", s);
- g_free (s);
- }
- *out_xx = 1.0f;
- *out_yx = 0.0f;
- *out_xy = 0.0f;
- *out_yy = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
+ char *s = gsk_transform_to_string (self);
+ g_warning ("Given transform \"%s\" is not a 2D transform.", s);
+ g_free (s);
return;
}
@@ -1544,41 +1544,25 @@ gsk_transform_to_affine (GskTransform *self,
float *out_dx,
float *out_dy)
{
+ *out_scale_x = 1.0f;
+ *out_scale_y = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+
if (self == NULL)
- {
- *out_scale_x = 1.0f;
- *out_scale_y = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- return;
- }
+ return;
if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_AFFINE))
{
char *s = gsk_transform_to_string (self);
g_warning ("Given transform \"%s\" is not an affine 2D transform.", s);
g_free (s);
-
- *out_scale_x = 1.0f;
- *out_scale_y = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
return;
}
- if (self->next != NULL)
- {
- gsk_transform_to_affine (self->next,
- out_scale_x, out_scale_y,
- out_dx, out_dy);
- }
- else
- {
- *out_scale_x = 1.0f;
- *out_scale_y = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- }
+ gsk_transform_to_affine (self->next,
+ out_scale_x, out_scale_y,
+ out_dx, out_dy);
self->transform_class->apply_affine (self,
out_scale_x, out_scale_y,
@@ -1607,12 +1591,11 @@ gsk_transform_to_translate (GskTransform *self,
float *out_dx,
float *out_dy)
{
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+
if (self == NULL)
- {
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- return;
- }
+ return;
if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_TRANSLATE))
{
@@ -1620,24 +1603,12 @@ gsk_transform_to_translate (GskTransform *self,
g_warning ("Given transform \"%s\" is not an affine 2D translation.", s);
g_free (s);
- *out_dx = 0.0f;
- *out_dy = 0.0f;
return;
}
- if (self->next != NULL)
- {
- gsk_transform_to_translate (self->next,
- out_dx, out_dy);
- }
- else
- {
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- }
+ gsk_transform_to_translate (self->next, out_dx, out_dy);
- self->transform_class->apply_translate (self,
- out_dx, out_dy);
+ self->transform_class->apply_translate (self, out_dx, out_dy);
}
/**
diff --git a/gsk/ngl/fp16.c b/gsk/ngl/fp16.c
index 100d13e997..a1ff1d1af9 100644
--- a/gsk/ngl/fp16.c
+++ b/gsk/ngl/fp16.c
@@ -54,7 +54,7 @@ float_to_half (const float x)
return (b&0x80000000)>>16 | (e>112)*((((e-112)<<10)&0x7C00)|m>>13) | ((e<113)&(e>101))*((((0x007FF000+m)>>(125-e))+1)>>1) | (e>143)*0x7FFF; // sign : normalized : denormalized : saturate
}
-static void
+void
float_to_half4_c (const float f[4],
guint16 h[4])
{
@@ -64,7 +64,7 @@ float_to_half4_c (const float f[4],
h[3] = float_to_half (f[3]);
}
-static void
+void
half_to_float4_c (const guint16 h[4],
float f[4])
{
diff --git a/gsk/ngl/fp16private.h b/gsk/ngl/fp16private.h
index a2c53d6c2d..574d7e4388 100644
--- a/gsk/ngl/fp16private.h
+++ b/gsk/ngl/fp16private.h
@@ -41,6 +41,12 @@ void float_to_half4_f16c (const float f[4],
void half_to_float4_f16c (const guint16 h[4],
float f[4]);
+void float_to_half4_c (const float f[4],
+ guint16 h[4]);
+
+void half_to_float4_c (const guint16 h[4],
+ float f[4]);
+
G_END_DECLS
#endif
diff --git a/gsk/ngl/gsknglcommandqueue.c b/gsk/ngl/gsknglcommandqueue.c
index b731d9d2db..217fce13a2 100644
--- a/gsk/ngl/gsknglcommandqueue.c
+++ b/gsk/ngl/gsknglcommandqueue.c
@@ -1376,7 +1376,7 @@ gsk_ngl_command_queue_upload_texture (GskNglCommandQueue *self,
bpp = gdk_memory_format_bytes_per_pixel (data_format);
- /* Swtich to texture0 as 2D. We'll restore it later. */
+ /* Switch to texture0 as 2D. We'll restore it later. */
glActiveTexture (GL_TEXTURE0);
glBindTexture (GL_TEXTURE_2D, texture_id);
diff --git a/gsk/ngl/gskngldriver.c b/gsk/ngl/gskngldriver.c
index ec7cdf7bb7..bc4a9ad413 100644
--- a/gsk/ngl/gskngldriver.c
+++ b/gsk/ngl/gskngldriver.c
@@ -24,7 +24,9 @@
#include "config.h"
#include <gdk/gdkglcontextprivate.h>
+#include <gdk/gdkdisplayprivate.h>
#include <gdk/gdktextureprivate.h>
+#include <gdk/gdkprofilerprivate.h>
#include <gsk/gskdebugprivate.h>
#include <gsk/gskglshaderprivate.h>
#include <gsk/gskrendererprivate.h>
@@ -328,6 +330,7 @@ gsk_ngl_driver_load_programs (GskNglDriver *self,
{
GskNglCompiler *compiler;
gboolean ret = FALSE;
+ G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME;
g_assert (GSK_IS_NGL_DRIVER (self));
g_assert (GSK_IS_NGL_COMMAND_QUEUE (self->command_queue));
@@ -395,6 +398,8 @@ gsk_ngl_driver_load_programs (GskNglDriver *self,
failure:
g_clear_object (&compiler);
+ gdk_profiler_end_mark (start_time, "load programs", NULL);
+
return ret;
}
@@ -421,9 +426,12 @@ gsk_ngl_driver_new (GskNglCommandQueue *command_queue,
{
GskNglDriver *self;
GdkGLContext *context;
+ gint64 before G_GNUC_UNUSED;
g_return_val_if_fail (GSK_IS_NGL_COMMAND_QUEUE (command_queue), NULL);
+ before = GDK_PROFILER_CURRENT_TIME;
+
context = gsk_ngl_command_queue_get_context (command_queue);
gdk_gl_context_make_current (context);
@@ -443,34 +451,40 @@ gsk_ngl_driver_new (GskNglCommandQueue *command_queue,
self->icons = gsk_ngl_icon_library_new (self);
self->shadows = gsk_ngl_shadow_library_new (self);
+ gdk_profiler_end_mark (before, "create GskNglDriver", NULL);
+
return g_steal_pointer (&self);
}
/**
- * gsk_ngl_driver_from_shared_context:
- * @context: a shared `GdkGLContext` retrieved with gdk_gl_context_get_shared_context()
+ * gsk_ngl_driver_for_display:
+ * @display: A #GdkDisplay that is known to support GL
* @debug_shaders: if debug information for shaders should be displayed
* @error: location for error information
*
- * Retrieves a driver for a shared context. Generally this is shared across all GL
+ * Retrieves a driver for a shared display. Generally this is shared across all GL
* contexts for a display so that fewer programs are necessary for driving output.
*
* Returns: (transfer full): a `GskNglDriver` if successful; otherwise %NULL and
* @error is set.
*/
GskNglDriver *
-gsk_ngl_driver_from_shared_context (GdkGLContext *context,
- gboolean debug_shaders,
- GError **error)
+gsk_ngl_driver_for_display (GdkDisplay *display,
+ gboolean debug_shaders,
+ GError **error)
{
+ GdkGLContext *context;
GskNglCommandQueue *command_queue = NULL;
GskNglDriver *driver;
- g_return_val_if_fail (GDK_IS_GL_CONTEXT (context), NULL);
+ g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
- if ((driver = g_object_get_data (G_OBJECT (context), "GSK_NGL_DRIVER")))
+ if ((driver = g_object_get_data (G_OBJECT (display), "GSK_NGL_DRIVER")))
return g_object_ref (driver);
+ context = gdk_display_get_gl_context (display);
+ g_assert (context);
+
gdk_gl_context_make_current (context);
/* Initially we create a command queue using the shared context. However,
@@ -484,7 +498,7 @@ gsk_ngl_driver_from_shared_context (GdkGLContext *context,
if (!(driver = gsk_ngl_driver_new (command_queue, debug_shaders, error)))
goto failure;
- g_object_set_data_full (G_OBJECT (context),
+ g_object_set_data_full (G_OBJECT (display),
"GSK_NGL_DRIVER",
g_object_ref (driver),
g_object_unref);
@@ -736,16 +750,13 @@ gsk_ngl_driver_load_texture (GskNglDriver *self,
if (GDK_IS_GL_TEXTURE (texture))
{
- GdkGLContext *texture_context = gdk_gl_texture_get_context ((GdkGLTexture *)texture);
- GdkGLContext *shared_context = gdk_gl_context_get_shared_context (context);
-
- if (texture_context == context ||
- (shared_context != NULL &&
- shared_context == gdk_gl_context_get_shared_context (texture_context)))
+ GdkGLTexture *gl_texture = (GdkGLTexture *) texture;
+ GdkGLContext *texture_context = gdk_gl_texture_get_context (gl_texture);
+ if (gdk_gl_context_is_shared (context, texture_context))
{
/* A GL texture from the same GL context is a simple task... */
- return gdk_gl_texture_get_id ((GdkGLTexture *)texture);
+ return gdk_gl_texture_get_id (gl_texture);
}
else
{
diff --git a/gsk/ngl/gskngldriverprivate.h b/gsk/ngl/gskngldriverprivate.h
index b0b5f7f550..b5b5e60600 100644
--- a/gsk/ngl/gskngldriverprivate.h
+++ b/gsk/ngl/gskngldriverprivate.h
@@ -136,7 +136,7 @@ struct _GskNglDriver
guint in_frame : 1;
};
-GskNglDriver *gsk_ngl_driver_from_shared_context (GdkGLContext *context,
+GskNglDriver *gsk_ngl_driver_for_display (GdkDisplay *display,
gboolean debug_shaders,
GError **error);
GskNglCommandQueue *gsk_ngl_driver_create_command_queue (GskNglDriver *self,
diff --git a/gsk/ngl/gsknglglyphlibrary.c b/gsk/ngl/gsknglglyphlibrary.c
index 0339f4590f..627f35f59e 100644
--- a/gsk/ngl/gsknglglyphlibrary.c
+++ b/gsk/ngl/gsknglglyphlibrary.c
@@ -88,7 +88,7 @@ gsk_ngl_glyph_library_begin_frame (GskNglTextureLibrary *library,
gint64 frame_id,
GPtrArray *removed_atlases)
{
- GskNglGlyphLibrary *self = GSK_NGL_GLYPH_LIBRARY (library);
+ GskNglGlyphLibrary *self = (GskNglGlyphLibrary *)library;
memset (self->front, 0, sizeof self->front);
}
@@ -117,8 +117,10 @@ gsk_ngl_glyph_library_class_init (GskNglGlyphLibraryClass *klass)
static void
gsk_ngl_glyph_library_init (GskNglGlyphLibrary *self)
{
- GSK_NGL_TEXTURE_LIBRARY (self)->max_entry_size = MAX_GLYPH_SIZE;
- gsk_ngl_texture_library_set_funcs (GSK_NGL_TEXTURE_LIBRARY (self),
+ GskNglTextureLibrary *tl = (GskNglTextureLibrary *)self;
+
+ tl->max_entry_size = MAX_GLYPH_SIZE;
+ gsk_ngl_texture_library_set_funcs (tl,
gsk_ngl_glyph_key_hash,
gsk_ngl_glyph_key_equal,
gsk_ngl_glyph_key_free,
@@ -200,6 +202,7 @@ gsk_ngl_glyph_library_upload_glyph (GskNglGlyphLibrary *self,
int height,
double device_scale)
{
+ GskNglTextureLibrary *tl = (GskNglTextureLibrary *)self;
G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME;
cairo_scaled_font_t *scaled_font;
cairo_surface_t *surface;
@@ -264,7 +267,7 @@ gsk_ngl_glyph_library_upload_glyph (GskNglGlyphLibrary *self,
gdk_gl_context_pop_debug_group (gdk_gl_context_get_current ());
- GSK_NGL_TEXTURE_LIBRARY (self)->driver->command_queue->n_uploads++;
+ tl->driver->command_queue->n_uploads++;
if (gdk_profiler_is_running ())
{
@@ -279,6 +282,7 @@ gsk_ngl_glyph_library_add (GskNglGlyphLibrary *self,
GskNglGlyphKey *key,
const GskNglGlyphValue **out_value)
{
+ GskNglTextureLibrary *tl = (GskNglTextureLibrary *)self;
PangoRectangle ink_rect;
GskNglGlyphValue *value;
int width;
@@ -301,7 +305,7 @@ gsk_ngl_glyph_library_add (GskNglGlyphLibrary *self,
width = (int) ceil (ink_rect.width * key->scale / 1024.0);
height = (int) ceil (ink_rect.height * key->scale / 1024.0);
- value = gsk_ngl_texture_library_pack (GSK_NGL_TEXTURE_LIBRARY (self),
+ value = gsk_ngl_texture_library_pack (tl,
key,
sizeof *value,
width,
diff --git a/gsk/ngl/gskngliconlibrary.c b/gsk/ngl/gskngliconlibrary.c
index 4d84cb2354..977c201051 100644
--- a/gsk/ngl/gskngliconlibrary.c
+++ b/gsk/ngl/gskngliconlibrary.c
@@ -63,8 +63,10 @@ gsk_ngl_icon_library_class_init (GskNglIconLibraryClass *klass)
static void
gsk_ngl_icon_library_init (GskNglIconLibrary *self)
{
- GSK_NGL_TEXTURE_LIBRARY (self)->max_entry_size = 128;
- gsk_ngl_texture_library_set_funcs (GSK_NGL_TEXTURE_LIBRARY (self),
+ GskNglTextureLibrary *tl = (GskNglTextureLibrary *)self;
+
+ tl->max_entry_size = 128;
+ gsk_ngl_texture_library_set_funcs (tl,
NULL, NULL, NULL,
gsk_ngl_icon_data_free);
}
@@ -74,6 +76,7 @@ gsk_ngl_icon_library_add (GskNglIconLibrary *self,
GdkTexture *key,
const GskNglIconData **out_value)
{
+ GskNglTextureLibrary *tl = (GskNglTextureLibrary *)self;
G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME;
cairo_surface_t *surface;
GskNglIconData *icon_data;
@@ -95,7 +98,7 @@ gsk_ngl_icon_library_add (GskNglIconLibrary *self,
width = key->width;
height = key->height;
- icon_data = gsk_ngl_texture_library_pack (GSK_NGL_TEXTURE_LIBRARY (self),
+ icon_data = gsk_ngl_texture_library_pack (tl,
key,
sizeof (GskNglIconData),
width, height, 1,
@@ -202,7 +205,7 @@ gsk_ngl_icon_library_add (GskNglIconLibrary *self,
cairo_surface_destroy (surface);
g_free (free_data);
- GSK_NGL_TEXTURE_LIBRARY (self)->driver->command_queue->n_uploads++;
+ tl->driver->command_queue->n_uploads++;
if (gdk_profiler_is_running ())
{
diff --git a/gsk/ngl/gsknglrenderer.c b/gsk/ngl/gsknglrenderer.c
index e343479abd..5f8a683b1e 100644
--- a/gsk/ngl/gsknglrenderer.c
+++ b/gsk/ngl/gsknglrenderer.c
@@ -21,7 +21,7 @@
#include "config.h"
#include <gdk/gdkprofilerprivate.h>
-#include <gdk/gdksurfaceprivate.h>
+#include <gdk/gdkdisplayprivate.h>
#include <gsk/gskdebugprivate.h>
#include <gsk/gskrendererprivate.h>
@@ -86,7 +86,6 @@ gsk_ngl_renderer_realize (GskRenderer *renderer,
G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME;
GskNglRenderer *self = (GskNglRenderer *)renderer;
GdkGLContext *context = NULL;
- GdkGLContext *shared_context;
GskNglDriver *driver = NULL;
gboolean ret = FALSE;
gboolean debug_shaders = FALSE;
@@ -105,21 +104,12 @@ gsk_ngl_renderer_realize (GskRenderer *renderer,
!gdk_gl_context_realize (context, error))
goto failure;
- if (!(shared_context = gdk_surface_get_shared_data_gl_context (surface)))
- {
- g_set_error (error,
- GDK_GL_ERROR,
- GDK_GL_ERROR_NOT_AVAILABLE,
- "Failed to locate shared GL context for driver");
- goto failure;
- }
-
#ifdef G_ENABLE_DEBUG
if (GSK_RENDERER_DEBUG_CHECK (GSK_RENDERER (self), SHADERS))
debug_shaders = TRUE;
#endif
- if (!(driver = gsk_ngl_driver_from_shared_context (shared_context, debug_shaders, error)))
+ if (!(driver = gsk_ngl_driver_for_display (gdk_surface_get_display (surface), debug_shaders, error)))
goto failure;
self->command_queue = gsk_ngl_driver_create_command_queue (driver, context);
@@ -135,7 +125,7 @@ failure:
g_clear_object (&driver);
g_clear_object (&context);
- gdk_profiler_end_mark (start_time, "GskNglRenderer realize", NULL);
+ gdk_profiler_end_mark (start_time, "realize GskNglRenderer", NULL);
return ret;
}
diff --git a/gsk/ngl/gsknglrenderjob.c b/gsk/ngl/gsknglrenderjob.c
index b876e6e248..2351379b2e 100644
--- a/gsk/ngl/gsknglrenderjob.c
+++ b/gsk/ngl/gsknglrenderjob.c
@@ -89,6 +89,8 @@ typedef struct _GskNglRenderModelview
GskTransform *transform;
float scale_x;
float scale_y;
+ float dx;
+ float dy;
float offset_x_before;
float offset_y_before;
graphene_matrix_t matrix;
@@ -347,31 +349,38 @@ intersect_rounded_rectilinear (const graphene_rect_t *non_rounded,
corners[0] = rounded_rect_has_corner (rounded, 0) &&
rect_intersects (non_rounded,
&rounded_rect_corner (rounded, 0));
- /* top right? */
+ if (corners[0] && !rect_contains_rect (non_rounded,
+ &rounded_rect_corner (rounded, 0)))
+ return FALSE;
+
+ /* top right ? */
corners[1] = rounded_rect_has_corner (rounded, 1) &&
rect_intersects (non_rounded,
&rounded_rect_corner (rounded, 1));
- /* bottom right? */
+ if (corners[1] && !rect_contains_rect (non_rounded,
+ &rounded_rect_corner (rounded, 1)))
+ return FALSE;
+
+ /* bottom right ? */
corners[2] = rounded_rect_has_corner (rounded, 2) &&
rect_intersects (non_rounded,
&rounded_rect_corner (rounded, 2));
- /* bottom left */
+ if (corners[2] && !rect_contains_rect (non_rounded,
+ &rounded_rect_corner (rounded, 2)))
+ return FALSE;
+
+ /* bottom left ? */
corners[3] = rounded_rect_has_corner (rounded, 3) &&
rect_intersects (non_rounded,
&rounded_rect_corner (rounded, 3));
-
- if (corners[0] && !rect_contains_rect (non_rounded, &rounded_rect_corner (rounded, 0)))
- return FALSE;
- if (corners[1] && !rect_contains_rect (non_rounded, &rounded_rect_corner (rounded, 1)))
- return FALSE;
- if (corners[2] && !rect_contains_rect (non_rounded, &rounded_rect_corner (rounded, 2)))
- return FALSE;
- if (corners[3] && !rect_contains_rect (non_rounded, &rounded_rect_corner (rounded, 3)))
+ if (corners[3] && !rect_contains_rect (non_rounded,
+ &rounded_rect_corner (rounded, 3)))
return FALSE;
/* We do intersect with at least one of the corners, but in such a way that the
* intersection between the two clips can still be represented by a single rounded
- * rect in a trivial way. do that. */
+ * rect in a trivial way. do that.
+ */
graphene_rect_intersection (non_rounded, &rounded->bounds, &result->bounds);
for (guint i = 0; i < 4; i++)
@@ -417,22 +426,28 @@ gsk_ngl_render_job_set_alpha (GskNglRenderJob *job,
static void
extract_matrix_metadata (GskNglRenderModelview *modelview)
{
- float dummy;
-
gsk_transform_to_matrix (modelview->transform, &modelview->matrix);
switch (gsk_transform_get_category (modelview->transform))
{
case GSK_TRANSFORM_CATEGORY_IDENTITY:
+ modelview->scale_x = 1;
+ modelview->scale_y = 1;
+ modelview->dx = 0;
+ modelview->dy = 0;
+ break;
+
case GSK_TRANSFORM_CATEGORY_2D_TRANSLATE:
modelview->scale_x = 1;
modelview->scale_y = 1;
+ gsk_transform_to_translate (modelview->transform,
+ &modelview->dx, &modelview->dy);
break;
case GSK_TRANSFORM_CATEGORY_2D_AFFINE:
gsk_transform_to_affine (modelview->transform,
&modelview->scale_x, &modelview->scale_y,
- &dummy, &dummy);
+ &modelview->dx, &modelview->dy);
break;
case GSK_TRANSFORM_CATEGORY_UNKNOWN:
@@ -457,6 +472,8 @@ extract_matrix_metadata (GskNglRenderModelview *modelview)
modelview->scale_x = graphene_vec3_length (&col1);
modelview->scale_y = graphene_vec3_length (&col2);
+ modelview->dx = 0;
+ modelview->dy = 0;
}
break;
@@ -736,9 +753,10 @@ gsk_ngl_render_job_transform_bounds (GskNglRenderJob *job,
*/
if G_LIKELY (category >= GSK_TRANSFORM_CATEGORY_2D_AFFINE)
{
- float dx, dy, scale_x, scale_y;
-
- gsk_transform_to_affine (transform, &scale_x, &scale_y, &dx, &dy);
+ float scale_x = job->current_modelview->scale_x;
+ float scale_y = job->current_modelview->scale_y;
+ float dx = job->current_modelview->dx;
+ float dy = job->current_modelview->dy;
/* Init directly into out rect */
out_rect->origin.x = ((rect->origin.x + job->offset_x) * scale_x) + dx;
@@ -1373,11 +1391,16 @@ static inline void
gsk_ngl_render_job_visit_color_node (GskNglRenderJob *job,
const GskRenderNode *node)
{
+ const GdkRGBA *rgba;
guint16 color[4];
GskNglProgram *program;
GskNglCommandBatch *batch;
- rgba_to_half (gsk_color_node_get_color (node), color);
+ rgba = gsk_color_node_get_color (node);
+ if (gdk_rgba_is_clear (rgba))
+ return;
+
+ rgba_to_half (rgba, color);
/* Avoid switching away from the coloring program for
* rendering a solid color.
@@ -1944,7 +1967,7 @@ gsk_ngl_render_job_visit_transform_node (GskNglRenderJob *job,
{
float dx, dy;
- gsk_transform_to_translate (transform, &dx, &dy);
+ gsk_transform_node_get_translate (node, &dx, &dy);
gsk_ngl_render_job_offset (job, dx, dy);
gsk_ngl_render_job_visit_node (job, child);
gsk_ngl_render_job_offset (job, -dx, -dy);
@@ -2845,7 +2868,12 @@ gsk_ngl_render_job_visit_text_node (GskNglRenderJob *job,
* We tell the shader by setting the color to vec4(-1).
*/
if (force_color || !gsk_text_node_has_color_glyphs (node))
- rgba_to_half (color, c);
+ {
+ if (gdk_rgba_is_clear (color))
+ return;
+
+ rgba_to_half (color, c);
+ }
lookup.font = (PangoFont *)font;
lookup.scale = (guint) (text_scale * 1024);
@@ -3315,7 +3343,7 @@ gsk_ngl_render_job_upload_texture (GskNglRenderJob *job,
GdkTexture *texture,
GskNglRenderOffscreen *offscreen)
{
- if (gsk_ngl_texture_library_can_cache (GSK_NGL_TEXTURE_LIBRARY (job->driver->icons),
+ if (gsk_ngl_texture_library_can_cache ((GskNglTextureLibrary *)job->driver->icons,
texture->width,
texture->height) &&
!GDK_IS_GL_TEXTURE (texture))
@@ -3519,18 +3547,21 @@ gsk_ngl_render_job_visit_node (GskNglRenderJob *job,
case GSK_CONTAINER_NODE:
{
- guint n_children = gsk_container_node_get_n_children (node);
+ GskRenderNode **children;
+ guint n_children;
+
+ children = gsk_container_node_get_children (node, &n_children);
for (guint i = 0; i < n_children; i++)
{
- const GskRenderNode *child = gsk_container_node_get_child (node, i);
+ const GskRenderNode *child = children[i];
if (i + 1 < n_children &&
job->current_clip->is_fully_contained &&
gsk_render_node_get_node_type (child) == GSK_ROUNDED_CLIP_NODE)
{
const GskRenderNode *grandchild = gsk_rounded_clip_node_get_child (child);
- const GskRenderNode *child2 = gsk_container_node_get_child (node, i + 1);
+ const GskRenderNode *child2 = children[i + 1];
if (gsk_render_node_get_node_type (grandchild) == GSK_COLOR_NODE &&
gsk_render_node_get_node_type (child2) == GSK_BORDER_NODE &&
gsk_border_node_get_uniform_color (child2) &&
@@ -3715,19 +3746,23 @@ gsk_ngl_render_job_visit_node_with_offscreen (GskNglRenderJob *job,
{
int max_texture_size = job->command_queue->max_texture_size;
- scaled_width = ceilf (offscreen->bounds->size.width * job->scale_x);
+ scaled_width = ceilf (offscreen->bounds->size.width * fabs (job->scale_x));
if (scaled_width > max_texture_size)
{
downscale_x = (float)max_texture_size / scaled_width;
scaled_width = max_texture_size;
}
+ if (job->scale_x < 0)
+ downscale_x = -downscale_x;
- scaled_height = ceilf (offscreen->bounds->size.height * job->scale_y);
+ scaled_height = ceilf (offscreen->bounds->size.height * fabs (job->scale_y));
if (scaled_height > max_texture_size)
{
downscale_y = (float)max_texture_size / scaled_height;
scaled_height = max_texture_size;
}
+ if (job->scale_y < 0)
+ downscale_y = -downscale_y;
}
GskNglRenderTarget *render_target;
diff --git a/gtk/gtkappchooserbutton.c b/gtk/gtkappchooserbutton.c
index 79d18f21c6..0878a9f81b 100644
--- a/gtk/gtkappchooserbutton.c
+++ b/gtk/gtkappchooserbutton.c
@@ -79,6 +79,7 @@ enum {
enum {
SIGNAL_CHANGED,
SIGNAL_CUSTOM_ITEM_ACTIVATED,
+ ACTIVATE,
NUM_SIGNALS
};
@@ -134,6 +135,7 @@ struct _GtkAppChooserButtonClass {
void (* changed) (GtkAppChooserButton *self);
void (* custom_item_activated) (GtkAppChooserButton *self,
const char *item_name);
+ void (* activate) (GtkAppChooserButton *self);
};
G_DEFINE_TYPE_WITH_CODE (GtkAppChooserButton, gtk_app_chooser_button, GTK_TYPE_WIDGET,
@@ -648,6 +650,12 @@ app_chooser_iface_init (GtkAppChooserIface *iface)
}
static void
+gtk_app_chooser_button_activate (GtkAppChooserButton *self)
+{
+ gtk_widget_activate (self->combobox);
+}
+
+static void
gtk_app_chooser_button_class_init (GtkAppChooserButtonClass *klass)
{
GObjectClass *oclass = G_OBJECT_CLASS (klass);
@@ -663,6 +671,8 @@ gtk_app_chooser_button_class_init (GtkAppChooserButtonClass *klass)
widget_class->grab_focus = gtk_widget_grab_focus_child;
widget_class->focus = gtk_widget_focus_child;
+ klass->activate = gtk_app_chooser_button_activate;
+
g_object_class_override_property (oclass, PROP_CONTENT_TYPE, "content-type");
/**
@@ -755,6 +765,28 @@ gtk_app_chooser_button_class_init (GtkAppChooserButtonClass *klass)
G_TYPE_NONE,
1, G_TYPE_STRING);
+ /**
+ * GtkAppChooserButton::activate:
+ * @widget: the object which received the signal.
+ *
+ * Emitted to when the button is activated.
+ *
+ * The `::activate` signal on `GtkAppChooserButton` is an action signal and
+ * emitting it causes the button to pop up its dialog.
+ *
+ * Since: 4.4
+ */
+ signals[ACTIVATE] =
+ g_signal_new (I_ ("activate"),
+ G_OBJECT_CLASS_TYPE (oclass),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GtkAppChooserButtonClass, activate),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
+
+ gtk_widget_class_set_activate_signal (widget_class, signals[ACTIVATE]);
+
gtk_widget_class_set_css_name (widget_class, I_("appchooserbutton"));
}
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index ba31a8820c..02d87ea30d 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -171,13 +171,14 @@
* ```xml
* <interface>
* <object class="GtkDialog" id="dialog1">
- * <child internal-child="vbox">
+ * <child internal-child="content_area">
* <object class="GtkBox" id="vbox1">
* <child internal-child="action_area">
* <object class="GtkBox" id="hbuttonbox1">
* <child>
* <object class="GtkButton" id="ok_button">
- * <property name="label">gtk-ok</property>
+ * <property name="label" translatable="yes">_Ok</property>
+ * <property name="use-underline">True</property>
* <signal name="clicked" handler="ok_button_clicked"/>
* </object>
* </child>
diff --git a/gtk/gtkcolorbutton.c b/gtk/gtkcolorbutton.c
index 90d3225351..d34e0c3cf3 100644
--- a/gtk/gtkcolorbutton.c
+++ b/gtk/gtkcolorbutton.c
@@ -91,6 +91,7 @@ struct _GtkColorButtonClass {
GtkWidgetClass parent_class;
void (* color_set) (GtkColorButton *cp);
+ void (* activate) (GtkColorButton *self);
};
/* Properties */
@@ -108,6 +109,7 @@ enum
enum
{
COLOR_SET,
+ ACTIVATE,
LAST_SIGNAL
};
@@ -138,6 +140,12 @@ G_DEFINE_TYPE_WITH_CODE (GtkColorButton, gtk_color_button, GTK_TYPE_WIDGET,
gtk_color_button_iface_init))
static void
+gtk_color_button_activate (GtkColorButton *self)
+{
+ gtk_widget_activate (self->button);
+}
+
+static void
gtk_color_button_class_init (GtkColorButtonClass *klass)
{
GObjectClass *gobject_class;
@@ -155,6 +163,7 @@ gtk_color_button_class_init (GtkColorButtonClass *klass)
widget_class->root = gtk_color_button_root;
klass->color_set = NULL;
+ klass->activate = gtk_color_button_activate;
g_object_class_override_property (gobject_class, PROP_RGBA, "rgba");
g_object_class_override_property (gobject_class, PROP_USE_ALPHA, "use-alpha");
@@ -195,6 +204,28 @@ gtk_color_button_class_init (GtkColorButtonClass *klass)
G_TYPE_NONE, 0);
/**
+ * GtkColorButton::activate:
+ * @widget: the object which received the signal.
+ *
+ * Emitted to when the color button is activated.
+ *
+ * The `::activate` signal on `GtkMenuButton` is an action signal and
+ * emitting it causes the button to pop up its dialog.
+ *
+ * Since: 4.4
+ */
+ color_button_signals[ACTIVATE] =
+ g_signal_new (I_ ("activate"),
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GtkColorButtonClass, activate),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
+
+ gtk_widget_class_set_activate_signal (widget_class, color_button_signals[ACTIVATE]);
+
+ /**
* GtkColorButton:show-editor:
*
* Whether the color chooser should open in editor mode.
diff --git a/gtk/gtkcssimagecrossfade.c b/gtk/gtkcssimagecrossfade.c
index fadd11331d..6953606c8e 100644
--- a/gtk/gtkcssimagecrossfade.c
+++ b/gtk/gtkcssimagecrossfade.c
@@ -312,7 +312,13 @@ parse_image (GtkCssParser *parser,
GtkCssImage **image = option_data;
if (_gtk_css_image_can_parse (parser))
- *image = _gtk_css_image_new_parse (parser);
+ {
+ *image = _gtk_css_image_new_parse (parser);
+ if (*image == NULL)
+ return FALSE;
+
+ return TRUE;
+ }
else if (gtk_css_color_value_can_parse (parser))
{
GtkCssValue *color;
@@ -322,11 +328,11 @@ parse_image (GtkCssParser *parser,
return FALSE;
*image = _gtk_css_image_fallback_new_for_color (color);
- }
- else
- return FALSE;
- return TRUE;
+ return TRUE;
+ }
+
+ return FALSE;
}
static guint
diff --git a/gtk/gtkdebug.h b/gtk/gtkdebug.h
index 6bd9d98d00..f1cad3ea59 100644
--- a/gtk/gtkdebug.h
+++ b/gtk/gtkdebug.h
@@ -54,7 +54,7 @@ G_BEGIN_DECLS
* @GTK_DEBUG_CONSTRAINTS: Information from the constraints solver
* @GTK_DEBUG_BUILDER_OBJECTS: Log unused GtkBuilder objects
* @GTK_DEBUG_A11Y: Information about accessibility state changes
- * @GTK_DEBUG_ICONFALLBACK: Information about icon fallback
+ * @GTK_DEBUG_ICONFALLBACK: Information about icon fallback. Since: 4.2
*
* Flags to use with gtk_set_debug_flags().
*
diff --git a/gtk/gtkfilefilter.c b/gtk/gtkfilefilter.c
index 22b1616881..ae45ad72a4 100644
--- a/gtk/gtkfilefilter.c
+++ b/gtk/gtkfilefilter.c
@@ -606,6 +606,8 @@ gtk_file_filter_add_pattern (GtkFileFilter *filter,
*
* In contrast to pattern matches, suffix matches
* are *always* case-insensitive.
+ *
+ * Since: 4.4
*/
void
gtk_file_filter_add_suffix (GtkFileFilter *filter,
diff --git a/gtk/gtkfontbutton.c b/gtk/gtkfontbutton.c
index 2e2d136fdc..a207c5a403 100644
--- a/gtk/gtkfontbutton.c
+++ b/gtk/gtkfontbutton.c
@@ -110,12 +110,14 @@ struct _GtkFontButtonClass
GtkWidgetClass parent_class;
void (* font_set) (GtkFontButton *gfp);
+ void (* activate) (GtkFontButton *self);
};
/* Signals */
enum
{
FONT_SET,
+ ACTIVATE,
LAST_SIGNAL
};
@@ -454,6 +456,12 @@ gtk_font_button_font_chooser_notify (GObject *object,
}
static void
+gtk_font_button_activate (GtkFontButton *self)
+{
+ gtk_widget_activate (self->button);
+}
+
+static void
gtk_font_button_class_init (GtkFontButtonClass *klass)
{
GObjectClass *gobject_class;
@@ -470,6 +478,7 @@ gtk_font_button_class_init (GtkFontButtonClass *klass)
widget_class->focus = gtk_widget_focus_child;
klass->font_set = NULL;
+ klass->activate = gtk_font_button_activate;
_gtk_font_chooser_install_properties (gobject_class);
@@ -546,6 +555,28 @@ gtk_font_button_class_init (GtkFontButtonClass *klass)
NULL,
G_TYPE_NONE, 0);
+ /**
+ * GtkFontButton::activate:
+ * @widget: the object which received the signal.
+ *
+ * Emitted to when the font button is activated.
+ *
+ * The `::activate` signal on `GtkFontButton` is an action signal and
+ * emitting it causes the button to present its dialog.
+ *
+ * Since: 4.4
+ */
+ font_button_signals[ACTIVATE] =
+ g_signal_new (I_ ("activate"),
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GtkFontButtonClass, activate),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
+
+ gtk_widget_class_set_activate_signal (widget_class, font_button_signals[ACTIVATE]);
+
gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
gtk_widget_class_set_css_name (widget_class, I_("fontbutton"));
}
diff --git a/gtk/gtkgridlayout.c b/gtk/gtkgridlayout.c
index fcf067adba..c9b6195abe 100644
--- a/gtk/gtkgridlayout.c
+++ b/gtk/gtkgridlayout.c
@@ -462,7 +462,7 @@ get_grid_child (GtkGridLayout *self,
{
GtkLayoutManager *manager = GTK_LAYOUT_MANAGER (self);
- return GTK_GRID_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (manager, child));
+ return (GtkGridLayoutChild *) gtk_layout_manager_get_layout_child (manager, child);
}
static int
@@ -496,9 +496,9 @@ grid_request_count_lines (GridRequest *request)
min[0] = min[1] = G_MAXINT;
max[0] = max[1] = G_MININT;
- for (child = gtk_widget_get_first_child (request->widget);
+ for (child = _gtk_widget_get_first_child (request->widget);
child != NULL;
- child = gtk_widget_get_next_sibling (child))
+ child = _gtk_widget_get_next_sibling (child))
{
GtkGridLayoutChild *grid_child = get_grid_child (request->layout, child);
GridChildAttach *attach = grid_child->attach;
@@ -541,9 +541,9 @@ grid_request_init (GridRequest *request,
}
- for (child = gtk_widget_get_first_child (request->widget);
+ for (child = _gtk_widget_get_first_child (request->widget);
child != NULL;
- child = gtk_widget_get_next_sibling (child))
+ child = _gtk_widget_get_next_sibling (child))
{
GtkGridLayoutChild *grid_child = get_grid_child (request->layout, child);
GridChildAttach *attach;
@@ -637,9 +637,9 @@ grid_request_non_spanning (GridRequest *request,
lines = &request->lines[orientation];
- for (child = gtk_widget_get_first_child (request->widget);
+ for (child = _gtk_widget_get_first_child (request->widget);
child != NULL;
- child = gtk_widget_get_next_sibling (child))
+ child = _gtk_widget_get_next_sibling (child))
{
GtkGridLayoutChild *grid_child = get_grid_child (request->layout, child);
GridChildAttach *attach;
@@ -776,9 +776,9 @@ grid_request_spanning (GridRequest *request,
lines = &request->lines[orientation];
spacing = get_spacing (request->layout, request->widget, orientation);
- for (child = gtk_widget_get_first_child (request->widget);
+ for (child = _gtk_widget_get_first_child (request->widget);
child != NULL;
- child = gtk_widget_get_next_sibling (child))
+ child = _gtk_widget_get_next_sibling (child))
{
GtkGridLayoutChild *grid_child = get_grid_child (request->layout, child);
@@ -915,9 +915,9 @@ grid_request_compute_expand (GridRequest *request,
lines->lines[i].empty = TRUE;
}
- for (child = gtk_widget_get_first_child (request->widget);
+ for (child = _gtk_widget_get_first_child (request->widget);
child != NULL;
- child = gtk_widget_get_next_sibling (child))
+ child = _gtk_widget_get_next_sibling (child))
{
GtkGridLayoutChild *grid_child = get_grid_child (request->layout, child);
@@ -937,9 +937,9 @@ grid_request_compute_expand (GridRequest *request,
line->expand = TRUE;
}
- for (child = gtk_widget_get_first_child (request->widget);
+ for (child = _gtk_widget_get_first_child (request->widget);
child != NULL;
- child = gtk_widget_get_next_sibling (child))
+ child = _gtk_widget_get_next_sibling (child))
{
GtkGridLayoutChild *grid_child = get_grid_child (request->layout, child);
@@ -1365,7 +1365,7 @@ gtk_grid_layout_get_size (GtkGridLayout *self,
if (natural_baseline)
*natural_baseline = -1;
- if (gtk_widget_get_first_child (widget) == NULL)
+ if (_gtk_widget_get_first_child (widget) == NULL)
return;
request.layout = self;
@@ -1405,7 +1405,7 @@ gtk_grid_layout_get_size_for_size (GtkGridLayout *self,
if (natural_baseline)
*natural_baseline = -1;
- if (gtk_widget_get_first_child (widget) == NULL)
+ if (_gtk_widget_get_first_child (widget) == NULL)
return;
request.layout = self;
@@ -1495,9 +1495,9 @@ grid_request_allocate_children (GridRequest *request,
int x, y, width, height, baseline, ignore;
- for (child = gtk_widget_get_first_child (request->widget);
+ for (child = _gtk_widget_get_first_child (request->widget);
child != NULL;
- child = gtk_widget_get_next_sibling (child))
+ child = _gtk_widget_get_next_sibling (child))
{
GtkGridLayoutChild *grid_child = get_grid_child (request->layout, child);
@@ -1533,7 +1533,7 @@ gtk_grid_layout_allocate (GtkLayoutManager *manager,
GridLines *lines;
GtkOrientation orientation;
- if (gtk_widget_get_first_child (widget) == NULL)
+ if (_gtk_widget_get_first_child (widget) == NULL)
return;
request.layout = self;
diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index f8e576e319..785466f1d2 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -2623,6 +2623,8 @@ gtk_icon_theme_has_icon (GtkIconTheme *self,
* for a particular `GIcon`.
*
* Returns: %TRUE if @self includes an icon for @gicon
+ *
+ * Since: 4.2
*/
gboolean
gtk_icon_theme_has_gicon (GtkIconTheme *self,
diff --git a/gtk/gtkjoinedmenu.c b/gtk/gtkjoinedmenu.c
new file mode 100644
index 0000000000..bd1be741b2
--- /dev/null
+++ b/gtk/gtkjoinedmenu.c
@@ -0,0 +1,315 @@
+/*
+ * Copyright © 2020 Red Hat, Inc.
+ *
+ * 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.1 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "config.h"
+
+#include "gtkjoinedmenuprivate.h"
+
+typedef struct
+{
+ GMenuModel *model;
+ gulong items_changed_handler;
+} Menu;
+
+struct _GtkJoinedMenu
+{
+ GMenuModel parent_instance;
+ GArray *menus;
+};
+
+G_DEFINE_TYPE (GtkJoinedMenu, gtk_joined_menu, G_TYPE_MENU_MODEL)
+
+static void
+clear_menu (gpointer data)
+{
+ Menu *menu = data;
+
+ g_clear_signal_handler (&menu->items_changed_handler, menu->model);
+ g_clear_object (&menu->model);
+}
+
+static gint
+gtk_joined_menu_get_offset_at_index (GtkJoinedMenu *self,
+ gint index)
+{
+ gint offset = 0;
+
+ for (guint i = 0; i < index; i++)
+ offset += g_menu_model_get_n_items (g_array_index (self->menus, Menu, i).model);
+
+ return offset;
+}
+
+static gint
+gtk_joined_menu_get_offset_at_model (GtkJoinedMenu *self,
+ GMenuModel *model)
+{
+ gint offset = 0;
+
+ for (guint i = 0; i < self->menus->len; i++)
+ {
+ const Menu *menu = &g_array_index (self->menus, Menu, i);
+
+ if (menu->model == model)
+ break;
+
+ offset += g_menu_model_get_n_items (menu->model);
+ }
+
+ return offset;
+}
+
+static gboolean
+gtk_joined_menu_is_mutable (GMenuModel *model)
+{
+ return TRUE;
+}
+
+static gint
+gtk_joined_menu_get_n_items (GMenuModel *model)
+{
+ GtkJoinedMenu *self = (GtkJoinedMenu *)model;
+
+ if (self->menus->len == 0)
+ return 0;
+
+ return gtk_joined_menu_get_offset_at_index (self, self->menus->len);
+}
+
+static const Menu *
+gtk_joined_menu_get_item (GtkJoinedMenu *self,
+ gint *item_index)
+{
+ g_assert (GTK_IS_JOINED_MENU (self));
+
+ for (guint i = 0; i < self->menus->len; i++)
+ {
+ const Menu *menu = &g_array_index (self->menus, Menu, i);
+ gint n_items = g_menu_model_get_n_items (menu->model);
+
+ if (n_items > *item_index)
+ return menu;
+
+ (*item_index) -= n_items;
+ }
+
+ g_return_val_if_reached (NULL);
+}
+
+static void
+gtk_joined_menu_get_item_attributes (GMenuModel *model,
+ gint item_index,
+ GHashTable **attributes)
+{
+ const Menu *menu = gtk_joined_menu_get_item (GTK_JOINED_MENU (model), &item_index);
+ G_MENU_MODEL_GET_CLASS (menu->model)->get_item_attributes (menu->model, item_index, attributes);
+}
+
+static GMenuAttributeIter *
+gtk_joined_menu_iterate_item_attributes (GMenuModel *model,
+ gint item_index)
+{
+ const Menu *menu = gtk_joined_menu_get_item (GTK_JOINED_MENU (model), &item_index);
+ return G_MENU_MODEL_GET_CLASS (menu->model)->iterate_item_attributes (menu->model, item_index);
+}
+
+static GVariant *
+gtk_joined_menu_get_item_attribute_value (GMenuModel *model,
+ gint item_index,
+ const gchar *attribute,
+ const GVariantType *expected_type)
+{
+ const Menu *menu = gtk_joined_menu_get_item (GTK_JOINED_MENU (model), &item_index);
+ return G_MENU_MODEL_GET_CLASS (menu->model)->get_item_attribute_value (menu->model, item_index, attribute, expected_type);
+}
+
+static void
+gtk_joined_menu_get_item_links (GMenuModel *model,
+ gint item_index,
+ GHashTable **links)
+{
+ const Menu *menu = gtk_joined_menu_get_item (GTK_JOINED_MENU (model), &item_index);
+ G_MENU_MODEL_GET_CLASS (menu->model)->get_item_links (menu->model, item_index, links);
+}
+
+static GMenuLinkIter *
+gtk_joined_menu_iterate_item_links (GMenuModel *model,
+ gint item_index)
+{
+ const Menu *menu = gtk_joined_menu_get_item (GTK_JOINED_MENU (model), &item_index);
+ return G_MENU_MODEL_GET_CLASS (menu->model)->iterate_item_links (menu->model, item_index);
+}
+
+static GMenuModel *
+gtk_joined_menu_get_item_link (GMenuModel *model,
+ gint item_index,
+ const gchar *link)
+{
+ const Menu *menu = gtk_joined_menu_get_item (GTK_JOINED_MENU (model), &item_index);
+ return G_MENU_MODEL_GET_CLASS (menu->model)->get_item_link (menu->model, item_index, link);
+}
+
+static void
+gtk_joined_menu_finalize (GObject *object)
+{
+ GtkJoinedMenu *self = (GtkJoinedMenu *)object;
+
+ g_clear_pointer (&self->menus, g_array_unref);
+
+ G_OBJECT_CLASS (gtk_joined_menu_parent_class)->finalize (object);
+}
+
+static void
+gtk_joined_menu_class_init (GtkJoinedMenuClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GMenuModelClass *menu_model_class = G_MENU_MODEL_CLASS (klass);
+
+ object_class->finalize = gtk_joined_menu_finalize;
+
+ menu_model_class->is_mutable = gtk_joined_menu_is_mutable;
+ menu_model_class->get_n_items = gtk_joined_menu_get_n_items;
+ menu_model_class->get_item_attributes = gtk_joined_menu_get_item_attributes;
+ menu_model_class->iterate_item_attributes = gtk_joined_menu_iterate_item_attributes;
+ menu_model_class->get_item_attribute_value = gtk_joined_menu_get_item_attribute_value;
+ menu_model_class->get_item_links = gtk_joined_menu_get_item_links;
+ menu_model_class->iterate_item_links = gtk_joined_menu_iterate_item_links;
+ menu_model_class->get_item_link = gtk_joined_menu_get_item_link;
+}
+
+static void
+gtk_joined_menu_init (GtkJoinedMenu *self)
+{
+ self->menus = g_array_new (FALSE, FALSE, sizeof (Menu));
+ g_array_set_clear_func (self->menus, clear_menu);
+}
+
+static void
+gtk_joined_menu_on_items_changed (GtkJoinedMenu *self,
+ guint offset,
+ guint removed,
+ guint added,
+ GMenuModel *model)
+{
+ g_assert (GTK_IS_JOINED_MENU (self));
+ g_assert (G_IS_MENU_MODEL (model));
+
+ offset += gtk_joined_menu_get_offset_at_model (self, model);
+ g_menu_model_items_changed (G_MENU_MODEL (self), offset, removed, added);
+}
+
+GtkJoinedMenu *
+gtk_joined_menu_new (void)
+{
+ return g_object_new (GTK_TYPE_JOINED_MENU, NULL);
+}
+
+static void
+gtk_joined_menu_insert (GtkJoinedMenu *self,
+ GMenuModel *model,
+ gint index)
+{
+ Menu menu = { 0 };
+ gint offset;
+ gint n_items;
+
+ g_assert (GTK_IS_JOINED_MENU (self));
+ g_assert (G_IS_MENU_MODEL (model));
+ g_assert (index >= 0);
+ g_assert (index <= self->menus->len);
+
+ menu.model = g_object_ref (model);
+ menu.items_changed_handler =
+ g_signal_connect_swapped (menu.model,
+ "items-changed",
+ G_CALLBACK (gtk_joined_menu_on_items_changed),
+ self);
+ g_array_insert_val (self->menus, index, menu);
+
+ n_items = g_menu_model_get_n_items (model);
+ offset = gtk_joined_menu_get_offset_at_index (self, index);
+ g_menu_model_items_changed (G_MENU_MODEL (self), offset, 0, n_items);
+}
+
+void
+gtk_joined_menu_append_menu (GtkJoinedMenu *self,
+ GMenuModel *model)
+{
+
+ g_return_if_fail (GTK_IS_JOINED_MENU (self));
+ g_return_if_fail (G_MENU_MODEL (model));
+
+ gtk_joined_menu_insert (self, model, self->menus->len);
+}
+
+void
+gtk_joined_menu_prepend_menu (GtkJoinedMenu *self,
+ GMenuModel *model)
+{
+ g_return_if_fail (GTK_IS_JOINED_MENU (self));
+ g_return_if_fail (G_MENU_MODEL (model));
+
+ gtk_joined_menu_insert (self, model, 0);
+}
+
+void
+gtk_joined_menu_remove_index (GtkJoinedMenu *self,
+ guint index)
+{
+ const Menu *menu;
+ gint n_items;
+ gint offset;
+
+ g_return_if_fail (GTK_IS_JOINED_MENU (self));
+ g_return_if_fail (index < self->menus->len);
+
+ menu = &g_array_index (self->menus, Menu, index);
+
+ offset = gtk_joined_menu_get_offset_at_index (self, index);
+ n_items = g_menu_model_get_n_items (menu->model);
+
+ g_array_remove_index (self->menus, index);
+
+ g_menu_model_items_changed (G_MENU_MODEL (self), offset, n_items, 0);
+}
+
+void
+gtk_joined_menu_remove_menu (GtkJoinedMenu *self,
+ GMenuModel *model)
+{
+ g_return_if_fail (GTK_IS_JOINED_MENU (self));
+ g_return_if_fail (G_IS_MENU_MODEL (model));
+
+ for (guint i = 0; i < self->menus->len; i++)
+ {
+ if (g_array_index (self->menus, Menu, i).model == model)
+ {
+ gtk_joined_menu_remove_index (self, i);
+ break;
+ }
+ }
+}
+
+guint
+gtk_joined_menu_get_n_joined (GtkJoinedMenu *self)
+{
+ g_return_val_if_fail (GTK_IS_JOINED_MENU (self), 0);
+
+ return self->menus->len;
+}
diff --git a/gtk/gtkjoinedmenuprivate.h b/gtk/gtkjoinedmenuprivate.h
new file mode 100644
index 0000000000..8e4b61e6cb
--- /dev/null
+++ b/gtk/gtkjoinedmenuprivate.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright © 2020 Red Hat, Inc.
+ *
+ * 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.1 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#pragma once
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_JOINED_MENU (gtk_joined_menu_get_type())
+
+G_DECLARE_FINAL_TYPE (GtkJoinedMenu, gtk_joined_menu, GTK, JOINED_MENU, GMenuModel)
+
+GtkJoinedMenu *gtk_joined_menu_new (void);
+guint gtk_joined_menu_get_n_joined (GtkJoinedMenu *self);
+void gtk_joined_menu_append_menu (GtkJoinedMenu *self,
+ GMenuModel *model);
+void gtk_joined_menu_prepend_menu (GtkJoinedMenu *self,
+ GMenuModel *model);
+void gtk_joined_menu_remove_menu (GtkJoinedMenu *self,
+ GMenuModel *model);
+void gtk_joined_menu_remove_index (GtkJoinedMenu *self,
+ guint index);
+
+G_END_DECLS
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index bfa231b9d9..ced834f980 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -52,6 +52,7 @@
#include "gtkdragsourceprivate.h"
#include "gtkdragicon.h"
#include "gtkcsscolorvalueprivate.h"
+#include "gtkjoinedmenuprivate.h"
#include <math.h>
#include <string.h>
@@ -5468,9 +5469,11 @@ gtk_label_move_cursor (GtkLabel *self,
static GMenuModel *
gtk_label_get_menu_model (GtkLabel *self)
{
+ GtkJoinedMenu *joined;
GMenu *menu, *section;
GMenuItem *item;
+ joined = gtk_joined_menu_new ();
menu = g_menu_new ();
section = g_menu_new ();
@@ -5498,10 +5501,13 @@ gtk_label_get_menu_model (GtkLabel *self)
g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
g_object_unref (section);
+ gtk_joined_menu_append_menu (joined, G_MENU_MODEL (menu));
+ g_object_unref (menu);
+
if (self->extra_menu)
- g_menu_append_section (menu, NULL, self->extra_menu);
+ gtk_joined_menu_append_menu (joined, self->extra_menu);
- return G_MENU_MODEL (menu);
+ return G_MENU_MODEL (joined);
}
static void
diff --git a/gtk/gtklayoutmanager.c b/gtk/gtklayoutmanager.c
index 2d6901103c..57746fd03e 100644
--- a/gtk/gtklayoutmanager.c
+++ b/gtk/gtklayoutmanager.c
@@ -517,7 +517,7 @@ gtk_layout_manager_get_layout_child (GtkLayoutManager *manager,
g_return_val_if_fail (GTK_IS_LAYOUT_MANAGER (manager), NULL);
g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
- parent = gtk_widget_get_parent (child);
+ parent = _gtk_widget_get_parent (child);
g_return_val_if_fail (parent != NULL, NULL);
if (priv->widget != parent)
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index accaee07c1..9a7b36eb05 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -26,6 +26,7 @@
#include "gdk/gdk.h"
#include "gdk/gdk-private.h"
+#include "gdk/gdkprofilerprivate.h"
#include "gsk/gskprivate.h"
#include "gsk/gskrendernodeprivate.h"
#include "gtknative.h"
@@ -520,10 +521,13 @@ static void
do_post_parse_initialization (void)
{
GdkDisplayManager *display_manager;
+ gint64 before G_GNUC_UNUSED;
if (gtk_initialized)
return;
+ before = GDK_PROFILER_CURRENT_TIME;
+
gettext_initialization ();
#ifdef SIGPIPE
@@ -533,21 +537,28 @@ do_post_parse_initialization (void)
gtk_widget_set_default_direction (gtk_get_locale_direction ());
gdk_event_init_types ();
+
gsk_ensure_resources ();
gsk_render_node_init_types ();
_gtk_ensure_resources ();
+ gdk_profiler_end_mark (before, "basic initialization", NULL);
+
gtk_initialized = TRUE;
+ before = GDK_PROFILER_CURRENT_TIME;
#ifdef G_OS_UNIX
gtk_print_backends_init ();
#endif
gtk_im_modules_init ();
gtk_media_file_extension_init ();
+ gdk_profiler_end_mark (before, "init modules", NULL);
+ before = GDK_PROFILER_CURRENT_TIME;
display_manager = gdk_display_manager_get ();
if (gdk_display_manager_get_default_display (display_manager) != NULL)
default_display_notify_cb (display_manager);
+ gdk_profiler_end_mark (before, "create display", NULL);
g_signal_connect (display_manager, "notify::default-display",
G_CALLBACK (default_display_notify_cb),
@@ -580,6 +591,9 @@ gtk_init_check (void)
if (gtk_initialized)
return TRUE;
+ if (gdk_profiler_is_running ())
+ g_info ("Profiling is active");
+
gettext_initialization ();
if (!check_setugid ())
diff --git a/gtk/gtkmenubutton.c b/gtk/gtkmenubutton.c
index 5e5e70acae..e1d8209ddc 100644
--- a/gtk/gtkmenubutton.c
+++ b/gtk/gtkmenubutton.c
@@ -131,6 +131,8 @@ struct _GtkMenuButton
struct _GtkMenuButtonClass
{
GtkWidgetClass parent_class;
+
+ void (* activate) (GtkMenuButton *self);
};
enum
@@ -148,7 +150,13 @@ enum
LAST_PROP
};
+enum {
+ ACTIVATE,
+ LAST_SIGNAL
+};
+
static GParamSpec *menu_button_props[LAST_PROP];
+static guint signals[LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE (GtkMenuButton, gtk_menu_button, GTK_TYPE_WIDGET)
@@ -350,6 +358,12 @@ gtk_menu_button_grab_focus (GtkWidget *widget)
return gtk_widget_grab_focus (self->button);
}
+static void
+gtk_menu_button_activate (GtkMenuButton *self)
+{
+ gtk_widget_activate (self->button);
+}
+
static void gtk_menu_button_root (GtkWidget *widget);
static void gtk_menu_button_unroot (GtkWidget *widget);
@@ -372,6 +386,8 @@ gtk_menu_button_class_init (GtkMenuButtonClass *klass)
widget_class->focus = gtk_menu_button_focus;
widget_class->grab_focus = gtk_menu_button_grab_focus;
+ klass->activate = gtk_menu_button_activate;
+
/**
* GtkMenuButton:menu-model: (attributes org.gtk.Property.get=gtk_menu_button_get_menu_model org.gtk.Property.set=gtk_menu_button_set_menu_model)
*
@@ -481,6 +497,8 @@ gtk_menu_button_class_init (GtkMenuButtonClass *klass)
* Whether the menu button acts as a primary menu.
*
* Primary menus can be opened using the <kbd>F10</kbd> key
+ *
+ * Since: 4.4
*/
menu_button_props[PROP_PRIMARY] =
g_param_spec_boolean ("primary",
@@ -491,6 +509,28 @@ gtk_menu_button_class_init (GtkMenuButtonClass *klass)
g_object_class_install_properties (gobject_class, LAST_PROP, menu_button_props);
+ /**
+ * GtkMenuButton::activate:
+ * @widget: the object which received the signal.
+ *
+ * Emitted to when the menu button is activated.
+ *
+ * The `::activate` signal on `GtkMenuButton` is an action signal and
+ * emitting it causes the button to pop up its menu.
+ *
+ * Since: 4.4
+ */
+ signals[ACTIVATE] =
+ g_signal_new (I_ ("activate"),
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GtkMenuButtonClass, activate),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
+
+ gtk_widget_class_set_activate_signal (widget_class, signals[ACTIVATE]);
+
gtk_widget_class_set_css_name (widget_class, I_("menubutton"));
gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON);
}
@@ -1269,6 +1309,8 @@ gtk_menu_button_unroot (GtkWidget *widget)
* Sets whether menu button acts as a primary menu.
*
* Primary menus can be opened with the <kbd>F10</kbd> key.
+ *
+ * Since: 4.4
*/
void
gtk_menu_button_set_primary (GtkMenuButton *menu_button,
@@ -1302,6 +1344,8 @@ gtk_menu_button_set_primary (GtkMenuButton *menu_button,
* Returns whether the menu button acts as a primary menu.
*
* Returns: %TRUE if the button is a primary menu
+ *
+ * Since: 4.4
*/
gboolean
gtk_menu_button_get_primary (GtkMenuButton *menu_button)
diff --git a/gtk/gtkpasswordentry.c b/gtk/gtkpasswordentry.c
index 7e6e470dd7..0e66499c69 100644
--- a/gtk/gtkpasswordentry.c
+++ b/gtk/gtkpasswordentry.c
@@ -36,6 +36,7 @@
#include "gtkwidgetprivate.h"
#include "gtkcsspositionvalueprivate.h"
#include "gtkcssnodeprivate.h"
+#include "gtkjoinedmenuprivate.h"
/**
@@ -163,12 +164,12 @@ visibility_toggled (GObject *object,
if (gtk_text_get_visibility (GTK_TEXT (entry->entry)))
{
gtk_image_set_from_icon_name (GTK_IMAGE (entry->peek_icon), "eye-open-negative-filled-symbolic");
- gtk_widget_set_tooltip_text (entry->peek_icon, _("Hide text"));
+ gtk_widget_set_tooltip_text (entry->peek_icon, _("Hide Text"));
}
else
{
gtk_image_set_from_icon_name (GTK_IMAGE (entry->peek_icon), "eye-not-looking-symbolic");
- gtk_widget_set_tooltip_text (entry->peek_icon, _("Show text"));
+ gtk_widget_set_tooltip_text (entry->peek_icon, _("Show Text"));
}
if (entry->keyboard)
@@ -602,7 +603,7 @@ gtk_password_entry_set_show_peek_icon (GtkPasswordEntry *entry,
GtkGesture *press;
entry->peek_icon = gtk_image_new_from_icon_name ("eye-not-looking-symbolic");
- gtk_widget_set_tooltip_text (entry->peek_icon, _("Show text"));
+ gtk_widget_set_tooltip_text (entry->peek_icon, _("Show Text"));
gtk_widget_set_parent (entry->peek_icon, GTK_WIDGET (entry));
press = gtk_gesture_click_new ();
@@ -658,6 +659,7 @@ void
gtk_password_entry_set_extra_menu (GtkPasswordEntry *entry,
GMenuModel *model)
{
+ GtkJoinedMenu *joined;
GMenu *menu;
GMenu *section;
GMenuItem *item;
@@ -671,6 +673,7 @@ gtk_password_entry_set_extra_menu (GtkPasswordEntry *entry,
return;
}
+ joined = gtk_joined_menu_new ();
menu = g_menu_new ();
section = g_menu_new ();
@@ -682,12 +685,15 @@ gtk_password_entry_set_extra_menu (GtkPasswordEntry *entry,
g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
g_object_unref (section);
+ gtk_joined_menu_append_menu (joined, G_MENU_MODEL (menu));
+ g_object_unref (menu);
+
if (model)
- g_menu_append_section (menu, NULL, model);
+ gtk_joined_menu_append_menu (joined, model);
- gtk_text_set_extra_menu (GTK_TEXT (entry->entry), G_MENU_MODEL (menu));
+ gtk_text_set_extra_menu (GTK_TEXT (entry->entry), G_MENU_MODEL (joined));
- g_object_unref (menu);
+ g_object_unref (joined);
g_object_notify_by_pspec (G_OBJECT (entry), props[PROP_EXTRA_MENU]);
}
diff --git a/gtk/gtkpasswordentrybuffer.c b/gtk/gtkpasswordentrybuffer.c
index 4a36d07729..39e75dc952 100644
--- a/gtk/gtkpasswordentrybuffer.c
+++ b/gtk/gtkpasswordentrybuffer.c
@@ -38,7 +38,7 @@
*
* `GtkPasswordEntry` uses a `GtkPasswordEntryBuffer`.
*
- * Since 4.4.
+ * Since: 4.4
*/
struct _GtkPasswordEntryBuffer
{
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 058cff7921..2df696234c 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -987,11 +987,15 @@ scrolled_window_drag_update_cb (GtkScrolledWindow *scrolled_window,
GtkGesture *gesture)
{
GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window);
+ GdkEventSequence *sequence;
GtkAdjustment *hadjustment;
GtkAdjustment *vadjustment;
double dx, dy;
- if (!gtk_drag_check_threshold_double (GTK_WIDGET (scrolled_window),
+ sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
+
+ if (gtk_gesture_get_sequence_state (gesture, sequence) != GTK_EVENT_SEQUENCE_CLAIMED &&
+ !gtk_drag_check_threshold_double (GTK_WIDGET (scrolled_window),
0, 0, offset_x, offset_y))
return;
diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c
index 935112061a..45770d5498 100644
--- a/gtk/gtksizerequest.c
+++ b/gtk/gtksizerequest.c
@@ -234,13 +234,16 @@ gtk_widget_query_size_for_orientation (GtkWidget *widget,
&minimum_for_size, &natural_for_size,
NULL, NULL);
- if (for_size < MAX (minimum_for_size, css_min_for_size))
- for_size = MAX (minimum_for_size, css_min_for_size);
+ if (minimum_for_size < css_min_for_size)
+ minimum_for_size = css_min_for_size;
+
+ if (for_size < minimum_for_size)
+ for_size = minimum_for_size;
adjusted_for_size = for_size - widget_margins_for_size;
adjusted_for_size -= css_extra_for_size;
if (adjusted_for_size < 0)
- adjusted_for_size = MAX (minimum_for_size, css_min_for_size);
+ adjusted_for_size = minimum_for_size;
push_recursion_check (widget, orientation);
gtk_layout_manager_measure (layout_manager, widget,
@@ -272,13 +275,16 @@ gtk_widget_query_size_for_orientation (GtkWidget *widget,
gtk_widget_measure (widget, OPPOSITE_ORIENTATION (orientation), -1,
&minimum_for_size, &natural_for_size, NULL, NULL);
- /* TODO: Warn if the given for_size is too small? */
- if (for_size < MAX (minimum_for_size, css_min_for_size))
- for_size = MAX (minimum_for_size, css_min_for_size);
+ if (minimum_for_size < css_min_for_size)
+ minimum_for_size = css_min_for_size;
- adjusted_for_size = for_size - widget_margins_for_size;
+ if (for_size < minimum_for_size)
+ for_size = minimum_for_size;
+ adjusted_for_size = for_size - widget_margins_for_size;
adjusted_for_size -= css_extra_for_size;
+ if (adjusted_for_size < 0)
+ adjusted_for_size = minimum_for_size;
push_recursion_check (widget, orientation);
widget_class->measure (widget,
diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c
index b0b1222c66..5ebb37f14f 100644
--- a/gtk/gtksnapshot.c
+++ b/gtk/gtksnapshot.c
@@ -30,6 +30,8 @@
#include "gtkstylecontextprivate.h"
#include "gsktransformprivate.h"
+#include "gdk/gdkrgbaprivate.h"
+
#include "gsk/gskrendernodeprivate.h"
#include "gsk/gskroundedrectprivate.h"
@@ -461,8 +463,12 @@ gtk_snapshot_collect_opacity (GtkSnapshot *snapshot,
}
else if (state->data.opacity.opacity == 0.0)
{
+ GdkRGBA color = GDK_RGBA ("00000000");
+ graphene_rect_t bounds;
+
+ gsk_render_node_get_bounds (node, &bounds);
+ opacity_node = gsk_color_node_new (&color, &bounds);
gsk_render_node_unref (node);
- opacity_node = NULL;
}
else
{
@@ -2159,12 +2165,9 @@ gtk_snapshot_append_linear_gradient (GtkSnapshot *snapshot,
{
GskRenderNode *node;
graphene_rect_t real_bounds;
- graphene_point_t real_start_point;
- graphene_point_t real_end_point;
float scale_x, scale_y, dx, dy;
const GdkRGBA *first_color;
gboolean need_gradient = FALSE;
- int i;
g_return_if_fail (snapshot != NULL);
g_return_if_fail (start_point != NULL);
@@ -2174,13 +2177,9 @@ gtk_snapshot_append_linear_gradient (GtkSnapshot *snapshot,
gtk_snapshot_ensure_affine (snapshot, &scale_x, &scale_y, &dx, &dy);
gtk_graphene_rect_scale_affine (bounds, scale_x, scale_y, dx, dy, &real_bounds);
- real_start_point.x = scale_x * start_point->x + dx;
- real_start_point.y = scale_y * start_point->y + dy;
- real_end_point.x = scale_x * end_point->x + dx;
- real_end_point.y = scale_y * end_point->y + dy;
first_color = &stops[0].color;
- for (i = 0; i < n_stops; i ++)
+ for (gsize i = 0; i < n_stops; i ++)
{
if (!gdk_rgba_equal (first_color, &stops[i].color))
{
@@ -2190,13 +2189,24 @@ gtk_snapshot_append_linear_gradient (GtkSnapshot *snapshot,
}
if (need_gradient)
- node = gsk_linear_gradient_node_new (&real_bounds,
- &real_start_point,
- &real_end_point,
- stops,
- n_stops);
+ {
+ graphene_point_t real_start_point, real_end_point;
+
+ real_start_point.x = scale_x * start_point->x + dx;
+ real_start_point.y = scale_y * start_point->y + dy;
+ real_end_point.x = scale_x * end_point->x + dx;
+ real_end_point.y = scale_y * end_point->y + dy;
+
+ node = gsk_linear_gradient_node_new (&real_bounds,
+ &real_start_point,
+ &real_end_point,
+ stops,
+ n_stops);
+ }
else
- node = gsk_color_node_new (first_color, &real_bounds);
+ {
+ node = gsk_color_node_new (first_color, &real_bounds);
+ }
gtk_snapshot_append_node_internal (snapshot, node);
}
@@ -2223,9 +2233,9 @@ gtk_snapshot_append_repeating_linear_gradient (GtkSnapshot *snapshot,
{
GskRenderNode *node;
graphene_rect_t real_bounds;
- graphene_point_t real_start_point;
- graphene_point_t real_end_point;
float scale_x, scale_y, dx, dy;
+ gboolean need_gradient = FALSE;
+ const GdkRGBA *first_color;
g_return_if_fail (snapshot != NULL);
g_return_if_fail (start_point != NULL);
@@ -2235,16 +2245,36 @@ gtk_snapshot_append_repeating_linear_gradient (GtkSnapshot *snapshot,
gtk_snapshot_ensure_affine (snapshot, &scale_x, &scale_y, &dx, &dy);
gtk_graphene_rect_scale_affine (bounds, scale_x, scale_y, dx, dy, &real_bounds);
- real_start_point.x = scale_x * start_point->x + dx;
- real_start_point.y = scale_y * start_point->y + dy;
- real_end_point.x = scale_x * end_point->x + dx;
- real_end_point.y = scale_y * end_point->y + dy;
- node = gsk_repeating_linear_gradient_node_new (&real_bounds,
- &real_start_point,
- &real_end_point,
- stops,
- n_stops);
+ first_color = &stops[0].color;
+ for (gsize i = 0; i < n_stops; i ++)
+ {
+ if (!gdk_rgba_equal (first_color, &stops[i].color))
+ {
+ need_gradient = TRUE;
+ break;
+ }
+ }
+
+ if (need_gradient)
+ {
+ graphene_point_t real_start_point, real_end_point;
+
+ real_start_point.x = scale_x * start_point->x + dx;
+ real_start_point.y = scale_y * start_point->y + dy;
+ real_end_point.x = scale_x * end_point->x + dx;
+ real_end_point.y = scale_y * end_point->y + dy;
+
+ node = gsk_repeating_linear_gradient_node_new (&real_bounds,
+ &real_start_point,
+ &real_end_point,
+ stops,
+ n_stops);
+ }
+ else
+ {
+ node = gsk_color_node_new (first_color, &real_bounds);
+ }
gtk_snapshot_append_node_internal (snapshot, node);
}
@@ -2338,8 +2368,9 @@ gtk_snapshot_append_radial_gradient (GtkSnapshot *snapshot,
{
GskRenderNode *node;
graphene_rect_t real_bounds;
- graphene_point_t real_center;
float scale_x, scale_y, dx, dy;
+ gboolean need_gradient = FALSE;
+ const GdkRGBA *first_color;
g_return_if_fail (snapshot != NULL);
g_return_if_fail (center != NULL);
@@ -2348,17 +2379,37 @@ gtk_snapshot_append_radial_gradient (GtkSnapshot *snapshot,
gtk_snapshot_ensure_affine (snapshot, &scale_x, &scale_y, &dx, &dy);
gtk_graphene_rect_scale_affine (bounds, scale_x, scale_y, dx, dy, &real_bounds);
- real_center.x = scale_x * center->x + dx;
- real_center.y = scale_y * center->y + dy;
-
- node = gsk_radial_gradient_node_new (&real_bounds,
- &real_center,
- hradius * scale_x,
- vradius * scale_y,
- start,
- end,
- stops,
- n_stops);
+
+ first_color = &stops[0].color;
+ for (gsize i = 0; i < n_stops; i ++)
+ {
+ if (!gdk_rgba_equal (first_color, &stops[i].color))
+ {
+ need_gradient = TRUE;
+ break;
+ }
+ }
+
+ if (need_gradient)
+ {
+ graphene_point_t real_center;
+
+ real_center.x = scale_x * center->x + dx;
+ real_center.y = scale_y * center->y + dy;
+
+ node = gsk_radial_gradient_node_new (&real_bounds,
+ &real_center,
+ hradius * scale_x,
+ vradius * scale_y,
+ start,
+ end,
+ stops,
+ n_stops);
+ }
+ else
+ {
+ node = gsk_color_node_new (first_color, &real_bounds);
+ }
gtk_snapshot_append_node_internal (snapshot, node);
}
@@ -2391,8 +2442,9 @@ gtk_snapshot_append_repeating_radial_gradient (GtkSnapshot *snapshot,
{
GskRenderNode *node;
graphene_rect_t real_bounds;
- graphene_point_t real_center;
float scale_x, scale_y, dx, dy;
+ gboolean need_gradient = FALSE;
+ const GdkRGBA *first_color;
g_return_if_fail (snapshot != NULL);
g_return_if_fail (center != NULL);
@@ -2401,17 +2453,36 @@ gtk_snapshot_append_repeating_radial_gradient (GtkSnapshot *snapshot,
gtk_snapshot_ensure_affine (snapshot, &scale_x, &scale_y, &dx, &dy);
gtk_graphene_rect_scale_affine (bounds, scale_x, scale_y, dx, dy, &real_bounds);
- real_center.x = scale_x * center->x + dx;
- real_center.y = scale_y * center->y + dy;
-
- node = gsk_repeating_radial_gradient_node_new (&real_bounds,
- &real_center,
- hradius * scale_x,
- vradius * scale_y,
- start,
- end,
- stops,
- n_stops);
+
+ first_color = &stops[0].color;
+ for (gsize i = 0; i < n_stops; i ++)
+ {
+ if (!gdk_rgba_equal (first_color, &stops[i].color))
+ {
+ need_gradient = TRUE;
+ break;
+ }
+ }
+
+ if (need_gradient)
+ {
+ graphene_point_t real_center;
+
+ real_center.x = scale_x * center->x + dx;
+ real_center.y = scale_y * center->y + dy;
+ node = gsk_repeating_radial_gradient_node_new (&real_bounds,
+ &real_center,
+ hradius * scale_x,
+ vradius * scale_y,
+ start,
+ end,
+ stops,
+ n_stops);
+ }
+ else
+ {
+ node = gsk_color_node_new (first_color, &real_bounds);
+ }
gtk_snapshot_append_node_internal (snapshot, node);
}
diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c
index d53eb0653a..dffc603452 100644
--- a/gtk/gtkstack.c
+++ b/gtk/gtkstack.c
@@ -428,7 +428,7 @@ gtk_stack_page_class_init (GtkStackPageClass *class)
P_("Name"),
P_("The name of the child page"),
NULL,
- GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+ GTK_PARAM_READWRITE);
/**
* GtkStackPage:title: (attributes org.gtk.Property.get=gtk_stack_page_get_title org.gtk.Property.set=gtk_stack_page_set_title)
diff --git a/gtk/gtktext.c b/gtk/gtktext.c
index f3c23c3365..8e051fe413 100644
--- a/gtk/gtktext.c
+++ b/gtk/gtktext.c
@@ -64,6 +64,7 @@
#include "gtkwindow.h"
#include "gtknative.h"
#include "gtkactionmuxerprivate.h"
+#include "gtkjoinedmenuprivate.h"
#include <cairo-gobject.h>
#include <string.h>
@@ -2661,24 +2662,19 @@ in_selection (GtkText *self,
return retval;
}
-static void
+static int
gesture_get_current_point_in_layout (GtkGestureSingle *gesture,
- GtkText *self,
- int *x,
- int *y)
+ GtkText *self)
{
- int tx, ty;
+ int tx;
GdkEventSequence *sequence;
- double px, py;
+ double px;
sequence = gtk_gesture_single_get_current_sequence (gesture);
- gtk_gesture_get_point (GTK_GESTURE (gesture), sequence, &px, &py);
- gtk_text_get_layout_offsets (self, &tx, &ty);
+ gtk_gesture_get_point (GTK_GESTURE (gesture), sequence, &px, NULL);
+ gtk_text_get_layout_offsets (self, &tx, NULL);
- if (x)
- *x = px - tx;
- if (y)
- *y = py - ty;
+ return px - tx;
}
static void
@@ -2736,7 +2732,8 @@ gtk_text_click_gesture_pressed (GtkGestureClick *gesture,
current = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), current);
- gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self, &x, &y);
+ x = gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self);
+ y = widget_y;
gtk_text_reset_blink_time (self);
if (!gtk_widget_has_focus (widget))
@@ -2988,10 +2985,14 @@ gtk_text_drag_gesture_update (GtkGestureDrag *gesture,
GdkEventSequence *sequence;
GdkEvent *event;
int x, y;
+ double start_y;
gtk_text_selection_bubble_popup_unset (self);
- gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self, &x, &y);
+ x = gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self);
+ gtk_gesture_drag_get_start_point (gesture, NULL, &start_y);
+ y = start_y + offset_y;
+
sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
@@ -6035,9 +6036,11 @@ static GMenuModel *
gtk_text_get_menu_model (GtkText *self)
{
GtkTextPrivate *priv = gtk_text_get_instance_private (self);
+ GtkJoinedMenu *joined;
GMenu *menu, *section;
GMenuItem *item;
+ joined = gtk_joined_menu_new ();
menu = g_menu_new ();
section = g_menu_new ();
@@ -6075,10 +6078,13 @@ gtk_text_get_menu_model (GtkText *self)
g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
g_object_unref (section);
+ gtk_joined_menu_append_menu (joined, G_MENU_MODEL (menu));
+ g_object_unref (menu);
+
if (priv->extra_menu)
- g_menu_append_section (menu, NULL, priv->extra_menu);
+ gtk_joined_menu_append_menu (joined, priv->extra_menu);
- return G_MENU_MODEL (menu);
+ return G_MENU_MODEL (joined);
}
static gboolean
@@ -7117,6 +7123,69 @@ gtk_text_get_truncate_multiline (GtkText *self)
return priv->truncate_multiline;
}
+/**
+ * gtk_text_compute_cursor_extents:
+ * @self: a `GtkText`
+ * @position: the character position
+ * @strong: (out) (optional): location to store the strong cursor position
+ * @weak: (out) (optional): location to store the weak cursor position
+ *
+ * Determine the positions of the strong and weak cursors if the
+ * insertion point in the layout is at @position.
+ *
+ * The position of each cursor is stored as a zero-width rectangle.
+ * The strong cursor location is the location where characters of
+ * the directionality equal to the base direction are inserted.
+ * The weak cursor location is the location where characters of
+ * the directionality opposite to the base direction are inserted.
+ *
+ * The rectangle positions are in widget coordinates.
+ *
+ * Since: 4.4
+ */
+void
+gtk_text_compute_cursor_extents (GtkText *self,
+ gsize position,
+ graphene_rect_t *strong,
+ graphene_rect_t *weak)
+{
+ PangoLayout *layout;
+ PangoRectangle pango_strong_pos;
+ PangoRectangle pango_weak_pos;
+ int offset_x, offset_y, index;
+ const char *text;
+
+ g_return_if_fail (GTK_IS_TEXT (self));
+
+ layout = gtk_text_ensure_layout (self, TRUE);
+ text = pango_layout_get_text (layout);
+ position = CLAMP (position, 0, g_utf8_strlen (text, -1));
+ index = g_utf8_offset_to_pointer (text, position) - text;
+
+ pango_layout_get_cursor_pos (layout, index,
+ strong ? &pango_strong_pos : NULL,
+ weak ? &pango_weak_pos : NULL);
+ gtk_text_get_layout_offsets (self, &offset_x, &offset_y);
+
+ if (strong)
+ {
+ graphene_rect_init (strong,
+ offset_x + pango_strong_pos.x / PANGO_SCALE,
+ offset_y + pango_strong_pos.y / PANGO_SCALE,
+ 0,
+ pango_strong_pos.height / PANGO_SCALE);
+ }
+
+ if (weak)
+ {
+ graphene_rect_init (weak,
+ offset_x + pango_weak_pos.x / PANGO_SCALE,
+ offset_y + pango_weak_pos.y / PANGO_SCALE,
+ 0,
+ pango_weak_pos.height / PANGO_SCALE);
+ }
+}
+
static void
gtk_text_real_undo (GtkWidget *widget,
const char *action_name,
diff --git a/gtk/gtktext.h b/gtk/gtktext.h
index 38ae25c421..4240aa92f5 100644
--- a/gtk/gtktext.h
+++ b/gtk/gtktext.h
@@ -159,6 +159,11 @@ void gtk_text_set_truncate_multiline (GtkText *self,
GDK_AVAILABLE_IN_ALL
gboolean gtk_text_get_truncate_multiline (GtkText *self);
+GDK_AVAILABLE_IN_4_4
+void gtk_text_compute_cursor_extents (GtkText *self,
+ gsize position,
+ graphene_rect_t *strong,
+ graphene_rect_t *weak);
G_END_DECLS
diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c
index 0acc023a09..91ab3351a8 100644
--- a/gtk/gtktextbtree.c
+++ b/gtk/gtktextbtree.c
@@ -2483,6 +2483,8 @@ _gtk_text_btree_char_is_invisible (const GtkTextIter *iter)
tagCnts = g_alloca (sizeof (int) * numTags);
tags = g_alloca (sizeof (GtkTextTag *) * numTags);
+ memset (tagCnts, 0, sizeof (int) * numTags);
+
/*
* Record tag toggles within the line of indexPtr but preceding
* indexPtr.
diff --git a/gtk/gtktexthistory.c b/gtk/gtktexthistory.c
index 1d97ff31a7..61ccc33f08 100644
--- a/gtk/gtktexthistory.c
+++ b/gtk/gtktexthistory.c
@@ -989,6 +989,7 @@ gtk_text_history_text_inserted (GtkTextHistory *self,
int len)
{
Action *action;
+ guint n_chars;
g_return_if_fail (GTK_IS_TEXT_HISTORY (self));
@@ -998,14 +999,12 @@ gtk_text_history_text_inserted (GtkTextHistory *self,
if (len < 0)
len = strlen (text);
+ n_chars = g_utf8_strlen (text, len);
action = action_new (ACTION_KIND_INSERT);
action->u.insert.begin = position;
- action->u.insert.end = position + g_utf8_strlen (text, len);
- istring_set (&action->u.insert.istr,
- text,
- len,
- action->u.insert.end);
+ action->u.insert.end = position + n_chars;
+ istring_set (&action->u.insert.istr, text, len, n_chars);
gtk_text_history_push (self, action);
}
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 5bf134302c..4796a34b1e 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -56,6 +56,7 @@
#include "gtkpango.h"
#include "gtknative.h"
#include "gtkwidgetprivate.h"
+#include "gtkjoinedmenuprivate.h"
/**
* GtkTextView:
@@ -8733,9 +8734,12 @@ static GMenuModel *
gtk_text_view_get_menu_model (GtkTextView *text_view)
{
GtkTextViewPrivate *priv = text_view->priv;
+ GtkJoinedMenu *joined;
GMenu *menu, *section;
GMenuItem *item;
+ joined = gtk_joined_menu_new ();
+
menu = g_menu_new ();
section = g_menu_new ();
@@ -8785,10 +8789,13 @@ gtk_text_view_get_menu_model (GtkTextView *text_view)
g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
g_object_unref (section);
+ gtk_joined_menu_append_menu (joined, G_MENU_MODEL (menu));
+ g_object_unref (menu);
+
if (priv->extra_menu)
- g_menu_append_section (menu, NULL, priv->extra_menu);
+ gtk_joined_menu_append_menu (joined, priv->extra_menu);
- return G_MENU_MODEL (menu);
+ return G_MENU_MODEL (joined);
}
static void
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 459aeba2fe..a032876e55 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -623,7 +623,6 @@ static GQuark quark_pango_context = 0;
static GQuark quark_mnemonic_labels = 0;
static GQuark quark_size_groups = 0;
static GQuark quark_auto_children = 0;
-static GQuark quark_action_muxer = 0;
static GQuark quark_font_options = 0;
static GQuark quark_font_map = 0;
static GQuark quark_builder_set_id = 0;
@@ -1147,7 +1146,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
quark_mnemonic_labels = g_quark_from_static_string ("gtk-mnemonic-labels");
quark_size_groups = g_quark_from_static_string ("gtk-widget-size-groups");
quark_auto_children = g_quark_from_static_string ("gtk-widget-auto-children");
- quark_action_muxer = g_quark_from_static_string ("gtk-widget-action-muxer");
quark_font_options = g_quark_from_static_string ("gtk-widget-font-options");
quark_font_map = g_quark_from_static_string ("gtk-widget-font-map");
@@ -5322,9 +5320,9 @@ gtk_widget_has_visible_focus (GtkWidget *widget)
* toplevel.
*
* This does not mean that the [property@Gtk.Widget:has-focus]
- * property is necessarily set; [property@Gtk,Widget:has-focus]
+ * property is necessarily set; [property@Gtk.Widget:has-focus]
* will only be set if the toplevel widget additionally has the
- * global input focus.)
+ * global input focus.
*
* Returns: %TRUE if the widget is the focus widget.
*/
@@ -6783,7 +6781,7 @@ _gtk_widget_scale_changed (GtkWidget *widget)
int
gtk_widget_get_scale_factor (GtkWidget *widget)
{
- GtkRoot *root;
+ GtkWidget *root;
GdkDisplay *display;
GdkMonitor *monitor;
@@ -6797,9 +6795,9 @@ gtk_widget_get_scale_factor (GtkWidget *widget)
return gdk_surface_get_scale_factor (surface);
}
- root = _gtk_widget_get_root (widget);
- if (root && GTK_WIDGET (root) != widget)
- return gtk_widget_get_scale_factor (GTK_WIDGET (root));
+ root = (GtkWidget *)_gtk_widget_get_root (widget);
+ if (root && root != widget)
+ return gtk_widget_get_scale_factor (root);
/* else fall back to something that is more likely to be right than
* just returning 1:
@@ -7367,12 +7365,10 @@ gtk_widget_dispose (GObject *object)
GtkWidget *widget = GTK_WIDGET (object);
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
GSList *sizegroups;
- GtkActionMuxer *muxer;
GtkATContext *at_context;
- muxer = g_object_get_qdata (G_OBJECT (widget), quark_action_muxer);
- if (muxer != NULL)
- g_object_run_dispose (G_OBJECT (muxer));
+ if (priv->muxer != NULL)
+ g_object_run_dispose (G_OBJECT (priv->muxer));
if (priv->children_observer)
gtk_list_list_model_clear (priv->children_observer);
@@ -7423,7 +7419,7 @@ gtk_widget_dispose (GObject *object)
if (at_context != NULL)
gtk_at_context_unrealize (at_context);
- g_object_set_qdata (object, quark_action_muxer, NULL);
+ g_clear_object (&priv->muxer);
G_OBJECT_CLASS (gtk_widget_parent_class)->dispose (object);
}
@@ -10530,11 +10526,6 @@ gtk_widget_set_alloc_needed (GtkWidget *widget)
if (GTK_IS_NATIVE (widget))
gtk_native_queue_relayout (GTK_NATIVE (widget));
- if (!priv->parent && GTK_IS_ROOT (widget))
- {
- break;
- }
-
widget = priv->parent;
if (widget == NULL)
break;
@@ -10781,7 +10772,7 @@ gtk_widget_get_parent_muxer (GtkWidget *widget,
GtkWidget *parent;
if (GTK_IS_WINDOW (widget))
- return gtk_application_get_parent_muxer_for_window (GTK_WINDOW (widget));
+ return gtk_application_get_parent_muxer_for_window ((GtkWindow *)widget);
parent = _gtk_widget_get_parent (widget);
@@ -10794,14 +10785,13 @@ gtk_widget_get_parent_muxer (GtkWidget *widget,
void
_gtk_widget_update_parent_muxer (GtkWidget *widget)
{
- GtkActionMuxer *muxer;
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
GtkWidget *child;
- muxer = (GtkActionMuxer*)g_object_get_qdata (G_OBJECT (widget), quark_action_muxer);
- if (muxer == NULL)
+ if (priv->muxer == NULL)
return;
- gtk_action_muxer_set_parent (muxer,
+ gtk_action_muxer_set_parent (priv->muxer,
gtk_widget_get_parent_muxer (widget, FALSE));
for (child = gtk_widget_get_first_child (widget);
child != NULL;
@@ -10813,24 +10803,18 @@ GtkActionMuxer *
_gtk_widget_get_action_muxer (GtkWidget *widget,
gboolean create)
{
- GtkActionMuxer *muxer;
GtkWidgetClass *widget_class = GTK_WIDGET_GET_CLASS (widget);
- GtkWidgetClassPrivate *priv = widget_class->priv;
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
- muxer = (GtkActionMuxer*)g_object_get_qdata (G_OBJECT (widget), quark_action_muxer);
- if (muxer)
- return muxer;
+ if (priv->muxer)
+ return priv->muxer;
- if (create || priv->actions)
+ if (create || widget_class->priv->actions)
{
- muxer = gtk_action_muxer_new (widget);
- g_object_set_qdata_full (G_OBJECT (widget),
- quark_action_muxer,
- muxer,
- g_object_unref);
+ priv->muxer = gtk_action_muxer_new (widget);
_gtk_widget_update_parent_muxer (widget);
- return muxer;
+ return priv->muxer;
}
else
return gtk_widget_get_parent_muxer (widget, FALSE);
diff --git a/gtk/gtkwidgetfocus.c b/gtk/gtkwidgetfocus.c
index b4f793dfeb..df1c562ac6 100644
--- a/gtk/gtkwidgetfocus.c
+++ b/gtk/gtkwidgetfocus.c
@@ -81,8 +81,8 @@ tab_sort_func (gconstpointer a,
GtkTextDirection text_direction = GPOINTER_TO_INT (user_data);
float y1, y2;
- if (!gtk_widget_compute_bounds (child1, gtk_widget_get_parent (child1), &child_bounds1) ||
- !gtk_widget_compute_bounds (child2, gtk_widget_get_parent (child2), &child_bounds2))
+ if (!gtk_widget_compute_bounds (child1, _gtk_widget_get_parent (child1), &child_bounds1) ||
+ !gtk_widget_compute_bounds (child2, _gtk_widget_get_parent (child2), &child_bounds2))
return 0;
y1 = child_bounds1.origin.y + (child_bounds1.size.height / 2.0f);
@@ -136,7 +136,7 @@ find_old_focus (GtkWidget *widget,
parent = _gtk_widget_get_parent (child_ptr);
- if (parent && (gtk_widget_get_focus_child (parent) != child_ptr))
+ if (parent && (_gtk_widget_get_focus_child (parent) != child_ptr))
{
child = NULL;
break;
@@ -210,7 +210,7 @@ focus_sort_left_right (GtkWidget *widget,
GPtrArray *focus_order)
{
CompareInfo compare_info;
- GtkWidget *old_focus = gtk_widget_get_focus_child (widget);
+ GtkWidget *old_focus = _gtk_widget_get_focus_child (widget);
graphene_rect_t old_bounds;
compare_info.widget = widget;
@@ -312,7 +312,7 @@ focus_sort_up_down (GtkWidget *widget,
GPtrArray *focus_order)
{
CompareInfo compare_info;
- GtkWidget *old_focus = gtk_widget_get_focus_child (widget);
+ GtkWidget *old_focus = _gtk_widget_get_focus_child (widget);
graphene_rect_t old_bounds;
compare_info.widget = widget;
@@ -455,7 +455,7 @@ gtk_widget_focus_move (GtkWidget *widget,
GtkDirectionType direction)
{
GPtrArray *focus_order;
- GtkWidget *focus_child = gtk_widget_get_focus_child (widget);
+ GtkWidget *focus_child = _gtk_widget_get_focus_child (widget);
int i;
gboolean ret = FALSE;
diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h
index bc6eb0bf7f..5110b0263c 100644
--- a/gtk/gtkwidgetprivate.h
+++ b/gtk/gtkwidgetprivate.h
@@ -115,13 +115,12 @@ struct _GtkWidgetPrivate
guint8 verifying_invariants_count;
#endif
- guint8 n_active;
-
int width_request;
int height_request;
/* Animations and other things to update on clock ticks */
guint clock_tick_id;
+ guint8 n_active;
GList *tick_callbacks;
void (* resize_func) (GtkWidget *);
@@ -185,6 +184,7 @@ struct _GtkWidgetPrivate
/* only created on-demand */
GtkListListModel *children_observer;
GtkListListModel *controller_observer;
+ GtkActionMuxer *muxer;
GtkWidget *focus_child;
@@ -196,8 +196,8 @@ struct _GtkWidgetPrivate
char *tooltip_text;
/* Accessibility */
- GtkAccessibleRole accessible_role;
GtkATContext *at_context;
+ GtkAccessibleRole accessible_role;
};
typedef struct
@@ -211,11 +211,11 @@ struct _GtkWidgetClassPrivate
{
GtkWidgetTemplate *template;
GListStore *shortcuts;
- GQuark css_name;
GType layout_manager_type;
GtkWidgetAction *actions;
GtkAccessibleRole accessible_role;
guint activate_signal;
+ GQuark css_name;
};
void gtk_widget_root (GtkWidget *widget);
@@ -378,6 +378,12 @@ _gtk_widget_get_parent (GtkWidget *widget)
return widget->priv->parent;
}
+static inline GtkWidget *
+_gtk_widget_get_focus_child (GtkWidget *widget)
+{
+ return widget->priv->focus_child;
+}
+
static inline gboolean
_gtk_widget_get_visible (GtkWidget *widget)
{
diff --git a/gtk/icons/16x16/actions/bookmark-new-symbolic.symbolic.png b/gtk/icons/16x16/actions/bookmark-new-symbolic.symbolic.png
index 301052a4eb..166a548d26 100644
--- a/gtk/icons/16x16/actions/bookmark-new-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/bookmark-new-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/color-select-symbolic.symbolic.png b/gtk/icons/16x16/actions/color-select-symbolic.symbolic.png
index 5031599c1b..03aa7eccda 100644
--- a/gtk/icons/16x16/actions/color-select-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/color-select-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/document-open-recent-symbolic.symbolic.png b/gtk/icons/16x16/actions/document-open-recent-symbolic.symbolic.png
index 9841d78c0b..7309c288c9 100644
--- a/gtk/icons/16x16/actions/document-open-recent-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/document-open-recent-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/document-open-symbolic.symbolic.png b/gtk/icons/16x16/actions/document-open-symbolic.symbolic.png
index ac741e8fc9..e23d9af064 100644
--- a/gtk/icons/16x16/actions/document-open-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/document-open-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/document-save-as-symbolic.symbolic.png b/gtk/icons/16x16/actions/document-save-as-symbolic.symbolic.png
index 6e6c0810c7..4fc491780e 100644
--- a/gtk/icons/16x16/actions/document-save-as-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/document-save-as-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/document-save-symbolic.symbolic.png b/gtk/icons/16x16/actions/document-save-symbolic.symbolic.png
index b31d238b55..2e015a5376 100644
--- a/gtk/icons/16x16/actions/document-save-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/document-save-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-clear-all-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-clear-all-symbolic.symbolic.png
index c6ae5296e6..b494ef02c5 100644
--- a/gtk/icons/16x16/actions/edit-clear-all-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-clear-all-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-clear-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-clear-symbolic.symbolic.png
index 14e3750a91..b5db5186f7 100644
--- a/gtk/icons/16x16/actions/edit-clear-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-clear-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-copy-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-copy-symbolic.symbolic.png
index 0574fa8702..c3f33a7e5c 100644
--- a/gtk/icons/16x16/actions/edit-copy-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-copy-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-cut-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-cut-symbolic.symbolic.png
index d682bfcbdd..18b255525a 100644
--- a/gtk/icons/16x16/actions/edit-cut-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-cut-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-delete-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-delete-symbolic.symbolic.png
index b8c6f5d4f2..8169f2524e 100644
--- a/gtk/icons/16x16/actions/edit-delete-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-delete-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-find-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-find-symbolic.symbolic.png
index 2b7184df50..e805eba1bb 100644
--- a/gtk/icons/16x16/actions/edit-find-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-find-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-paste-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-paste-symbolic.symbolic.png
index 0fe420ea84..439641e675 100644
--- a/gtk/icons/16x16/actions/edit-paste-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-paste-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/edit-select-all-symbolic.symbolic.png b/gtk/icons/16x16/actions/edit-select-all-symbolic.symbolic.png
index 09727a8163..f29034fd53 100644
--- a/gtk/icons/16x16/actions/edit-select-all-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/edit-select-all-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/find-location-symbolic.symbolic.png b/gtk/icons/16x16/actions/find-location-symbolic.symbolic.png
index f6cea08191..a2fad86fa9 100644
--- a/gtk/icons/16x16/actions/find-location-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/find-location-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/folder-new-symbolic.symbolic.png b/gtk/icons/16x16/actions/folder-new-symbolic.symbolic.png
index ac1b3a96c6..a5de3487d1 100644
--- a/gtk/icons/16x16/actions/folder-new-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/folder-new-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/go-next-symbolic.symbolic.png b/gtk/icons/16x16/actions/go-next-symbolic.symbolic.png
index f2aa968ce8..a827b41c89 100644
--- a/gtk/icons/16x16/actions/go-next-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/go-next-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/go-previous-symbolic.symbolic.png b/gtk/icons/16x16/actions/go-previous-symbolic.symbolic.png
index f688c3ce72..22d43ef9a5 100644
--- a/gtk/icons/16x16/actions/go-previous-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/go-previous-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/insert-image-symbolic.symbolic.png b/gtk/icons/16x16/actions/insert-image-symbolic.symbolic.png
index 0ffe45a2ca..217b696406 100644
--- a/gtk/icons/16x16/actions/insert-image-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/insert-image-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/insert-object-symbolic.symbolic.png b/gtk/icons/16x16/actions/insert-object-symbolic.symbolic.png
index 2c7a2eb3b1..984b9f92d4 100644
--- a/gtk/icons/16x16/actions/insert-object-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/insert-object-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/list-add-symbolic.symbolic.png b/gtk/icons/16x16/actions/list-add-symbolic.symbolic.png
index 158076d60b..c44642f246 100644
--- a/gtk/icons/16x16/actions/list-add-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/list-add-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/list-remove-all-symbolic.symbolic.png b/gtk/icons/16x16/actions/list-remove-all-symbolic.symbolic.png
index 7bf3845f01..9109b7cc93 100644
--- a/gtk/icons/16x16/actions/list-remove-all-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/list-remove-all-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/list-remove-symbolic.symbolic.png b/gtk/icons/16x16/actions/list-remove-symbolic.symbolic.png
index b91230e671..5dd2f10972 100644
--- a/gtk/icons/16x16/actions/list-remove-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/list-remove-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/media-eject-symbolic.symbolic.png b/gtk/icons/16x16/actions/media-eject-symbolic.symbolic.png
index 168a7e9a34..4dc8d4389c 100644
--- a/gtk/icons/16x16/actions/media-eject-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/media-eject-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/media-playback-pause-symbolic.symbolic.png b/gtk/icons/16x16/actions/media-playback-pause-symbolic.symbolic.png
index b9f6746465..14e6f9ac11 100644
--- a/gtk/icons/16x16/actions/media-playback-pause-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/media-playback-pause-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/media-playback-start-symbolic.symbolic.png b/gtk/icons/16x16/actions/media-playback-start-symbolic.symbolic.png
index 77d0ed6ddb..2da3ddea0b 100644
--- a/gtk/icons/16x16/actions/media-playback-start-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/media-playback-start-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/media-playback-stop-symbolic.symbolic.png b/gtk/icons/16x16/actions/media-playback-stop-symbolic.symbolic.png
index d65a2955f5..5d2e70a1f7 100644
--- a/gtk/icons/16x16/actions/media-playback-stop-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/media-playback-stop-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/media-record-symbolic.symbolic.png b/gtk/icons/16x16/actions/media-record-symbolic.symbolic.png
index 44e4522e19..470593c2f9 100644
--- a/gtk/icons/16x16/actions/media-record-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/media-record-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/object-select-symbolic.symbolic.png b/gtk/icons/16x16/actions/object-select-symbolic.symbolic.png
index ef1034aa1d..b74f56be8d 100644
--- a/gtk/icons/16x16/actions/object-select-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/object-select-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/open-menu-symbolic.symbolic.png b/gtk/icons/16x16/actions/open-menu-symbolic.symbolic.png
index eddf63e91a..789f1de8b2 100644
--- a/gtk/icons/16x16/actions/open-menu-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/open-menu-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/system-search-symbolic.symbolic.png b/gtk/icons/16x16/actions/system-search-symbolic.symbolic.png
index c1bc0acc1c..e805eba1bb 100644
--- a/gtk/icons/16x16/actions/system-search-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/system-search-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/value-increase-symbolic.symbolic.png b/gtk/icons/16x16/actions/value-increase-symbolic.symbolic.png
index 158076d60b..6f2d635511 100644
--- a/gtk/icons/16x16/actions/value-increase-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/value-increase-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/view-list-symbolic.symbolic.png b/gtk/icons/16x16/actions/view-list-symbolic.symbolic.png
index 28bad0c450..9ac75ff49b 100644
--- a/gtk/icons/16x16/actions/view-list-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/view-list-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/view-refresh-symbolic.symbolic.png b/gtk/icons/16x16/actions/view-refresh-symbolic.symbolic.png
index 2f0af9de0a..51b8fd6ba3 100644
--- a/gtk/icons/16x16/actions/view-refresh-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/view-refresh-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/actions/window-maximize-symbolic.symbolic.png b/gtk/icons/16x16/actions/window-maximize-symbolic.symbolic.png
index 610f3787fe..c66b18c56b 100644
--- a/gtk/icons/16x16/actions/window-maximize-symbolic.symbolic.png
+++ b/gtk/icons/16x16/actions/window-maximize-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/categories/emoji-activities-symbolic.symbolic.png b/gtk/icons/16x16/categories/emoji-activities-symbolic.symbolic.png
index eace08fa5b..7b91641a35 100644
--- a/gtk/icons/16x16/categories/emoji-activities-symbolic.symbolic.png
+++ b/gtk/icons/16x16/categories/emoji-activities-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/emblems/emblem-important-symbolic.symbolic.png b/gtk/icons/16x16/emblems/emblem-important-symbolic.symbolic.png
index 1578af8966..f20f055f56 100644
--- a/gtk/icons/16x16/emblems/emblem-important-symbolic.symbolic.png
+++ b/gtk/icons/16x16/emblems/emblem-important-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/emblems/emblem-system-symbolic.symbolic.png b/gtk/icons/16x16/emblems/emblem-system-symbolic.symbolic.png
index e4e537cd92..b9a72f8e65 100644
--- a/gtk/icons/16x16/emblems/emblem-system-symbolic.symbolic.png
+++ b/gtk/icons/16x16/emblems/emblem-system-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/emotes/face-smile-big-symbolic.symbolic.png b/gtk/icons/16x16/emotes/face-smile-big-symbolic.symbolic.png
index fe11d1a476..352ce9a5e1 100644
--- a/gtk/icons/16x16/emotes/face-smile-big-symbolic.symbolic.png
+++ b/gtk/icons/16x16/emotes/face-smile-big-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/emotes/face-smile-symbolic.symbolic.png b/gtk/icons/16x16/emotes/face-smile-symbolic.symbolic.png
index be6f1c6a33..4a12fd578a 100644
--- a/gtk/icons/16x16/emotes/face-smile-symbolic.symbolic.png
+++ b/gtk/icons/16x16/emotes/face-smile-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/folder-publicshare-symbolic.symbolic.png b/gtk/icons/16x16/places/folder-publicshare-symbolic.symbolic.png
index 3fe7740f65..993376c20f 100644
--- a/gtk/icons/16x16/places/folder-publicshare-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/folder-publicshare-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/folder-remote-symbolic.symbolic.png b/gtk/icons/16x16/places/folder-remote-symbolic.symbolic.png
index 927ee16018..e4097c5677 100644
--- a/gtk/icons/16x16/places/folder-remote-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/folder-remote-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/folder-symbolic.symbolic.png b/gtk/icons/16x16/places/folder-symbolic.symbolic.png
index 735fc64b43..b2be6d9384 100644
--- a/gtk/icons/16x16/places/folder-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/folder-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/folder-templates-symbolic.symbolic.png b/gtk/icons/16x16/places/folder-templates-symbolic.symbolic.png
index fa4e917587..8474b56a7b 100644
--- a/gtk/icons/16x16/places/folder-templates-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/folder-templates-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/network-server-symbolic.symbolic.png b/gtk/icons/16x16/places/network-server-symbolic.symbolic.png
index a8d69deb60..1ff54c95ec 100644
--- a/gtk/icons/16x16/places/network-server-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/network-server-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/network-server.png b/gtk/icons/16x16/places/network-server.png
index b576ea50f6..aa4fa40439 100644
--- a/gtk/icons/16x16/places/network-server.png
+++ b/gtk/icons/16x16/places/network-server.png
Binary files differ
diff --git a/gtk/icons/16x16/places/network-workgroup-symbolic.symbolic.png b/gtk/icons/16x16/places/network-workgroup-symbolic.symbolic.png
index 0bb88291c6..c97b29ed5e 100644
--- a/gtk/icons/16x16/places/network-workgroup-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/network-workgroup-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/user-desktop-symbolic.symbolic.png b/gtk/icons/16x16/places/user-desktop-symbolic.symbolic.png
index 735fc64b43..680cafa935 100644
--- a/gtk/icons/16x16/places/user-desktop-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/user-desktop-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/places/user-trash-symbolic.symbolic.png b/gtk/icons/16x16/places/user-trash-symbolic.symbolic.png
index 8699f64c69..8f12ce9ce1 100644
--- a/gtk/icons/16x16/places/user-trash-symbolic.symbolic.png
+++ b/gtk/icons/16x16/places/user-trash-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/changes-allow-symbolic.symbolic.png b/gtk/icons/16x16/status/changes-allow-symbolic.symbolic.png
index 510229431f..b64050770d 100644
--- a/gtk/icons/16x16/status/changes-allow-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/changes-allow-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/dialog-error-symbolic.symbolic.png b/gtk/icons/16x16/status/dialog-error-symbolic.symbolic.png
index f7f216e54d..1c585b78ae 100644
--- a/gtk/icons/16x16/status/dialog-error-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/dialog-error-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/dialog-password-symbolic.symbolic.png b/gtk/icons/16x16/status/dialog-password-symbolic.symbolic.png
index b4e8c82bf9..af421b5a29 100644
--- a/gtk/icons/16x16/status/dialog-password-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/dialog-password-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.png b/gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.png
index a938cc8c4c..df44c9816d 100644
--- a/gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/dialog-warning-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/media-playlist-repeat-symbolic.symbolic.png b/gtk/icons/16x16/status/media-playlist-repeat-symbolic.symbolic.png
index 640ccd5ab1..7f65e0c0e4 100644
--- a/gtk/icons/16x16/status/media-playlist-repeat-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/media-playlist-repeat-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/orientation-landscape-inverse-symbolic.symbolic.png b/gtk/icons/16x16/status/orientation-landscape-inverse-symbolic.symbolic.png
index 6fdc315f58..d103415b88 100644
--- a/gtk/icons/16x16/status/orientation-landscape-inverse-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/orientation-landscape-inverse-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/orientation-landscape-symbolic.symbolic.png b/gtk/icons/16x16/status/orientation-landscape-symbolic.symbolic.png
index b66c6dce0c..0388b2159b 100644
--- a/gtk/icons/16x16/status/orientation-landscape-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/orientation-landscape-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/orientation-portrait-inverse-symbolic.symbolic.png b/gtk/icons/16x16/status/orientation-portrait-inverse-symbolic.symbolic.png
index bae3263203..391205ba28 100644
--- a/gtk/icons/16x16/status/orientation-portrait-inverse-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/orientation-portrait-inverse-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/16x16/status/orientation-portrait-symbolic.symbolic.png b/gtk/icons/16x16/status/orientation-portrait-symbolic.symbolic.png
index 55007e8ee0..86b46127b1 100644
--- a/gtk/icons/16x16/status/orientation-portrait-symbolic.symbolic.png
+++ b/gtk/icons/16x16/status/orientation-portrait-symbolic.symbolic.png
Binary files differ
diff --git a/gtk/icons/scalable/actions/bookmark-new-symbolic.svg b/gtk/icons/scalable/actions/bookmark-new-symbolic.svg
index c53f4e0b95..16f590d986 100644
--- a/gtk/icons/scalable/actions/bookmark-new-symbolic.svg
+++ b/gtk/icons/scalable/actions/bookmark-new-symbolic.svg
@@ -1,6 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
- <path d="M5.525 0C4.433 0 3.61.68 3.295 1.295c-.314.615-.3 1.205-.3 1.205v13.117l5-2.5 5 2.5V11h-2v1.383l-3-1.5-3 1.5V2.5s.013-.16.081-.295c.069-.134.01-.205.45-.205h4.968c.417 0 .35.06.418.197s.082.303.082.303V3h2v-.5s.014-.584-.293-1.197C12.394.689 11.577 0 10.494 0z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill-rule="evenodd"/>
- <path d="M11 4v2H9v2h2v2h2V8h2V6h-2V4z"/>
+ <path d="m 5.527344 0 c -1.09375 0 -1.917969 0.679688 -2.230469 1.292969 c -0.316406 0.617187 -0.300781 1.207031 -0.300781 1.207031 v 13.117188 l 5 -2.5 l 5 2.5 v -4.617188 h -2 v 1.382812 l -3 -1.5 l -3 1.5 v -9.882812 s 0.011718 -0.160156 0.078125 -0.292969 c 0.070312 -0.136719 0.011719 -0.207031 0.449219 -0.207031 h 4.972656 c 0.414062 0 0.347656 0.0625 0.417968 0.199219 c 0.066407 0.132812 0.082032 0.300781 0.082032 0.300781 v 0.5 h 2 v -0.5 s 0.011718 -0.582031 -0.292969 -1.199219 c -0.308594 -0.613281 -1.125 -1.300781 -2.207031 -1.300781 z m 0 0" fill-rule="evenodd"/>
+ <path d="m 11 4 v 2 h -2 v 2 h 2 v 2 h 2 v -2 h 2 v -2 h -2 v -2 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/color-select-symbolic.svg b/gtk/icons/scalable/actions/color-select-symbolic.svg
index dc934ac77a..d235d73cc5 100644
--- a/gtk/icons/scalable/actions/color-select-symbolic.svg
+++ b/gtk/icons/scalable/actions/color-select-symbolic.svg
@@ -1 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.006" height="16"><path d="M12.96.98a2 2 0 00-1.374.606L10 3.172 8.914 2.086a.5.5 0 00-.707 0L6.086 4.207a.5.5 0 000 .707l.646.647-5.586 5.585A.5.5 0 001 11.5v1.793l-.854.853a.5.5 0 000 .708l1 1a.5.5 0 00.707 0L2.707 15H4.5a.5.5 0 00.353-.146l5.586-5.586.647.646a.5.5 0 00.707 0l2.121-2.121a.5.5 0 000-.707L12.828 6l1.586-1.586c1.308-1.272.37-3.487-1.453-3.434zM7.94 6.768L9.231 8.06 6.292 11H3.708z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" fill-rule="evenodd"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 12.957031 0.980469 c -0.519531 0.015625 -1.015625 0.234375 -1.375 0.605469 l -1.585937 1.585937 l -1.085938 -1.085937 c -0.097656 -0.09375 -0.226562 -0.148438 -0.363281 -0.148438 c -0.128906 0.003906 -0.253906 0.054688 -0.34375 0.148438 l -2.121094 2.121093 c -0.195312 0.195313 -0.195312 0.511719 0 0.707031 l 0.644531 0.648438 l -5.585937 5.582031 c -0.09375 0.097657 -0.144531 0.222657 -0.144531 0.355469 v 1.792969 l -0.855469 0.851562 c -0.1953125 0.195313 -0.1953125 0.515625 0 0.710938 l 1 1 c 0.195313 0.191406 0.511719 0.191406 0.707031 0 l 0.855469 -0.855469 h 1.792969 c 0.132812 0 0.257812 -0.050781 0.351562 -0.144531 l 5.585938 -5.585938 l 0.648437 0.644531 c 0.195313 0.195313 0.511719 0.195313 0.707031 0 l 2.121094 -2.121093 c 0.195313 -0.195313 0.195313 -0.511719 0 -0.707031 l -1.085937 -1.085938 l 1.585937 -1.585938 c 1.304688 -1.273437 0.367188 -3.488281 -1.453125 -3.433593 z m -5.023437 5.789062 l 1.292968 1.292969 l -2.9375 2.9375 h -2.585937 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
+</svg>
diff --git a/gtk/icons/scalable/actions/document-open-recent-symbolic.svg b/gtk/icons/scalable/actions/document-open-recent-symbolic.svg
index 63bb0a7432..6a765349b6 100644
--- a/gtk/icons/scalable/actions/document-open-recent-symbolic.svg
+++ b/gtk/icons/scalable/actions/document-open-recent-symbolic.svg
@@ -1,6 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" font-weight="400" font-family="Sans" fill="#474747">
- <path d="M8.487.02A7.492 7.492 0 0 0 1 7.507a7.492 7.492 0 0 0 7.487 7.486 7.492 7.492 0 0 0 7.486-7.486A7.492 7.492 0 0 0 8.487.02zm0 1.973A5.508 5.508 0 0 1 14 7.507a5.508 5.508 0 0 1-5.513 5.513 5.508 5.508 0 0 1-5.514-5.513 5.508 5.508 0 0 1 5.514-5.514z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/>
- <path d="M11.393 4.007a.5.5 0 0 0-.25.156L8.487 6.819 6.83 5.163a.5.5 0 1 0-.687.687l2 2a.5.5 0 0 0 .687 0l3-3a.5.5 0 0 0-.437-.843z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" font-weight="400" font-family="Sans" fill="#474747"><path d="M8.487.02A7.492 7.492 0 001 7.507a7.492 7.492 0 007.487 7.486 7.492 7.492 0 007.486-7.486A7.492 7.492 0 008.487.02zm0 1.973A5.508 5.508 0 0114 7.507a5.508 5.508 0 01-5.513 5.513 5.508 5.508 0 01-5.514-5.513 5.508 5.508 0 015.514-5.514z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/><path d="M11.393 4.007a.5.5 0 00-.25.156L8.487 6.819 6.83 5.163a.5.5 0 10-.687.687l2 2a.5.5 0 00.687 0l3-3a.5.5 0 00-.437-.843z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/actions/document-open-symbolic.svg b/gtk/icons/scalable/actions/document-open-symbolic.svg
index 7e33a9fe4f..9860107593 100644
--- a/gtk/icons/scalable/actions/document-open-symbolic.svg
+++ b/gtk/icons/scalable/actions/document-open-symbolic.svg
@@ -1,9 +1,11 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M.985 2.986A1 1 0 0 0 0 4v9s-.014.459.23.947C.476 14.436 1.168 15 2 15h1.832a1 1 0 0 0 .326 0H14s.459.014.947-.23C15.436 14.525 16 13.833 16 13v-3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v3H2V4A1 1 0 0 0 .985 2.986zM5 11h9v2H5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill-rule="evenodd"/>
- <path d="M4 11h11v3H4zM15 10h1v1h-1zM3 9h1v1H3zM1 3h2v5H1z"/>
- <path d="M5 0a1 1 0 0 0-1 1v7h2V2h4.086L13 4.914V8h2V4.5a1 1 0 0 0-.293-.707l-3.5-3.5A1 1 0 0 0 10.5 0z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill-rule="evenodd"/>
- <path d="M10 1v4h4z" fill-rule="evenodd"/>
- <path d="M15 9h1v1h-1z"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 1 3 c -0.550781 0 -1 0.449219 -1 1 v 9 s -0.015625 0.457031 0.230469 0.949219 c 0.246093 0.488281 0.9375 1.050781 1.769531 1.050781 h 12 s 0.457031 0.015625 0.949219 -0.230469 c 0.488281 -0.246093 1.050781 -0.9375 1.050781 -1.769531 v -3 c 0 -0.550781 -0.449219 -1 -1 -1 h -11 c -0.550781 0 -1 0.449219 -1 1 v 3 h -1 v -5 h 1 v -5 z m 0 0" fill-rule="evenodd"/>
+ <path d="m 15 10 h 1 v 1 h -1 z m 0 0"/>
+ <path d="m 3 9 h 1 v 1 h -1 z m 0 0"/>
+ <path d="m 5 0 c -0.550781 0 -1 0.449219 -1 1 v 7 h 2 v -6 h 5.085938 l 2.914062 2.914062 v 3.085938 h 2 v -3.5 c 0 -0.265625 -0.105469 -0.519531 -0.292969 -0.707031 l -3.5 -3.5 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 z m 0 0" fill-rule="evenodd"/>
+ <path d="m 11 1 v 4 h 4 z m 0 0" fill-rule="evenodd"/>
+ <path d="m 15 9 h 1 v 1 h -1 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/document-save-as-symbolic.svg b/gtk/icons/scalable/actions/document-save-as-symbolic.svg
index 2cb28066ad..5b01a13adc 100644
--- a/gtk/icons/scalable/actions/document-save-as-symbolic.svg
+++ b/gtk/icons/scalable/actions/document-save-as-symbolic.svg
@@ -1 +1,10 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#2e3436"><path d="M4 7.028v1c0 .265.093.53.281.718l3 3 .282.282h.875l.28-.282 3-3A1.01 1.01 0 0012 8.028v-1h-1c-.265 0-.53.093-.719.281L8 9.59 5.719 7.31A1.015 1.015 0 005 7.028z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/><path d="M7 3.027v7h2v-7z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M2 13v2h12v-2z" style="marker:none" color="#000" overflow="visible" fill-rule="evenodd"/><path d="M5.994 1a1 1 0 01-1 1 1 1 0 01-1-1 1 1 0 011-1 1 1 0 011 1zm3 0a1 1 0 01-1 1 1 1 0 01-1-1 1 1 0 011-1 1 1 0 011 1zm3 0a1 1 0 01-1 1 1 1 0 01-1-1 1 1 0 011-1 1 1 0 011 1z"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 7.007812 3 v 6.5625 l -2.28125 -2.28125 c -0.191406 -0.1875 -0.457031 -0.28125 -0.71875 -0.28125 h -1 v 1 c 0 0.265625 0.089844 0.53125 0.28125 0.71875 l 4.28125 4.28125 h 0.875 l 4.28125 -4.28125 c 0.1875 -0.1875 0.277344 -0.453125 0.28125 -0.71875 v -1 h -1 c -0.265624 0 -0.53125 0.09375 -0.71875 0.28125 l -2.28125 2.28125 v -6.5625 z m 0 0"/>
+ <path d="m 2 14 l 0.007812 2 h 12 l -0.007812 -2 z m 0 0" fill-rule="evenodd"/>
+ <path d="m 6 1 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 s 1 0.449219 1 1 z m 0 0"/>
+ <path d="m 9 1 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 s 1 0.449219 1 1 z m 0 0"/>
+ <path d="m 12 1 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 s 1 0.449219 1 1 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/document-save-symbolic.svg b/gtk/icons/scalable/actions/document-save-symbolic.svg
index 1f7bbd0da2..eafcfcb63e 100644
--- a/gtk/icons/scalable/actions/document-save-symbolic.svg
+++ b/gtk/icons/scalable/actions/document-save-symbolic.svg
@@ -1 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M7 1v7.563L5.719 7.28A1.015 1.015 0 005 7H4v1c0 .265.093.53.281.719l3 3 .282.281h.875l.28-.281 3-3A1.01 1.01 0 0012 8V7h-1c-.265 0-.53.093-.719.281L9 8.563V1z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/><path d="M1.994 13L2 15h12l-.006-2z" style="marker:none" overflow="visible" fill-rule="evenodd"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 7.007812 0 v 9.5625 l -2.28125 -2.28125 c -0.191406 -0.1875 -0.457031 -0.28125 -0.71875 -0.28125 h -1 v 1 c 0 0.265625 0.089844 0.53125 0.28125 0.71875 l 4.28125 4.28125 h 0.875 l 4.28125 -4.28125 c 0.1875 -0.1875 0.277344 -0.453125 0.28125 -0.71875 v -1 h -1 c -0.265624 0 -0.53125 0.09375 -0.71875 0.28125 l -2.28125 2.28125 v -9.5625 z m 0 0"/>
+ <path d="m 2 14 l 0.007812 2 h 12 l -0.007812 -2 z m 0 0" fill-rule="evenodd"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/edit-clear-all-symbolic.svg b/gtk/icons/scalable/actions/edit-clear-all-symbolic.svg
index c561c5ae0f..91ece36571 100644
--- a/gtk/icons/scalable/actions/edit-clear-all-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-clear-all-symbolic.svg
@@ -1 +1,8 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#2e3436"><path d="M3 14h13v1H3z" style="marker:none"/><path d="M9.984 1a1 1 0 00-.691.294l-8.5 8.5a1 1 0 000 1.414L2.586 13h6.828l5.793-5.793a1 1 0 000-1.414l-4.5-4.5a1 1 0 00-.723-.292zM6.401 6.9l3.137 3.095s.5.5 0 1L8.56 12H3.398l-1.584-1.5 3.587-3.601c.5-.5 1 0 1 0z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill-rule="evenodd"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 2 0 c -1.109375 0 -2 0.890625 -2 2 v 6 c 0 1.109375 0.890625 2 2 2 v -5 c 0 -1.660156 1.339844 -3 3 -3 h 5 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0 0"/>
+ <path d="m 5 3 c -1.109375 0 -2 0.890625 -2 2 v 6 c 0 1.109375 0.890625 2 2 2 v -5 c 0 -1.660156 1.339844 -3 3 -3 h 5 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0 0"/>
+ <path d="m 8 6 c -1.109375 0 -2 0.890625 -2 2 v 6 c 0 1.109375 0.890625 2 2 2 h 6 c 1.109375 0 2 -0.890625 2 -2 v -6 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0.003906 2 h 0.996094 h 0.03125 c 0.257812 0.011719 0.511719 0.128906 0.6875 0.3125 l 1.28125 1.28125 l 1.3125 -1.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -1.28125 1.28125 l 1.25 1.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -1.28125 -1.28125 l -1.28125 1.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -0.996094 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 1.277344 -1.25 l -1.277344 -1.28125 c -0.210937 -0.195312 -0.304687 -0.46875 -0.28125 -0.75 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/edit-clear-symbolic.svg b/gtk/icons/scalable/actions/edit-clear-symbolic.svg
index 57345fabd0..a252196442 100644
--- a/gtk/icons/scalable/actions/edit-clear-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-clear-symbolic.svg
@@ -1 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.006" height="16"><path d="M6 2a1 1 0 00-.707.293l-5 5a1 1 0 000 1.414l5 5A1 1 0 006 14h8.5s.334.014.697-.168c.364-.182.803-.749.803-1.332v-9c0-.583-.44-1.15-.803-1.332C14.834 1.986 14.5 2 14.5 2zm1.006 3h1.03c.256.011.51.129.688.313l1.282 1.28 1.312-1.28c.266-.231.447-.306.688-.313h1v1c0 .286-.035.55-.25.75l-1.282 1.281 1.25 1.25c.189.188.282.454.282.719v1h-1c-.266 0-.531-.093-.72-.281l-1.28-1.281-1.282 1.28a1.014 1.014 0 01-.718.282h-1v-1c0-.265.093-.53.28-.719l1.282-1.25L7.287 6.75A.909.909 0 017.006 6z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" fill-rule="evenodd"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 5.996094 2 c -0.265625 0 -0.519532 0.105469 -0.707032 0.292969 l -5 5 c -0.390624 0.390625 -0.390624 1.023437 0 1.414062 l 5 5 c 0.1875 0.1875 0.441407 0.292969 0.707032 0.292969 h 8.5 s 0.332031 0.015625 0.695312 -0.167969 c 0.363282 -0.183593 0.804688 -0.75 0.804688 -1.332031 v -9 c 0 -0.582031 -0.441406 -1.148438 -0.804688 -1.332031 c -0.363281 -0.183594 -0.695312 -0.167969 -0.695312 -0.167969 z m 1.003906 3 h 1 h 0.03125 c 0.253906 0.011719 0.511719 0.128906 0.6875 0.3125 l 1.28125 1.28125 l 1.3125 -1.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -1.28125 1.28125 l 1.25 1.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -1.28125 -1.28125 l -1.28125 1.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -1 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 1.28125 -1.25 l -1.28125 -1.28125 c -0.210938 -0.195312 -0.304688 -0.46875 -0.28125 -0.75 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
+</svg>
diff --git a/gtk/icons/scalable/actions/edit-copy-symbolic.svg b/gtk/icons/scalable/actions/edit-copy-symbolic.svg
index 9ecd15ac5d..de2f7729d6 100644
--- a/gtk/icons/scalable/actions/edit-copy-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-copy-symbolic.svg
@@ -1,6 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M7 7v6.969h5l1.99-1.987L13.97 7H7z"/>
- <path d="M2 2v7.969L6 10V6h3l-.031-4H2z"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 6 16 h 6 l 3 -3 v -7 c 0 -0.550781 -0.449219 -1 -1 -1 h -8 c -0.550781 0 -1 0.449219 -1 1 v 9 c 0 0.550781 0.449219 1 1 1 z m 0 0"/>
+ <path d="m 2 12 h 2 v -6 c 0 -1.105469 0.894531 -2 2 -2 h 5 v -2 c 0 -0.550781 -0.449219 -1 -1 -1 h -8 c -0.550781 0 -0.996094 0.445312 -0.996094 0.996094 l -0.003906 9.003906 c 0 0.550781 0.449219 1 1 1 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/edit-cut-symbolic.svg b/gtk/icons/scalable/actions/edit-cut-symbolic.svg
index 3938d1e2d2..284c473e93 100644
--- a/gtk/icons/scalable/actions/edit-cut-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-cut-symbolic.svg
@@ -1,3 +1,9 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M4.5 2.007a2.5 2.5 0 0 0 0 5c.446 0 .856-.14 1.218-.344l1.97 1.844-1.97 1.843a2.473 2.473 0 0 0-1.218-.343 2.5 2.5 0 1 0 2.5 2.5c0-.23-.036-.446-.094-.657L9.03 9.788l4.469 4.219H15v-1L6.906 5.163A2.46 2.46 0 0 0 7 4.507a2.5 2.5 0 0 0-2.5-2.5zm0 1.5a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm9-.5L9.562 6.725l1.313 1.282 4.125-4v-1zm-9 8.5a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 14 1 l -5.203125 4.972656 l 1.5625 1.527344 l 5.640625 -5.5 v -1 z m -6.804688 6.5 l -2.976562 2.84375 l 1.6875 1.5 l 2.890625 -2.816406 z m 0 0"/>
+ <path d="m 4.21875 5.65625 l 9.78125 9.34375 h 2 v -1 l -10.09375 -9.84375 z m 0 0"/>
+ <path d="m 5.972656 1.019531 c -1.359375 -1.359375 -3.59375 -1.359375 -4.953125 0 c -1.359375 1.359375 -1.359375 3.59375 0 4.953125 s 3.59375 1.363282 4.953125 0 c 1.359375 -1.359375 1.359375 -3.59375 0 -4.953125 z m -1.414062 1.414063 c 0.597656 0.59375 0.597656 1.53125 0 2.125 c -0.59375 0.597656 -1.527344 0.597656 -2.125 0 c -0.59375 -0.59375 -0.59375 -1.527344 0 -2.125 c 0.597656 -0.59375 1.53125 -0.59375 2.125 0 z m 0 0"/>
+ <path d="m 5.972656 10.019531 c -1.359375 -1.359375 -3.59375 -1.359375 -4.953125 0 c -1.359375 1.359375 -1.359375 3.597657 0 4.957031 c 1.359375 1.359376 3.59375 1.355469 4.953125 -0.003906 s 1.359375 -3.59375 0 -4.953125 z m -1.414062 1.414063 c 0.597656 0.597656 0.597656 1.53125 0 2.125 c -0.59375 0.597656 -1.527344 0.597656 -2.125 0.003906 c -0.59375 -0.597656 -0.59375 -1.53125 0 -2.128906 c 0.597656 -0.59375 1.53125 -0.59375 2.125 0 z m 0 0"/>
+ </g>
</svg>
diff --git a/gtk/icons/scalable/actions/edit-delete-symbolic.svg b/gtk/icons/scalable/actions/edit-delete-symbolic.svg
index 742714c5fc..47075b8375 100644
--- a/gtk/icons/scalable/actions/edit-delete-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-delete-symbolic.svg
@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M8 1.031A6.963 6.963 0 0 0 1.031 8 6.963 6.963 0 0 0 8 14.969 6.963 6.963 0 0 0 14.969 8 6.963 6.963 0 0 0 8 1.031zM5 5h1.031c.255.011.51.129.688.313L8 6.593l1.312-1.28c.266-.231.447-.306.688-.313h1v1c0 .286-.034.55-.25.75L9.469 8.031l1.25 1.25c.188.188.281.454.281.719v1h-1c-.265 0-.53-.093-.719-.281L8 9.438l-1.281 1.28A1.015 1.015 0 0 1 6 11H5v-1c0-.265.093-.53.281-.719l1.281-1.25-1.28-1.281A.909.909 0 0 1 5 6z" style="line-height:normal;-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Andale Mono" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 7.96875 1 c -3.851562 0 -6.96875 3.117188 -6.96875 6.96875 s 3.117188 6.96875 6.96875 6.96875 s 6.96875 -3.117188 6.96875 -6.96875 s -3.117188 -6.96875 -6.96875 -6.96875 z m -3 3.96875 h 1 h 0.03125 c 0.253906 0.011719 0.511719 0.128906 0.6875 0.3125 l 1.28125 1.28125 l 1.3125 -1.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -1.28125 1.28125 l 1.25 1.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -1.28125 -1.28125 l -1.28125 1.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -1 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 1.28125 -1.25 l -1.28125 -1.28125 c -0.210938 -0.195312 -0.304688 -0.46875 -0.28125 -0.75 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/actions/edit-find-symbolic.svg b/gtk/icons/scalable/actions/edit-find-symbolic.svg
index 8686f07139..2a3770eef0 100644
--- a/gtk/icons/scalable/actions/edit-find-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-find-symbolic.svg
@@ -1,6 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" font-weight="400" font-family="sans-serif" white-space="normal" fill="#474747">
- <path d="M6.508 1C3.48 1 1.002 3.474 1.002 6.5S3.48 12 6.508 12s5.505-2.474 5.505-5.5S9.536 1 6.508 1zm0 2a3.488 3.488 0 0 1 3.505 3.5c0 1.944-1.557 3.5-3.505 3.5a3.488 3.488 0 0 1-3.506-3.5c0-1.944 1.557-3.5 3.506-3.5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/>
- <path d="M10 8.99a1 1 0 0 0-.696 1.717l4.004 4a1 1 0 1 0 1.414-1.414l-4.003-4a1 1 0 0 0-.72-.303z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 10.804688 10 c -0.8125 0.144531 -1.105469 1.15625 -0.5 1.71875 l 3 3 c 0.957031 0.9375 2.363281 -0.5 1.40625 -1.4375 l -3 -3 c -0.238282 -0.242188 -0.578126 -0.347656 -0.90625 -0.28125 z m 0 0"/>
+ <path d="m 6.5 0 c -3.578125 0 -6.5 2.921875 -6.5 6.5 s 2.921875 6.496094 6.5 6.496094 s 6.5 -2.917969 6.5 -6.496094 s -2.921875 -6.5 -6.5 -6.5 z m 0 2 c 2.496094 0 4.5 2.003906 4.5 4.5 s -2.003906 4.496094 -4.5 4.496094 s -4.5 -2 -4.5 -4.496094 s 2.003906 -4.5 4.5 -4.5 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/edit-paste-symbolic.svg b/gtk/icons/scalable/actions/edit-paste-symbolic.svg
index c24d14eb49..eb5b889616 100644
--- a/gtk/icons/scalable/actions/edit-paste-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-paste-symbolic.svg
@@ -1,6 +1,8 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16.002">
- <g fill="#474747">
- <path d="M4.031 5.031V12h5l1.991-1.987L11 5.031H4.031zM5.53 0h4.002a.53.53 0 0 1 .53.53v2.94a.53.53 0 0 1-.53.53H5.53A.53.53 0 0 1 5 3.47V.53A.53.53 0 0 1 5.53 0z"/>
- <path d="M2.5 1c-.293 0-.658.038-1.012.314-.353.277-.52.767-.52 1.124v12.03c0 .385.132.804.442 1.114.31.31.78.453 1.19.412L2.5 16h9.969c.363 0 .746-.122 1.049-.4.302-.279.482-.717.482-1.131V2.375c0-.333-.133-.74-.42-1.01A1.4 1.4 0 0 0 12.625 1h-1.656v2H12v11H2.969V3h.968V1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 5.5 1 h 5 c 0.277344 0 0.5 0.222656 0.5 0.5 v 3 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -5 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -3 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/>
+ <path d="m 7.5 0 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 3 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -3 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/>
+ <path d="m 4 1 c -1.644531 0 -3 1.355469 -3 3 v 9 c 0 1.644531 1.355469 3 3 3 h 8 c 1.644531 0 3 -1.355469 3 -3 v -9 c 0 -1.644531 -1.355469 -3 -3 -3 v 2 c 0.570312 0 1 0.429688 1 1 v 9 c 0 0.570312 -0.429688 1 -1 1 h -8 c -0.570312 0 -1 -0.429688 -1 -1 v -9 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/edit-select-all-symbolic.svg b/gtk/icons/scalable/actions/edit-select-all-symbolic.svg
index 363232aa60..6c8b7b6301 100644
--- a/gtk/icons/scalable/actions/edit-select-all-symbolic.svg
+++ b/gtk/icons/scalable/actions/edit-select-all-symbolic.svg
@@ -1,5 +1,21 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15.974">
- <g color="#000" fill="#474747">
- <path d="M1 1h1v1H1zM3 1h1v1H3zM5 1h1v1H5zM7 1h1v1H7zM9 1h1v1H9zM11 1h1v1h-1zM13 1h1v1h-1zM13 3h1v1h-1zM13 5h1v1h-1zM13 7h1v1h-1zM13 9h1v1h-1zM13 11h1v1h-1zM13 13h1v1h-1zM11 13h1v1h-1zM9 13h1v1H9zM7 13h1v1H7zM5 13h1v1H5zM3 13h1v1H3zM1 13h1v1H1zM1 11h1v1H1zM1 9h1v1H1zM1 7h1v1H1zM1 5h1v1H1zM1 3h1v1H1zM3 8.104h4v4H3zM8 8.104h4v4H8zM3 3h9v4H3z" style="isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 1.5 0 c 0.828125 0 1.5 0.671875 1.5 1.5 s -0.671875 1.5 -1.5 1.5 s -1.5 -0.671875 -1.5 -1.5 s 0.671875 -1.5 1.5 -1.5 z m 0 0"/>
+ <path d="m 14.5 0 c 0.828125 0 1.5 0.671875 1.5 1.5 s -0.671875 1.5 -1.5 1.5 s -1.5 -0.671875 -1.5 -1.5 s 0.671875 -1.5 1.5 -1.5 z m 0 0"/>
+ <path d="m 1.5 13 c 0.828125 0 1.5 0.671875 1.5 1.5 s -0.671875 1.5 -1.5 1.5 s -1.5 -0.671875 -1.5 -1.5 s 0.671875 -1.5 1.5 -1.5 z m 0 0"/>
+ <path d="m 14.5 13 c 0.828125 0 1.5 0.671875 1.5 1.5 s -0.671875 1.5 -1.5 1.5 s -1.5 -0.671875 -1.5 -1.5 s 0.671875 -1.5 1.5 -1.5 z m 0 0"/>
+ <path d="m 0 4 h 2 v 4 h -2 z m 0 0"/>
+ <path d="m 0 9 h 2 v 3 h -2 z m 0 0"/>
+ <path d="m 14 4 h 2 v 3 h -2 z m 0 0"/>
+ <path d="m 14 8 h 2 v 4 h -2 z m 0 0"/>
+ <path d="m 4 9 h 2 c 0.550781 0 1 0.449219 1 1 v 2 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -2 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
+ <path d="m 4 3 h 2 c 0.550781 0 1 0.449219 1 1 v 2 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -2 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
+ <path d="m 10 9 h 2 c 0.550781 0 1 0.449219 1 1 v 2 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -2 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
+ <path d="m 10 3 h 2 c 0.550781 0 1 0.449219 1 1 v 2 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -2 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
+ <path d="m 12 0 v 2 h -4 v -2 z m 0 0"/>
+ <path d="m 7 0 v 2 h -3 v -2 z m 0 0"/>
+ <path d="m 12 14 v 2 h -3 v -2 z m 0 0"/>
+ <path d="m 8 14 v 2 h -4 v -2 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/find-location-symbolic.svg b/gtk/icons/scalable/actions/find-location-symbolic.svg
index ee8c3e99c7..815afe7fd5 100644
--- a/gtk/icons/scalable/actions/find-location-symbolic.svg
+++ b/gtk/icons/scalable/actions/find-location-symbolic.svg
@@ -1,3 +1,11 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="15.974" height="16">
- <path d="M7 0v1.031A6.514 6.514 0 0 0 1.063 7H0v1h1.063A6.513 6.513 0 0 0 7 13.969V15h1v-1.031c3.188-.234 5.724-2.78 5.969-5.969H15V7H13.97C13.724 3.811 11.189 1.233 8 1V0zm.531 2.813A4.665 4.665 0 0 1 12.22 7.5a4.665 4.665 0 0 1-4.688 4.688c-2.606 0-4.75-2.082-4.75-4.688s2.144-4.688 4.75-4.688zM7.501 4a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7z" style="marker:none" color="#000" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 11 8 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0"/>
+ <path d="m 8 1 c -3.851562 0 -7 3.144531 -7 7 s 3.148438 7 7 7 s 7 -3.144531 7 -7 s -3.148438 -7 -7 -7 z m 0 2 c 2.773438 0 5 2.230469 5 5 s -2.226562 4.996094 -5 4.996094 s -5 -2.226563 -5 -4.996094 s 2.226562 -5 5 -5 z m 0 0"/>
+ <path d="m 7 0 h 2 v 3 h -2 z m 0 0"/>
+ <path d="m 7 13 h 2 v 3 h -2 z m 0 0"/>
+ <path d="m 16 7 v 2 h -3 v -2 z m 0 0"/>
+ <path d="m 3 7 v 2 h -3 v -2 z m 0 0"/>
+ </g>
</svg>
diff --git a/gtk/icons/scalable/actions/folder-new-symbolic.svg b/gtk/icons/scalable/actions/folder-new-symbolic.svg
index 32a9930f9d..4362a2854e 100644
--- a/gtk/icons/scalable/actions/folder-new-symbolic.svg
+++ b/gtk/icons/scalable/actions/folder-new-symbolic.svg
@@ -1 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#2e3436"><path d="M12 10.008v1.997h-2v1.997h2v1.996h2v-1.996h2v-1.997h-2v-1.997z"/><path d="M2 1s-.459-.014-.947.23C.564 1.475 0 2.167 0 3v10s-.014.459.23.947C.476 14.436 1.168 15 2 15h7v-2H2V3h4.586l1.707 1.707A1 1 0 009 5h5v4h2V5s.014-.459-.23-.947C15.525 3.564 14.833 3 14 3H9.414L7.707 1.293A1 1 0 007 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill-rule="evenodd"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 11.996094 10.007812 v 1.996094 h -2 v 1.996094 h 2 v 2 h 2 v -2 h 2 v -1.996094 h -2 v -1.996094 z m 0 0"/>
+ <path d="m 1.996094 1 s -0.457032 -0.015625 -0.945313 0.230469 c -0.488281 0.246093 -1.05468725 0.9375 -1.05468725 1.769531 v 10 s -0.01171875 0.457031 0.23046825 0.949219 c 0.246094 0.488281 0.9375 1.050781 1.769532 1.050781 h 7 v -2 h -7 v -10 h 4.585937 l 1.707031 1.707031 c 0.1875 0.1875 0.445313 0.292969 0.707032 0.292969 h 5 v 4 h 2 v -4 s 0.015625 -0.457031 -0.230469 -0.949219 c -0.242187 -0.488281 -0.933594 -1.050781 -1.769531 -1.050781 h -4.585938 l -1.707031 -1.707031 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 z m 0 0" fill-rule="evenodd"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/go-next-symbolic-rtl.svg b/gtk/icons/scalable/actions/go-next-symbolic-rtl.svg
index 3e8479b70f..e9a9566cc8 100644
--- a/gtk/icons/scalable/actions/go-next-symbolic-rtl.svg
+++ b/gtk/icons/scalable/actions/go-next-symbolic-rtl.svg
@@ -1 +1,10 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M9.293 2.293L3.586 8l5.707 5.707 1.414-1.414L6.414 8l4.293-4.293z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M10 13h1v1h-1zm0-11h1v1h-1z" style="marker:none" overflow="visible"/><path d="M10 2c.554 0 1 .446 1 1s-.446 1-1 1-1-.446-1-1 .446-1 1-1zm0 10c.554 0 1 .446 1 1s-.446 1-1 1-1-.446-1-1 .446-1 1-1z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 11.707031 2.707031 l -1.414062 -1.414062 l -6.707031 6.707031 l 6.707031 6.707031 l 1.414062 -1.414062 l -5.292969 -5.292969 z m 0 0"/>
+ <path d="m 11 15 h 1 v -1 h -1 z m 0 0"/>
+ <path d="m 11 2 h 1 v -1 h -1 z m 0 0"/>
+ <path d="m 11 3 c 0.554688 0 1 -0.445312 1 -1 s -0.445312 -1 -1 -1 s -1 0.445312 -1 1 s 0.445312 1 1 1 z m 0 0"/>
+ <path d="m 11 15 c 0.554688 0 1 -0.445312 1 -1 s -0.445312 -1 -1 -1 s -1 0.445312 -1 1 s 0.445312 1 1 1 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/go-next-symbolic.svg b/gtk/icons/scalable/actions/go-next-symbolic.svg
index 2ba1b74d95..499a595117 100644
--- a/gtk/icons/scalable/actions/go-next-symbolic.svg
+++ b/gtk/icons/scalable/actions/go-next-symbolic.svg
@@ -1 +1,10 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M6.707 2.293L5.293 3.707 9.586 8l-4.293 4.293 1.414 1.414L12.414 8z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M6 13H5v1h1zM6 2H5v1h1z" style="marker:none" overflow="visible"/><path d="M6 2c-.554 0-1 .446-1 1s.446 1 1 1 1-.446 1-1-.446-1-1-1zm0 10c-.554 0-1 .446-1 1s.446 1 1 1 1-.446 1-1-.446-1-1-1z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 4.292969 2.707031 l 1.414062 -1.414062 l 6.707031 6.707031 l -6.707031 6.707031 l -1.414062 -1.414062 l 5.292969 -5.292969 z m 0 0"/>
+ <path d="m 5 15 h -1 v -1 h 1 z m 0 0"/>
+ <path d="m 5 2 h -1 v -1 h 1 z m 0 0"/>
+ <path d="m 5 3 c -0.554688 0 -1 -0.445312 -1 -1 s 0.445312 -1 1 -1 s 1 0.445312 1 1 s -0.445312 1 -1 1 z m 0 0"/>
+ <path d="m 5 15 c -0.554688 0 -1 -0.445312 -1 -1 s 0.445312 -1 1 -1 s 1 0.445312 1 1 s -0.445312 1 -1 1 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/go-previous-symbolic-rtl.svg b/gtk/icons/scalable/actions/go-previous-symbolic-rtl.svg
index 2ba1b74d95..499a595117 100644
--- a/gtk/icons/scalable/actions/go-previous-symbolic-rtl.svg
+++ b/gtk/icons/scalable/actions/go-previous-symbolic-rtl.svg
@@ -1 +1,10 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M6.707 2.293L5.293 3.707 9.586 8l-4.293 4.293 1.414 1.414L12.414 8z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M6 13H5v1h1zM6 2H5v1h1z" style="marker:none" overflow="visible"/><path d="M6 2c-.554 0-1 .446-1 1s.446 1 1 1 1-.446 1-1-.446-1-1-1zm0 10c-.554 0-1 .446-1 1s.446 1 1 1 1-.446 1-1-.446-1-1-1z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 4.292969 2.707031 l 1.414062 -1.414062 l 6.707031 6.707031 l -6.707031 6.707031 l -1.414062 -1.414062 l 5.292969 -5.292969 z m 0 0"/>
+ <path d="m 5 15 h -1 v -1 h 1 z m 0 0"/>
+ <path d="m 5 2 h -1 v -1 h 1 z m 0 0"/>
+ <path d="m 5 3 c -0.554688 0 -1 -0.445312 -1 -1 s 0.445312 -1 1 -1 s 1 0.445312 1 1 s -0.445312 1 -1 1 z m 0 0"/>
+ <path d="m 5 15 c -0.554688 0 -1 -0.445312 -1 -1 s 0.445312 -1 1 -1 s 1 0.445312 1 1 s -0.445312 1 -1 1 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/go-previous-symbolic.svg b/gtk/icons/scalable/actions/go-previous-symbolic.svg
index 3e8479b70f..e9a9566cc8 100644
--- a/gtk/icons/scalable/actions/go-previous-symbolic.svg
+++ b/gtk/icons/scalable/actions/go-previous-symbolic.svg
@@ -1 +1,10 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M9.293 2.293L3.586 8l5.707 5.707 1.414-1.414L6.414 8l4.293-4.293z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M10 13h1v1h-1zm0-11h1v1h-1z" style="marker:none" overflow="visible"/><path d="M10 2c.554 0 1 .446 1 1s-.446 1-1 1-1-.446-1-1 .446-1 1-1zm0 10c.554 0 1 .446 1 1s-.446 1-1 1-1-.446-1-1 .446-1 1-1z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 11.707031 2.707031 l -1.414062 -1.414062 l -6.707031 6.707031 l 6.707031 6.707031 l 1.414062 -1.414062 l -5.292969 -5.292969 z m 0 0"/>
+ <path d="m 11 15 h 1 v -1 h -1 z m 0 0"/>
+ <path d="m 11 2 h 1 v -1 h -1 z m 0 0"/>
+ <path d="m 11 3 c 0.554688 0 1 -0.445312 1 -1 s -0.445312 -1 -1 -1 s -1 0.445312 -1 1 s 0.445312 1 1 1 z m 0 0"/>
+ <path d="m 11 15 c 0.554688 0 1 -0.445312 1 -1 s -0.445312 -1 -1 -1 s -1 0.445312 -1 1 s 0.445312 1 1 1 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/insert-image-symbolic.svg b/gtk/icons/scalable/actions/insert-image-symbolic.svg
index 44451d10b2..c7a3ee08f6 100644
--- a/gtk/icons/scalable/actions/insert-image-symbolic.svg
+++ b/gtk/icons/scalable/actions/insert-image-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M2 0v9h12V0zm2 2h8v5H4z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/>
- <path d="M5 5c2.32 1 3.045-1.66 6 0v1H5z" style="marker:none" color="#000" overflow="visible" opacity=".35"/>
- <path d="M11.003 11.039h-1c-.258 0-.53.13-.72.313L8 12.634l-1.283-1.282c-.19-.183-.462-.313-.72-.313h-1v1.001c0 .31.09.553.281.75L8 15.45l2.722-2.66c.191-.197.281-.44.281-.75v-1.001z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M2 0v9h12V0zm2 2h8v5H4z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/><path d="M5 5c2.32 1 3.045-1.66 6 0v1H5z" style="marker:none" color="#000" overflow="visible" opacity=".35"/><path d="M11.003 11.039h-1c-.258 0-.53.13-.72.313L8 12.634l-1.283-1.282c-.19-.183-.462-.313-.72-.313h-1v1.001c0 .31.09.553.281.75L8 15.45l2.722-2.66c.191-.197.281-.44.281-.75v-1.001z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/actions/insert-object-symbolic.svg b/gtk/icons/scalable/actions/insert-object-symbolic.svg
index cb7d9a3ff9..2b83b63d5f 100644
--- a/gtk/icons/scalable/actions/insert-object-symbolic.svg
+++ b/gtk/icons/scalable/actions/insert-object-symbolic.svg
@@ -1,6 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M8 0L3 3.143v4.714L8 11l5-3.143V3.143zm0 6L4.355 3.824 8 1.532l3.646 2.292z"/>
- <path d="M11 12h-1c-.257 0-.528.118-.719.284l-1.28 1.163-1.282-1.163A1.145 1.145 0 0 0 6 12H5v.908c0 .28.09.501.281.68L8.001 16l2.718-2.411a.88.88 0 0 0 .281-.681V12z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M8 0L3 3.143v4.714L8 11l5-3.143V3.143zm0 6L4.355 3.824 8 1.532l3.646 2.292z"/><path d="M11 12h-1c-.257 0-.528.118-.719.284l-1.28 1.163-1.282-1.163A1.145 1.145 0 006 12H5v.908c0 .28.09.501.281.68L8.001 16l2.718-2.411a.88.88 0 00.281-.681V12z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Bitstream Vera Sans" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/actions/list-add-symbolic.svg b/gtk/icons/scalable/actions/list-add-symbolic.svg
index fa6d3f64bd..cf6862242e 100644
--- a/gtk/icons/scalable/actions/list-add-symbolic.svg
+++ b/gtk/icons/scalable/actions/list-add-symbolic.svg
@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M7 3v4H3v2h4v4h2V9h4V7H9V3z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 7 1 v 6 h -6 v 2 h 6 v 6 h 2 v -6 h 6 v -2 h -6 v -6 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/actions/list-remove-all-symbolic.svg b/gtk/icons/scalable/actions/list-remove-all-symbolic.svg
index eb3ca67bc1..1381feab45 100644
--- a/gtk/icons/scalable/actions/list-remove-all-symbolic.svg
+++ b/gtk/icons/scalable/actions/list-remove-all-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M3 3h10v2H3zM10 7h3v2h-3zM10 11h3v2h-3z" style="marker:none" color="#bebebe" overflow="visible"/>
- <path d="M1 6.063v7.968h8V6.063zm1 1h6v5.968H2z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M3.043 9v2h4.033V9z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M3 3h10v2H3zm7 4h3v2h-3zm0 4h3v2h-3z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M1 6.063v7.968h8V6.063zm1 1h6v5.968H2z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M3.043 9v2h4.033V9z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/actions/list-remove-symbolic.svg b/gtk/icons/scalable/actions/list-remove-symbolic.svg
index c93f5369f2..b20ba0b709 100644
--- a/gtk/icons/scalable/actions/list-remove-symbolic.svg
+++ b/gtk/icons/scalable/actions/list-remove-symbolic.svg
@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M3 7h10v2H3z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 1 7 h 14 v 2 h -14 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/actions/media-eject-symbolic.svg b/gtk/icons/scalable/actions/media-eject-symbolic.svg
index b2034e0aa2..f55ad5cb55 100644
--- a/gtk/icons/scalable/actions/media-eject-symbolic.svg
+++ b/gtk/icons/scalable/actions/media-eject-symbolic.svg
@@ -1 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M7.987 3a1 1 0 00-.692.293l-4 4A1 1 0 004.002 9h8a1 1 0 00.707-1.707l-4-4A1 1 0 007.987 3zm.015 2.414L9.588 7H6.416zm-5 5.584l-.004 2 1 .002 8 .014 1 .002.004-2-1-.002-8-.014z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M12 8v1h1V8zM3.002 8v1h1V8zm1 0l4-4 4 4z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 8.003906 1.597656 c -0.371094 0.003906 -0.726562 0.148438 -0.988281 0.410156 l -5.601563 5.601563 c -0.257812 0.265625 -0.398437 0.621094 -0.394531 0.992187 h -0.015625 v 1.398438 h 13.996094 v -1.398438 c 0 -0.371093 -0.144531 -0.726562 -0.40625 -0.992187 l -5.597656 -5.601563 c -0.261719 -0.261718 -0.621094 -0.40625 -0.992188 -0.410156 z m 0 0"/>
+ <path d="m 1 12 h 14 v 2 h -14 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/media-playback-pause-symbolic.svg b/gtk/icons/scalable/actions/media-playback-pause-symbolic.svg
index 962486214f..fcec6576e4 100644
--- a/gtk/icons/scalable/actions/media-playback-pause-symbolic.svg
+++ b/gtk/icons/scalable/actions/media-playback-pause-symbolic.svg
@@ -1,5 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" fill="#474747">
- <path d="M4.002 4h3v8h-3zM9.002 4h3v8h-3z" style="marker:none" overflow="visible"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 2 1 h 5 v 14 h -5 z m 0 0"/>
+ <path d="m 9 1 h 5 v 14 h -5 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/media-playback-start-symbolic.svg b/gtk/icons/scalable/actions/media-playback-start-symbolic.svg
index fc1d6ee62f..220e08ef61 100644
--- a/gtk/icons/scalable/actions/media-playback-start-symbolic.svg
+++ b/gtk/icons/scalable/actions/media-playback-start-symbolic.svg
@@ -1,6 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" fill="#474747">
- <path d="M5.022 3a1 1 0 0 0-1.02 1v8a1 1 0 0 0 1.496.87l6.999-4a1 1 0 0 0 0-1.74l-6.999-4A1 1 0 0 0 5.022 3zm.98 2.725L9.982 8l-3.98 2.275z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M5.002 12h-1v1h1zM5.002 3h-1v1h1zM5.002 4L12 8l-6.998 4z" style="marker:none" overflow="visible"/>
- </g>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 2 1 v 13.992188 h 1.398438 c 0.246093 0.003906 0.488281 -0.050782 0.699218 -0.171876 l 9.796875 -5.597656 c 0.433594 -0.242187 0.65625 -0.734375 0.65625 -1.226562 c 0 -0.492188 -0.222656 -0.984375 -0.65625 -1.222656 l -9.796875 -5.597657 c -0.210937 -0.121093 -0.453125 -0.175781 -0.699218 -0.175781 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/actions/media-playback-stop-symbolic.svg b/gtk/icons/scalable/actions/media-playback-stop-symbolic.svg
index 4d5af8f044..d27d2698a2 100644
--- a/gtk/icons/scalable/actions/media-playback-stop-symbolic.svg
+++ b/gtk/icons/scalable/actions/media-playback-stop-symbolic.svg
@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M4.002 4h8v8h-8z" style="marker:none" color="#000" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 2 2 h 12 v 12 h -12 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/actions/media-record-symbolic.svg b/gtk/icons/scalable/actions/media-record-symbolic.svg
index 6cc5318068..a2fbb4483a 100644
--- a/gtk/icons/scalable/actions/media-record-symbolic.svg
+++ b/gtk/icons/scalable/actions/media-record-symbolic.svg
@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M13 8c0-2.77-2.23-5-5-5S3 5.23 3 8s2.23 5 5 5 5-2.23 5-5z" style="marker:none" color="#000" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 15 8 c 0 3.867188 -3.132812 7 -7 7 s -7 -3.132812 -7 -7 s 3.132812 -7 7 -7 s 7 3.132812 7 7 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/actions/object-select-symbolic.svg b/gtk/icons/scalable/actions/object-select-symbolic.svg
index a27946e65a..79e0fdc165 100644
--- a/gtk/icons/scalable/actions/object-select-symbolic.svg
+++ b/gtk/icons/scalable/actions/object-select-symbolic.svg
@@ -1 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.5 5l-1-1-5 5L5 6.5l-2 2L7.5 13l7-7z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible" fill="#2e3436"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 15 3.484375 l -1 -1 l -7.46875 7.515625 l -3.414062 -3.476562 l -2 2 l 5.414062 5.476562 l 9.46875 -9.515625 z m 0 0" fill="#2e3436"/>
+</svg>
diff --git a/gtk/icons/scalable/actions/open-menu-symbolic.svg b/gtk/icons/scalable/actions/open-menu-symbolic.svg
index 2cd20117ca..7f4474335d 100644
--- a/gtk/icons/scalable/actions/open-menu-symbolic.svg
+++ b/gtk/icons/scalable/actions/open-menu-symbolic.svg
@@ -1,5 +1,8 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#bebebe" fill="#474747">
- <path d="M3 3h10v2H3zM3 7h10v2H3zM3 11h10v2H3z" style="marker:none" overflow="visible"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 1 2 h 14 v 2 h -14 z m 0 0"/>
+ <path d="m 1 7 h 14 v 2 h -14 z m 0 0"/>
+ <path d="m 1 12 h 14 v 2 h -14 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/system-search-symbolic.svg b/gtk/icons/scalable/actions/system-search-symbolic.svg
index 912fe3ff02..2a3770eef0 100644
--- a/gtk/icons/scalable/actions/system-search-symbolic.svg
+++ b/gtk/icons/scalable/actions/system-search-symbolic.svg
@@ -1 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" font-weight="400" font-family="sans-serif" fill="#474747"><path d="M6.508 1C3.48 1 1.002 3.473 1.002 6.5c0 3.026 2.478 5.5 5.506 5.5s5.504-2.474 5.504-5.5c0-3.027-2.476-5.5-5.504-5.5zm0 2a3.486 3.486 0 013.504 3.5c0 1.944-1.556 3.5-3.504 3.5a3.488 3.488 0 01-3.506-3.5C3.002 4.555 4.56 3 6.508 3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/><path d="M10 8.99a1 1 0 00-.695 1.717l4.004 4a1 1 0 101.414-1.414l-4.004-4A1 1 0 0010 8.99z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 10.804688 10 c -0.8125 0.144531 -1.105469 1.15625 -0.5 1.71875 l 3 3 c 0.957031 0.9375 2.363281 -0.5 1.40625 -1.4375 l -3 -3 c -0.238282 -0.242188 -0.578126 -0.347656 -0.90625 -0.28125 z m 0 0"/>
+ <path d="m 6.5 0 c -3.578125 0 -6.5 2.921875 -6.5 6.5 s 2.921875 6.496094 6.5 6.496094 s 6.5 -2.917969 6.5 -6.496094 s -2.921875 -6.5 -6.5 -6.5 z m 0 2 c 2.496094 0 4.5 2.003906 4.5 4.5 s -2.003906 4.496094 -4.5 4.496094 s -4.5 -2 -4.5 -4.496094 s 2.003906 -4.5 4.5 -4.5 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/value-decrease-symbolic.svg b/gtk/icons/scalable/actions/value-decrease-symbolic.svg
index c93f5369f2..43dd2dbbd1 100644
--- a/gtk/icons/scalable/actions/value-decrease-symbolic.svg
+++ b/gtk/icons/scalable/actions/value-decrease-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M3 7h10v2H3z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M3 7h10v2H3z" style="marker:none" color="#bebebe" overflow="visible" fill="#2e3436"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/actions/value-increase-symbolic.svg b/gtk/icons/scalable/actions/value-increase-symbolic.svg
index fa6d3f64bd..c26d29d51d 100644
--- a/gtk/icons/scalable/actions/value-increase-symbolic.svg
+++ b/gtk/icons/scalable/actions/value-increase-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M7 3v4H3v2h4v4h2V9h4V7H9V3z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path style="marker:none" d="M7 3v4H3v2h4v4h2V9h4V7H9V3z" color="#bebebe" overflow="visible" fill="#2e3436"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/actions/view-list-symbolic.svg b/gtk/icons/scalable/actions/view-list-symbolic.svg
index c2d1c4c468..0eb1f98dd8 100644
--- a/gtk/icons/scalable/actions/view-list-symbolic.svg
+++ b/gtk/icons/scalable/actions/view-list-symbolic.svg
@@ -1,6 +1,11 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M8 4h6v2H8zM8 9.984h6v2H8z" style="marker:none" color="#bebebe" overflow="visible"/>
- <path d="M2.384 3h3.231A.38.38 0 0 1 6 3.379V6.62A.38.38 0 0 1 5.615 7h-3.23A.38.38 0 0 1 2 6.621V3.38A.38.38 0 0 1 2.384 3zM2.384 9h3.231A.38.38 0 0 1 6 9.379V12.6a.38.38 0 0 1-.385.38h-3.23A.38.38 0 0 1 2 12.6V9.38A.38.38 0 0 1 2.384 9z" style="marker:none" color="#000" overflow="visible"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 7 2 h 8 v 2 h -8 z m 0 0"/>
+ <path d="m 7 7 h 8 v 2 h -8 z m 0 0"/>
+ <path d="m 2 1 h 2 c 0.550781 0 1 0.449219 1 1 v 2 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -2 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
+ <path d="m 2 6.015625 h 2 c 0.550781 0 1 0.449219 1 1 v 1.980469 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -1.980469 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
+ <path d="m 7 11.984375 h 8 v 2 h -8 z m 0 0"/>
+ <path d="m 2 11 h 2 c 0.550781 0 1 0.449219 1 1 v 1.980469 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -1.980469 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
</g>
</svg>
diff --git a/gtk/icons/scalable/actions/view-more-symbolic.svg b/gtk/icons/scalable/actions/view-more-symbolic.svg
index c561d40e63..6838f201cb 100644
--- a/gtk/icons/scalable/actions/view-more-symbolic.svg
+++ b/gtk/icons/scalable/actions/view-more-symbolic.svg
@@ -1 +1,8 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M9.994 2a2 2 0 01-2 2 2 2 0 01-2-2 2 2 0 012-2 2 2 0 012 2zm0 6a2 2 0 01-2 2 2 2 0 01-2-2 2 2 0 012-2 2 2 0 012 2zm0 6a2 2 0 01-2 2 2 2 0 01-2-2 2 2 0 012-2 2 2 0 012 2z" fill="#2e3436"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 9.992188 2 c 0 1.105469 -0.894532 2 -2 2 c -1.101563 0 -2 -0.894531 -2 -2 s 0.898437 -2 2 -2 c 1.105468 0 2 0.894531 2 2 z m 0 0"/>
+ <path d="m 9.992188 8 c 0 1.105469 -0.894532 2 -2 2 c -1.101563 0 -2 -0.894531 -2 -2 s 0.898437 -2 2 -2 c 1.105468 0 2 0.894531 2 2 z m 0 0"/>
+ <path d="m 9.992188 14 c 0 1.105469 -0.894532 2 -2 2 c -1.101563 0 -2 -0.894531 -2 -2 s 0.898437 -2 2 -2 c 1.105468 0 2 0.894531 2 2 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/actions/view-refresh-symbolic.svg b/gtk/icons/scalable/actions/view-refresh-symbolic.svg
index 85046c3bcb..d26c20d0eb 100644
--- a/gtk/icons/scalable/actions/view-refresh-symbolic.svg
+++ b/gtk/icons/scalable/actions/view-refresh-symbolic.svg
@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M6.719 2c-.192.009-.372.035-.563.063a6.03 6.03 0 0 0-3.968 2.343C.206 7.048.764 10.831 3.405 12.813c2.642 1.98 6.425 1.422 8.406-1.22.123-.17.19-.382.188-.593v-1h-1a1.024 1.024 0 0 0-.813.406c-1.332 1.777-3.817 2.114-5.593.781-1.777-1.332-2.114-3.816-.782-5.593C5.146 3.817 7.63 3.48 9.407 4.812c.43.323.77.733 1.031 1.188H9a1 1 0 0 0-1 1v1h6V2h-1a1 1 0 0 0-1 1v1.688A5.966 5.966 0 0 0 6.719 2z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 7.40625 1 c -0.613281 0.007812 -1.234375 0.089844 -1.847656 0.253906 c -3.273438 0.878906 -5.558594 3.855469 -5.558594 7.246094 s 2.285156 6.367188 5.558594 7.242188 c 3.273437 0.878906 6.742187 -0.558594 8.4375 -3.492188 c 0.277344 -0.480469 0.109375 -1.089844 -0.367188 -1.367188 c -0.476562 -0.273437 -1.089844 -0.109374 -1.367187 0.367188 c -1.246094 2.160156 -3.777344 3.207031 -6.1875 2.5625 c -2.40625 -0.644531 -4.074219 -2.820312 -4.074219 -5.3125 c 0 -2.496094 1.667969 -4.667969 4.074219 -5.3125 c 2.410156 -0.644531 4.941406 0.402344 6.1875 2.5625 c 0.058593 0.085938 0.125 0.164062 0.203125 0.226562 l -0.019532 0.015626 l -0.007812 0.007812 h -1.4375 c -0.550781 0 -1 0.449219 -1 1 v 1 h 6 v -6 h -1 c -0.550781 0 -1 0.449219 -1 1 v 1.6875 l -0.015625 0.011719 l -0.011719 0.011719 c -1.277344 -2.179688 -3.53125 -3.519532 -5.953125 -3.691407 c -0.203125 -0.015625 -0.40625 -0.019531 -0.613281 -0.019531 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/categories/emoji-activities-symbolic.svg b/gtk/icons/scalable/categories/emoji-activities-symbolic.svg
index 914919a74f..2d64c823db 100644
--- a/gtk/icons/scalable/categories/emoji-activities-symbolic.svg
+++ b/gtk/icons/scalable/categories/emoji-activities-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.003" height="16">
- <path d="M8 .002C3.591.002 0 3.596 0 8s3.591 7.998 8 7.998S16 12.404 16 8 12.409.002 8 .002zm0 1.996c.127 0 .252.012.377.02-.52 1.637-.187 3.433.98 4.705 1.178 1.282 2.957 1.759 4.64 1.353A5.984 5.984 0 0 1 8 14.002h-.006c.364-1.653-.115-3.388-1.373-4.543-1.244-1.142-2.99-1.483-4.598-1.012A6.064 6.064 0 0 1 2.002 8 5.985 5.985 0 0 1 8 1.998zm1.377.162a5.976 5.976 0 0 1 4.545 4.914c-1.393.4-2.867.021-3.828-1.025C9.14 5.01 8.882 3.515 9.377 2.16zM3.48 9.316c.905-.027 1.781.251 2.465.88 1.016.932 1.29 2.343.93 3.699a5.978 5.978 0 0 1-4.664-4.336c.42-.143.846-.23 1.27-.243z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 0C3.594 0 0 3.594 0 8c0 4.406 3.594 8 8 8 4.406 0 8-3.594 8-8 0-4.406-3.594-8-8-8zm0 2c.038 0 .075.005.113.006A4.993 4.993 0 009.541 6.61a4.999 4.999 0 004.453 1.283c0 .036.006.07.006.107 0 3.326-2.674 6-6 6-.039 0-.076-.005-.115-.006a4.992 4.992 0 00-1.281-4.46 4.994 4.994 0 00-3.35-1.528 4.992 4.992 0 00-1.248.1C2.006 8.07 2 8.036 2 8c0-3.326 2.674-6 6-6zm1.113.105a5.977 5.977 0 014.782 4.786 3.99 3.99 0 01-3.663-1.002 3.987 3.987 0 01-1.119-3.784zM3.205 9.004a3.99 3.99 0 013.684 4.89 5.976 5.976 0 01-4.784-4.789c.364-.083.734-.12 1.1-.101z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/categories/emoji-flags-symbolic.svg b/gtk/icons/scalable/categories/emoji-flags-symbolic.svg
index 7be24d7c3f..d6794dc5e1 100644
--- a/gtk/icons/scalable/categories/emoji-flags-symbolic.svg
+++ b/gtk/icons/scalable/categories/emoji-flags-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.003" height="16">
- <g fill="#2e3436" fill-rule="evenodd">
- <path d="M2.003 1v14h2V1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M3.003 1a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h3.383l.722 1.447a1 1 0 0 0 .895.553h5a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H9.62l-.722-1.447A1 1 0 0 0 8.003 1zm1 2h3.383l.722 1.447A1 1 0 0 0 9.003 5h3v4H8.62l-.722-1.447A1 1 0 0 0 7.003 7h-3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M3.003 8h4l1 2h5V4h-4l-1-2h-5z"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16.003" height="16"><g fill="#2e3436" fill-rule="evenodd"><path d="M2.003 1v14h2V1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M3.003 1a1 1 0 00-1 1v6a1 1 0 001 1h3.383l.722 1.447a1 1 0 00.895.553h5a1 1 0 001-1V4a1 1 0 00-1-1H9.62l-.722-1.447A1 1 0 008.003 1zm1 2h3.383l.722 1.447A1 1 0 009.003 5h3v4H8.62l-.722-1.447A1 1 0 007.003 7h-3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M3.003 8h4l1 2h5V4h-4l-1-2h-5z"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/categories/emoji-nature-symbolic.svg b/gtk/icons/scalable/categories/emoji-nature-symbolic.svg
index 8561921550..948c77483d 100644
--- a/gtk/icons/scalable/categories/emoji-nature-symbolic.svg
+++ b/gtk/icons/scalable/categories/emoji-nature-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M6.003 1s-3 0-3 3v5s.044 1.419.028 2c0 1-.537 1.413-1.404 2.121-.627.49-.774 1.31-.307 1.697.43.356 1.162.304 1.66-.343L4 13c.698-1.014.983-1.876 1-3l.003-6C5.003 3 6 3 6 3v6.574L9.003 6.5V4c0-1 .997-1 .997-1l.003 2.5L12 3.465c.338-.312.503-.465 1-.465l.003 1L9 8h4s.003 1-1 1H8l-2 2c0 .426 0 2.006 2 2.006L12.003 13s3 0 2.997-2.99V1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6.003 1s-3 0-3 3v5s.044 1.419.028 2c0 1-.537 1.413-1.404 2.121-.627.49-.774 1.31-.307 1.697.43.356 1.162.304 1.66-.343L4 13c.698-1.014.983-1.876 1-3l.003-6C5.003 3 6 3 6 3v6.574L9.003 6.5V4c0-1 .997-1 .997-1l.003 2.5L12 3.465c.338-.312.503-.465 1-.465l.003 1L9 8h4s.003 1-1 1H8l-2 2c0 .426 0 2.006 2 2.006L12.003 13s3 0 2.997-2.99V1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/categories/emoji-recent-symbolic.svg b/gtk/icons/scalable/categories/emoji-recent-symbolic.svg
index 0380dbd612..6cce039f9d 100644
--- a/gtk/icons/scalable/categories/emoji-recent-symbolic.svg
+++ b/gtk/icons/scalable/categories/emoji-recent-symbolic.svg
@@ -1,6 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747" color="#000" font-weight="400" font-family="Sans">
- <path d="M8.487.02A7.492 7.492 0 0 0 1 7.507a7.492 7.492 0 0 0 7.487 7.486 7.492 7.492 0 0 0 7.486-7.486A7.492 7.492 0 0 0 8.487.02zm0 1.973A5.508 5.508 0 0 1 14 7.507a5.508 5.508 0 0 1-5.513 5.513 5.508 5.508 0 0 1-5.514-5.513 5.508 5.508 0 0 1 5.514-5.514z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/>
- <path d="M11.393 4.007a.5.5 0 0 0-.25.156L8.487 6.819 6.83 5.163a.5.5 0 1 0-.687.687l2 2a.5.5 0 0 0 .687 0l3-3a.5.5 0 0 0-.437-.843z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747" color="#000" font-weight="400" font-family="Sans"><path d="M8.487.02A7.492 7.492 0 001 7.507a7.492 7.492 0 007.487 7.486 7.492 7.492 0 007.486-7.486A7.492 7.492 0 008.487.02zm0 1.973A5.508 5.508 0 0114 7.507a5.508 5.508 0 01-5.513 5.513 5.508 5.508 0 01-5.514-5.513 5.508 5.508 0 015.514-5.514z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/><path d="M11.393 4.007a.5.5 0 00-.25.156L8.487 6.819 6.83 5.163a.5.5 0 10-.687.687l2 2a.5.5 0 00.687 0l3-3a.5.5 0 00-.437-.843z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/emblems/emblem-important-symbolic.svg b/gtk/icons/scalable/emblems/emblem-important-symbolic.svg
index c48d10918a..bf6f7fde55 100644
--- a/gtk/icons/scalable/emblems/emblem-important-symbolic.svg
+++ b/gtk/icons/scalable/emblems/emblem-important-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1zm-.094 1.969A1 1 0 0 1 9 4v5a1 1 0 1 1-2 0V4a1 1 0 0 1 .781-1 1 1 0 0 1 .125-.031zM8 11a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm-.094 1.969A1 1 0 019 4v5a1 1 0 11-2 0V4a1 1 0 01.781-1 1 1 0 01.125-.031zM8 11a1 1 0 110 2 1 1 0 010-2z" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/emblems/emblem-system-symbolic.svg b/gtk/icons/scalable/emblems/emblem-system-symbolic.svg
index 603d154664..9ccb361984 100644
--- a/gtk/icons/scalable/emblems/emblem-system-symbolic.svg
+++ b/gtk/icons/scalable/emblems/emblem-system-symbolic.svg
@@ -1,3 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M8 1c-.22 0-.44.011-.656.031l-.406 2.094a5.012 5.012 0 0 0-.969.312L4.438 1.97c-.389.23-.727.514-1.063.812l.906 1.906a5.057 5.057 0 0 0-.593.813l-2.094-.281A6.91 6.91 0 0 0 1.188 6.5l1.843 1a4.826 4.826 0 0 0-.03.5c0 .173.013.332.03.5l-1.843 1c.097.445.228.872.406 1.281l2.094-.281c.17.29.371.563.593.812l-.906 1.907c.336.298.674.582 1.063.812l1.531-1.469c.306.137.634.24.969.313l.406 2.094a7.118 7.118 0 0 0 1.312 0l.407-2.094c.334-.073.663-.176.968-.313l1.532 1.47c.388-.23.727-.515 1.062-.813l-.906-1.907c.222-.249.424-.522.594-.812l2.093.281a6.91 6.91 0 0 0 .407-1.281l-1.844-1c.017-.168.031-.327.031-.5s-.014-.332-.031-.5l1.844-1a6.908 6.908 0 0 0-.407-1.281l-2.093.281a5.057 5.057 0 0 0-.594-.813l.906-1.906c-.335-.298-.674-.582-1.062-.812L10.03 3.437a5.015 5.015 0 0 0-.968-.312l-.407-2.094A7.118 7.118 0 0 0 8 1zm0 4a3 3 0 1 1 0 6 3 3 0 0 1 0-6z" style="marker:none" color="#000" overflow="visible" fill="#474747"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <path d="m 8 0 c -0.253906 0 -0.503906 0.0117188 -0.75 0.0351562 l -0.464844 2.3945318 c -0.382812 0.082031 -0.757812 0.199218 -1.105468 0.355468 l -1.75 -1.675781 c -0.445313 0.261719 -0.832032 0.585937 -1.214844 0.925781 l 1.035156 2.179688 c -0.253906 0.285156 -0.484375 0.597656 -0.675781 0.929687 l -2.394531 -0.324219 c -0.203126 0.46875 -0.351563 0.957032 -0.464844 1.464844 l 2.109375 1.140625 c -0.019531 0.195313 -0.039063 0.378907 -0.039063 0.574219 s 0.019532 0.378906 0.039063 0.570312 l -2.109375 1.144532 c 0.113281 0.507812 0.261718 0.996094 0.464844 1.460937 l 2.394531 -0.320312 c 0.191406 0.332031 0.421875 0.644531 0.675781 0.929687 l -1.035156 2.175782 c 0.382812 0.34375 0.769531 0.667968 1.214844 0.933593 l 1.75 -1.683593 c 0.347656 0.15625 0.722656 0.277343 1.105468 0.359374 l 0.464844 2.390626 c 0.246094 0.023437 0.496094 0.039062 0.75 0.039062 s 0.503906 -0.015625 0.75 -0.035156 l 0.464844 -2.394532 c 0.382812 -0.082031 0.757812 -0.203124 1.109375 -0.355468 l 1.75 1.679687 c 0.441406 -0.265625 0.828125 -0.589843 1.210937 -0.929687 l -1.035156 -2.179688 c 0.253906 -0.285156 0.484375 -0.597656 0.675781 -0.929687 l 2.398438 0.320312 c 0.199219 -0.464843 0.347656 -0.953125 0.460937 -1.460937 l -2.109375 -1.144532 c 0.019531 -0.191406 0.039063 -0.375 0.039063 -0.570312 s -0.019532 -0.378906 -0.039063 -0.574219 l 2.109375 -1.140625 c -0.113281 -0.507812 -0.261718 -0.996094 -0.460937 -1.464844 l -2.398438 0.324219 c -0.191406 -0.332031 -0.421875 -0.644531 -0.675781 -0.929687 l 1.035156 -2.179688 c -0.382812 -0.339844 -0.769531 -0.664062 -1.210937 -0.929687 l -1.75 1.679687 c -0.351563 -0.15625 -0.726563 -0.273437 -1.109375 -0.359375 l -0.464844 -2.3906248 c -0.246094 -0.0234374 -0.496094 -0.0351562 -0.75 -0.0351562 z m 0 5 c 1.65625 0 3 1.34375 3 3 s -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 z m 0 0" fill="#2e3436"/>
</svg>
diff --git a/gtk/icons/scalable/emotes/face-smile-big-symbolic.svg b/gtk/icons/scalable/emotes/face-smile-big-symbolic.svg
index b622291b6c..f1cb0ae06e 100644
--- a/gtk/icons/scalable/emotes/face-smile-big-symbolic.svg
+++ b/gtk/icons/scalable/emotes/face-smile-big-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1zM6 5c.558 0 1.031.473 1.031 1.031V7c0 .558-.473 1-1.031 1-.558 0-1-.442-1-1v-.969C5 5.473 5.442 5 6 5zm4 0c.558 0 1 .473 1 1.031V7c0 .558-.442 1-1 1s-1-.442-1-1v-.969C9 5.473 9.442 5 10 5zM3 9.031c2 1.304 7.987 1.304 10.031 0l-.03.531c-.037.43-1 3.376-5 3.407-4 .031-5-2.78-5-3.313z" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 1a7 7 0 100 14A7 7 0 008 1zM6 5c.558 0 1.031.473 1.031 1.031V7c0 .558-.473 1-1.031 1-.558 0-1-.442-1-1v-.969C5 5.473 5.442 5 6 5zm4 0c.558 0 1 .473 1 1.031V7c0 .558-.442 1-1 1s-1-.442-1-1v-.969C9 5.473 9.442 5 10 5zM3 9.031c2 1.304 7.987 1.304 10.031 0l-.03.531c-.037.43-1 3.376-5 3.407-4 .031-5-2.78-5-3.313z" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/emotes/face-smile-symbolic.svg b/gtk/icons/scalable/emotes/face-smile-symbolic.svg
index 1f524c7dce..ab25cd7d43 100644
--- a/gtk/icons/scalable/emotes/face-smile-symbolic.svg
+++ b/gtk/icons/scalable/emotes/face-smile-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1zM6 5c.559 0 1.031.473 1.031 1.031V7c0 .558-.472 1-1.03 1-.56 0-1-.442-1-1v-.969C5 5.473 5.44 5 6 5zm4 0c.559 0 1 .473 1 1.031V7c0 .558-.441 1-1 1-.558 0-1-.442-1-1v-.969C9 5.473 9.442 5 10 5zM3 9.07c.997.637 4.017.917 5 .917.984 0 3.805.051 5-.917v.5c0 .68-1.744 1.404-5 1.404-3.256 0-5-.872-5-1.404z" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 1a7 7 0 100 14A7 7 0 008 1zM6 5c.559 0 1.031.473 1.031 1.031V7c0 .558-.472 1-1.03 1-.56 0-1-.442-1-1v-.969C5 5.473 5.44 5 6 5zm4 0c.559 0 1 .473 1 1.031V7c0 .558-.441 1-1 1-.558 0-1-.442-1-1v-.969C9 5.473 9.442 5 10 5zM3 9.07c.997.637 4.017.917 5 .917.984 0 3.805.051 5-.917v.5c0 .68-1.744 1.404-5 1.404-3.256 0-5-.872-5-1.404z" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-documents-symbolic.svg b/gtk/icons/scalable/places/folder-documents-symbolic.svg
index 4a61343bd6..66d27f888b 100644
--- a/gtk/icons/scalable/places/folder-documents-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-documents-symbolic.svg
@@ -1,6 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747" fill-rule="evenodd">
- <path d="M3 1a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V5.5a1 1 0 0 0-.293-.707l-3.5-3.5A1 1 0 0 0 9.5 1zm1 2h5.086L12 5.914V14H4z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M9 2v4h4z"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747" fill-rule="evenodd"><path d="M3 1a1 1 0 00-1 1v13a1 1 0 001 1h10a1 1 0 001-1V5.5a1 1 0 00-.293-.707l-3.5-3.5A1 1 0 009.5 1zm1 2h5.086L12 5.914V14H4z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M9 2v4h4z"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-music-symbolic.svg b/gtk/icons/scalable/places/folder-music-symbolic.svg
index 41e79001fb..30c86ff3d6 100644
--- a/gtk/icons/scalable/places/folder-music-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-music-symbolic.svg
@@ -1,6 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" font-weight="400" font-family="sans-serif" white-space="normal" fill="#474747">
- <path d="M3.5 8A3.515 3.515 0 0 0 0 11.5C0 13.421 1.579 15 3.5 15S7 13.421 7 11.5 5.421 8 3.5 8zm0 2c.84 0 1.5.66 1.5 1.5S4.34 13 3.5 13 2 12.34 2 11.5 2.66 10 3.5 10zM11.5 8A3.515 3.515 0 0 0 8 11.5c0 1.921 1.579 3.5 3.5 3.5s3.5-1.579 3.5-3.5S13.421 8 11.5 8zm0 2c.84 0 1.5.66 1.5 1.5s-.66 1.5-1.5 1.5-1.5-.66-1.5-1.5.66-1.5 1.5-1.5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/>
- <path d="M5 2v9.5h2V4h6v7.5h2V2z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" font-weight="400" font-family="sans-serif" fill="#474747"><path d="M3.5 8A3.515 3.515 0 000 11.5C0 13.421 1.579 15 3.5 15S7 13.421 7 11.5 5.421 8 3.5 8zm0 2c.84 0 1.5.66 1.5 1.5S4.34 13 3.5 13 2 12.34 2 11.5 2.66 10 3.5 10zm8-2A3.515 3.515 0 008 11.5c0 1.921 1.579 3.5 3.5 3.5s3.5-1.579 3.5-3.5S13.421 8 11.5 8zm0 2c.84 0 1.5.66 1.5 1.5s-.66 1.5-1.5 1.5-1.5-.66-1.5-1.5.66-1.5 1.5-1.5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/><path d="M5 2v9.5h2V4h6v7.5h2V2z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-pictures-symbolic.svg b/gtk/icons/scalable/places/folder-pictures-symbolic.svg
index 593aa813c0..542e06a301 100644
--- a/gtk/icons/scalable/places/folder-pictures-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-pictures-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.047" height="16.01">
- <path style="marker:none" d="M6.047 2c-.55 0-1 .45-1 1v1h-3c-.552 0-1 .45-1 1v8c0 .55.448 1 1 1h12c.552 0 1-.45 1-1V5c0-.55-.448-1-1-1h-3V3c0-.55-.45-1-1-1zm2 3a4 4 0 1 1 0 8 4 4 0 0 1 0-8zm0 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4z" color="#bebebe" overflow="visible" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16.047" height="16.01"><path style="marker:none" d="M6.047 2c-.55 0-1 .45-1 1v1h-3c-.552 0-1 .45-1 1v8c0 .55.448 1 1 1h12c.552 0 1-.45 1-1V5c0-.55-.448-1-1-1h-3V3c0-.55-.45-1-1-1zm2 3a4 4 0 110 8 4 4 0 010-8zm0 2a2 2 0 100 4 2 2 0 000-4z" color="#bebebe" overflow="visible" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-publicshare-symbolic.svg b/gtk/icons/scalable/places/folder-publicshare-symbolic.svg
index 3b41fc4325..266cba14d8 100644
--- a/gtk/icons/scalable/places/folder-publicshare-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-publicshare-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" fill="#474747">
- <path d="M6 8a3 3 0 0 1-3 3 3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3z" style="marker:none" overflow="visible"/>
- <path d="M12.553 2.106L.763 8l11.79 5.895.894-1.79L5.237 8l8.21-4.105z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M16 3a3 3 0 0 1-3 3 3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3zM16 13a3 3 0 0 1-3 3 3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3z" style="marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M6 8a3 3 0 01-3 3 3 3 0 01-3-3 3 3 0 013-3 3 3 0 013 3z" style="marker:none" overflow="visible"/><path d="M12.553 2.106L.763 8l11.79 5.895.894-1.79L5.237 8l8.21-4.105z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M16 3a3 3 0 01-3 3 3 3 0 01-3-3 3 3 0 013-3 3 3 0 013 3zm0 10a3 3 0 01-3 3 3 3 0 01-3-3 3 3 0 013-3 3 3 0 013 3z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-remote-symbolic.svg b/gtk/icons/scalable/places/folder-remote-symbolic.svg
index 6422c8cc42..629b40eedd 100644
--- a/gtk/icons/scalable/places/folder-remote-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-remote-symbolic.svg
@@ -1,8 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M2 0a1 1 0 0 0-1 1v9s-.014.459.23.947C1.475 11.436 2.167 12 3 12h1.832a1 1 0 0 0 .326 0H13s.459.014.947-.23C14.436 11.525 15 10.833 15 10V6a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v4H3V2h2.586l1.707 1.707A1 1 0 0 0 8 4h5a1 1 0 1 0 0-2H8.414L6.707.293A1 1 0 0 0 6 0zm4 7h7v3H6z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill-rule="evenodd"/>
- <path d="M2 5h1s0-1 1-1h6L7 1H2z" fill-rule="evenodd"/>
- <path d="M5 6h9v5H5zM13 3h1v1h-1zM14 5h1v1h-1zM4 5h1v1H4zM1.5 14h13c.277 0 .5.223.5.5v1c0 .277-.223.5-.5.5h-13a.499.499 0 0 1-.5-.5v-1c0-.277.223-.5.5-.5z"/>
- <path d="M7 11h2v4H7z"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M2 0a1 1 0 00-1 1v9s-.014.459.23.947C1.475 11.436 2.167 12 3 12h1.832a1 1 0 00.326 0H13s.459.014.947-.23C14.436 11.525 15 10.833 15 10V6a1 1 0 00-1-1H5a1 1 0 00-1 1v4H3V2h2.586l1.707 1.707A1 1 0 008 4h5a1 1 0 100-2H8.414L6.707.293A1 1 0 006 0zm4 7h7v3H6z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill-rule="evenodd"/><path d="M2 5h1s0-1 1-1h6L7 1H2z" fill-rule="evenodd"/><path d="M5 6h9v5H5zm8-3h1v1h-1zm1 2h1v1h-1zM4 5h1v1H4zm-2.5 9h13c.277 0 .5.223.5.5v1c0 .277-.223.5-.5.5h-13a.499.499 0 01-.5-.5v-1c0-.277.223-.5.5-.5z"/><path d="M7 11h2v4H7z"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-saved-search-symbolic.svg b/gtk/icons/scalable/places/folder-saved-search-symbolic.svg
index 280340ba1c..6dd5afae93 100644
--- a/gtk/icons/scalable/places/folder-saved-search-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-saved-search-symbolic.svg
@@ -1,6 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" font-weight="400" font-family="sans-serif" white-space="normal" fill="#474747">
- <path d="M6.508 1C3.48 1 1.002 3.474 1.002 6.5S3.48 12 6.508 12s5.504-2.474 5.504-5.5S9.536 1 6.508 1zm0 2a3.486 3.486 0 0 1 3.504 3.5c0 1.944-1.556 3.5-3.504 3.5a3.488 3.488 0 0 1-3.506-3.5C3.002 4.556 4.56 3 6.508 3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/>
- <path d="M10 8.99a1 1 0 0 0-.695 1.717l4.004 4a1 1 0 1 0 1.414-1.414l-4.004-4A1 1 0 0 0 10 8.99z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" font-weight="400" font-family="sans-serif" fill="#474747"><path d="M6.508 1C3.48 1 1.002 3.474 1.002 6.5S3.48 12 6.508 12s5.504-2.474 5.504-5.5S9.536 1 6.508 1zm0 2a3.486 3.486 0 013.504 3.5c0 1.944-1.556 3.5-3.504 3.5a3.488 3.488 0 01-3.506-3.5C3.002 4.556 4.56 3 6.508 3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/><path d="M10 8.99a1 1 0 00-.695 1.717l4.004 4a1 1 0 101.414-1.414l-4.004-4A1 1 0 0010 8.99z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-symbolic.svg b/gtk/icons/scalable/places/folder-symbolic.svg
index 17abd7c45f..9373086b05 100644
--- a/gtk/icons/scalable/places/folder-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M1 1a1 1 0 0 0-1 1v11s-.014.459.23.947C.476 14.436 1.168 15 2 15h1.832a1 1 0 0 0 .326 0H14s.459.014.947-.23C15.436 14.525 16 13.833 16 13V7a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6H2V3h3.586l1.707 1.707A1 1 0 0 0 8 5h5a1 1 0 1 0 0-2H8.414L6.707 1.293A1 1 0 0 0 6 1zm4 7h9v5H5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill-rule="evenodd"/>
- <path d="M1 6h1s0-1 1-1h6L6 2H1z" fill-rule="evenodd"/>
- <path d="M4 7h11v7H4zM13 4h1v1h-1zM15 6h1v1h-1zM3 6h1v1H3z"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M1 1a1 1 0 00-1 1v11s-.014.459.23.947C.476 14.436 1.168 15 2 15h12s.459.014.947-.23C15.436 14.525 16 13.833 16 13V6H3v7H2V6s0-1 1-1h11v-.832A1 1 0 0013 3H8.414L6.707 1.293A1 1 0 006 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-templates-symbolic.svg b/gtk/icons/scalable/places/folder-templates-symbolic.svg
index 95f15ea8be..3312f3e384 100644
--- a/gtk/icons/scalable/places/folder-templates-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-templates-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747" fill-rule="evenodd">
- <path d="M3 9h1v1H3zM2 10h1v1H2zM3 11h1v1H3zM2 12h1v1H2zM3 13h1v1H3zM2 14h1v1H2zM4 14h1v1H4zM6 14h1v1H6zM8 14h1v1H8zM10 14h1v1h-1zM3 15h1v1H3zM5 15h1v1H5zM7 15h1v1H7zM9 15h1v1H9zM11 15h1v1h-1zM12 14h1v1h-1z" style="marker:none" color="#000" overflow="visible"/>
- <path d="M3 1a1 1 0 0 0-1 1v7h2V3h5.086L12 5.914V14h2V5.5a1 1 0 0 0-.293-.707l-3.5-3.5A1 1 0 0 0 9.5 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M9 2v4h4z"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747" fill-rule="evenodd"><path d="M3 9h1v1H3zm-1 1h1v1H2zm1 1h1v1H3zm-1 1h1v1H2zm1 1h1v1H3zm-1 1h1v1H2zm2 0h1v1H4zm2 0h1v1H6zm2 0h1v1H8zm2 0h1v1h-1zm-7 1h1v1H3zm2 0h1v1H5zm2 0h1v1H7zm2 0h1v1H9zm2 0h1v1h-1zm1-1h1v1h-1z" style="marker:none" color="#000" overflow="visible"/><path d="M3 1a1 1 0 00-1 1v7h2V3h5.086L12 5.914V14h2V5.5a1 1 0 00-.293-.707l-3.5-3.5A1 1 0 009.5 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M9 2v4h4z"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/folder-videos-symbolic.svg b/gtk/icons/scalable/places/folder-videos-symbolic.svg
index 70c6522acb..dd7c709fee 100644
--- a/gtk/icons/scalable/places/folder-videos-symbolic.svg
+++ b/gtk/icons/scalable/places/folder-videos-symbolic.svg
@@ -1,5 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747" color="#bebebe">
- <path d="M6 4h8c.554 0 1 .446 1 1v7c0 .554-.446 1-1 1H6c-.554 0-1-.446-1-1V5c0-.554.446-1 1-1zM5 8.47L1.53 5H1v7h.5z" style="marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6 4h8c.554 0 1 .446 1 1v7c0 .554-.446 1-1 1H6c-.554 0-1-.446-1-1V5c0-.554.446-1 1-1zM5 8.47L1.53 5H1v7h.5z" style="marker:none" overflow="visible" fill="#474747" color="#bebebe"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/network-server-symbolic.svg b/gtk/icons/scalable/places/network-server-symbolic.svg
index 792bea7c53..910ee941ab 100644
--- a/gtk/icons/scalable/places/network-server-symbolic.svg
+++ b/gtk/icons/scalable/places/network-server-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" fill="#474747">
- <path d="M1.5 14h13c.277 0 .5.223.5.5v1c0 .277-.223.5-.5.5h-13a.499.499 0 0 1-.5-.5v-1c0-.277.223-.5.5-.5z" style="marker:none" overflow="visible"/>
- <path d="M5 0C3.91 0 3 .91 3 2v8c0 1.09.91 2 2 2h6c1.09 0 2-.91 2-2V2c0-1.09-.91-2-2-2zm0 2h6v8H5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M6 3h4v1H6zM9 5h1v1H9zM7 11h2v4H7z" style="marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M1.5 14h13c.277 0 .5.223.5.5v1c0 .277-.223.5-.5.5h-13a.499.499 0 01-.5-.5v-1c0-.277.223-.5.5-.5z" style="marker:none" overflow="visible"/><path d="M5 0C3.91 0 3 .91 3 2v8c0 1.09.91 2 2 2h6c1.09 0 2-.91 2-2V2c0-1.09-.91-2-2-2zm0 2h6v8H5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M6 3h4v1H6zm3 2h1v1H9zm-2 6h2v4H7z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/network-workgroup-symbolic.svg b/gtk/icons/scalable/places/network-workgroup-symbolic.svg
index c518513183..aecdcbcfd9 100644
--- a/gtk/icons/scalable/places/network-workgroup-symbolic.svg
+++ b/gtk/icons/scalable/places/network-workgroup-symbolic.svg
@@ -1,6 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#bebebe" font-weight="400" fill="#474747">
- <path d="M1.75 4C.798 4 0 4.798 0 5.75v4.5C0 11.202.798 12 1.75 12h.125l-.781 1.563L.375 15h9.25l-.719-1.437L8.125 12h.125c.952 0 1.75-.798 1.75-1.75v-4.5C10 4.798 9.202 4 8.25 4zM2 6h6v4H2z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-family="Sans" overflow="visible"/>
- <path d="M7.75 1C6.798 1 6 1.798 6 2.75V3h8v4h-3v3.25c0 .66-.252 1.27-.656 1.75h5.28l-1.5-3h.126C15.202 9 16 8.202 16 7.25v-4.5C16 1.798 15.202 1 14.25 1z" style="line-height:normal;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-family="Andale Mono" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" font-weight="400" fill="#474747"><path d="M1.75 4C.798 4 0 4.798 0 5.75v4.5C0 11.202.798 12 1.75 12h.125l-.781 1.563L.375 15h9.25l-.719-1.437L8.125 12h.125c.952 0 1.75-.798 1.75-1.75v-4.5C10 4.798 9.202 4 8.25 4zM2 6h6v4H2z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-family="Sans" overflow="visible"/><path d="M7.75 1C6.798 1 6 1.798 6 2.75V3h8v4h-3v3.25c0 .66-.252 1.27-.656 1.75h5.28l-1.5-3h.126C15.202 9 16 8.202 16 7.25v-4.5C16 1.798 15.202 1 14.25 1z" style="line-height:normal;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" font-family="Andale Mono" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/user-desktop-symbolic.svg b/gtk/icons/scalable/places/user-desktop-symbolic.svg
index 8af316e3fd..cd44e487f9 100644
--- a/gtk/icons/scalable/places/user-desktop-symbolic.svg
+++ b/gtk/icons/scalable/places/user-desktop-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.001" height="16">
- <g fill="#474747">
- <path d="M1 1a1 1 0 0 0-1 1v11s-.014.459.23.947C.476 14.436 1.168 15 2 15h1.832a1 1 0 0 0 .326 0H14s.459.014.947-.23C15.436 14.525 16 13.833 16 13V7a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6H2V3h3.586l1.707 1.707A1 1 0 0 0 8 5h5a1 1 0 1 0 0-2H8.414L6.707 1.293A1 1 0 0 0 6 1zm4 7h9v5H5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible" fill-rule="evenodd"/>
- <path d="M1 6h1s0-1 1-1h6L6 2H1z" fill-rule="evenodd"/>
- <path d="M4 7h11v7H4zM13 4h1v1h-1zM15 6h1v1h-1zM3 6h1v1H3z"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16.001" height="16"><g fill="#474747"><path d="M1 1a1 1 0 00-1 1v11s-.014.459.23.947C.476 14.436 1.168 15 2 15h1.832a1 1 0 00.326 0H14s.459.014.947-.23C15.436 14.525 16 13.833 16 13V7a1 1 0 00-1-1H4a1 1 0 00-1 1v6H2V3h3.586l1.707 1.707A1 1 0 008 5h5a1 1 0 100-2H8.414L6.707 1.293A1 1 0 006 1zm4 7h9v5H5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill-rule="evenodd"/><path d="M1 6h1s0-1 1-1h6L6 2H1z" fill-rule="evenodd"/><path d="M4 7h11v7H4zm9-3h1v1h-1zm2 2h1v1h-1zM3 6h1v1H3z"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/user-home-symbolic.svg b/gtk/icons/scalable/places/user-home-symbolic.svg
index df5d6795e4..5e59481d0b 100644
--- a/gtk/icons/scalable/places/user-home-symbolic.svg
+++ b/gtk/icons/scalable/places/user-home-symbolic.svg
@@ -1,8 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.023" height="16">
- <g fill="#474747">
- <path d="M3.008 4.986A1 1 0 0 0 2.023 6v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 1 0-2 0v6h-8V6a1 1 0 0 0-1.015-1.014z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M8.031 1a1 1 0 0 0-.601.186l-7 5a1.001 1.001 0 1 0 1.164 1.628L8.012 3.23l6.418 4.585a1.001 1.001 0 1 0 1.164-1.628l-7-5A1 1 0 0 0 8.03 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M6.012 8.01h3.03V13h-3.03z" style="marker:none" color="#bebebe" overflow="visible"/>
- <path d="M15.012 7h1v1h-1zM.012 7h1v1h-1z"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16.023" height="16"><g fill="#474747"><path d="M3.008 4.986A1 1 0 002.023 6v7a1 1 0 001 1h10a1 1 0 001-1V6a1 1 0 10-2 0v6h-8V6a1 1 0 00-1.015-1.014z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M8.031 1a1 1 0 00-.601.186l-7 5a1.001 1.001 0 101.164 1.628L8.012 3.23l6.418 4.585a1.001 1.001 0 101.164-1.628l-7-5A1 1 0 008.03 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M6.012 8.01h3.03V13h-3.03z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M15.012 7h1v1h-1zm-15 0h1v1h-1z"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/places/user-trash-symbolic.svg b/gtk/icons/scalable/places/user-trash-symbolic.svg
index 7606e534a9..734827ec63 100644
--- a/gtk/icons/scalable/places/user-trash-symbolic.svg
+++ b/gtk/icons/scalable/places/user-trash-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M13 5v9H4V5H2v9c0 2 2 2 2 2h9c2 0 2-2 2-2V5zM9 6H8v6h1zM7 6H6v6h1zm4 0h-1v6h1zm1-6c2 0 2 2 2 2h2v2H1V2h2c0-2 2-2 2-2zm0 1H5v1h7z" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13 5v9H4V5H2v9c0 2 2 2 2 2h9c2 0 2-2 2-2V5zM9 6H8v6h1zM7 6H6v6h1zm4 0h-1v6h1zm1-6c2 0 2 2 2 2h2v2H1V2h2c0-2 2-2 2-2zm0 1H5v1h7z" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/audio-volume-high-symbolic.svg b/gtk/icons/scalable/status/audio-volume-high-symbolic.svg
index b440424a20..703d9a7cb6 100644
--- a/gtk/icons/scalable/status/audio-volume-high-symbolic.svg
+++ b/gtk/icons/scalable/status/audio-volume-high-symbolic.svg
@@ -1,8 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/>
- <path d="M15 8c0-2.814-1-5.172-2.586-7H11v1.48C12.265 4 13 5.7 13 8c0 2.3-.78 4-2 5.52V15h1.381C13.847 13.36 15 10.814 15 8z" style="marker:none" color="#000" overflow="visible"/>
- <path d="M12 8c0-2.166-.739-4.02-2-5H9v2c.607.789 1 1.76 1 3 0 1.241-.393 2.22-1 3v2h1c1.223-.995 2-2.873 2-5z" style="marker:none" color="#000" overflow="visible"/>
- <path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M15 8c0-2.814-1-5.172-2.586-7H11v1.48C12.265 4 13 5.7 13 8c0 2.3-.78 4-2 5.52V15h1.381C13.847 13.36 15 10.814 15 8z" style="marker:none" color="#000" overflow="visible"/><path d="M12 8c0-2.166-.739-4.02-2-5H9v2c.607.789 1 1.76 1 3 0 1.241-.393 2.22-1 3v2h1c1.223-.995 2-2.873 2-5z" style="marker:none" color="#000" overflow="visible"/><path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/audio-volume-low-symbolic.svg b/gtk/icons/scalable/status/audio-volume-low-symbolic.svg
index 02c44a1f1f..0924c71e70 100644
--- a/gtk/icons/scalable/status/audio-volume-low-symbolic.svg
+++ b/gtk/icons/scalable/status/audio-volume-low-symbolic.svg
@@ -1,8 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/>
- <path d="M15 8c0-2.814-1-5.172-2.586-7H11v1.48C12.265 4 13 5.7 13 8c0 2.3-.78 4-2 5.52V15h1.381C13.847 13.36 15 10.814 15 8z" style="marker:none" color="#000" overflow="visible" opacity=".35"/>
- <path d="M12 8c0-2.166-.739-4.02-2-5H9v2c.607.789 1 1.76 1 3 0 1.241-.393 2.22-1 3v2h1c1.223-.995 2-2.873 2-5z" style="marker:none" color="#000" overflow="visible" opacity=".35"/>
- <path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M15 8c0-2.814-1-5.172-2.586-7H11v1.48C12.265 4 13 5.7 13 8c0 2.3-.78 4-2 5.52V15h1.381C13.847 13.36 15 10.814 15 8z" style="marker:none" color="#000" overflow="visible" opacity=".35"/><path d="M12 8c0-2.166-.739-4.02-2-5H9v2c.607.789 1 1.76 1 3 0 1.241-.393 2.22-1 3v2h1c1.223-.995 2-2.873 2-5z" style="marker:none" color="#000" overflow="visible" opacity=".35"/><path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/audio-volume-medium-symbolic.svg b/gtk/icons/scalable/status/audio-volume-medium-symbolic.svg
index fcdfee5a4d..d18794ab91 100644
--- a/gtk/icons/scalable/status/audio-volume-medium-symbolic.svg
+++ b/gtk/icons/scalable/status/audio-volume-medium-symbolic.svg
@@ -1,8 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M15 8c0-2.814-1-5.172-2.586-7H11v1.48C12.265 4 13 5.7 13 8c0 2.3-.78 4-2 5.52V15h1.381C13.847 13.36 15 10.814 15 8z" style="marker:none" color="#000" overflow="visible" opacity=".35"/>
- <path d="M12 8c0-2.166-.739-4.02-2-5H9v2c.607.789 1 1.76 1 3 0 1.241-.393 2.22-1 3v2h1c1.223-.995 2-2.873 2-5z" style="marker:none" color="#000" overflow="visible"/>
- <path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/>
- <path d="M0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M15 8c0-2.814-1-5.172-2.586-7H11v1.48C12.265 4 13 5.7 13 8c0 2.3-.78 4-2 5.52V15h1.381C13.847 13.36 15 10.814 15 8z" style="marker:none" color="#000" overflow="visible" opacity=".35"/><path d="M12 8c0-2.166-.739-4.02-2-5H9v2c.607.789 1 1.76 1 3 0 1.241-.393 2.22-1 3v2h1c1.223-.995 2-2.873 2-5z" style="marker:none" color="#000" overflow="visible"/><path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible"/><path d="M0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/audio-volume-muted-symbolic.svg b/gtk/icons/scalable/status/audio-volume-muted-symbolic.svg
index 5466ec305a..1d9e6a418b 100644
--- a/gtk/icons/scalable/status/audio-volume-muted-symbolic.svg
+++ b/gtk/icons/scalable/status/audio-volume-muted-symbolic.svg
@@ -1,8 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#474747">
- <path d="M11 11h1.375l1.125 1.094L14.594 11H16v1.469l-1.094 1.062L16 14.594V16h-1.438L13.5 14.937 12.437 16H11v-1.406l1.062-1.063L11 12.47zM0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/>
- <path d="M11 1v1.48C12.265 4 13 5.7 13 8c0 .723-.085 1.382-.229 2h2.034c.124-.645.195-1.314.195-2 0-2.814-1-5.172-2.586-7z" style="marker:none" color="#000" overflow="visible" opacity=".35"/>
- <path d="M9 3v2c.607.789 1 1.759 1 3s-.393 2.22-1 3v2h1v-3h1.75c.158-.626.25-1.297.25-2 0-2.167-.739-4.02-2-5z" style="marker:none" color="#000" overflow="visible" opacity=".35"/>
- <path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible" opacity=".35"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#474747"><path d="M11 11h1.375l1.125 1.094L14.594 11H16v1.469l-1.094 1.062L16 14.594V16h-1.438L13.5 14.937 12.437 16H11v-1.406l1.062-1.063L11 12.47zM0 5h2.484l2.97-3H6v12h-.475l-3.04-3H0z" style="marker:none" color="#bebebe" overflow="visible"/><path d="M11 1v1.48C12.265 4 13 5.7 13 8c0 .723-.085 1.382-.229 2h2.034c.124-.645.195-1.314.195-2 0-2.814-1-5.172-2.586-7z" style="marker:none" color="#000" overflow="visible" opacity=".35"/><path d="M9 3v2c.607.789 1 1.759 1 3s-.393 2.22-1 3v2h1v-3h1.75c.158-.626.25-1.297.25-2 0-2.167-.739-4.02-2-5z" style="marker:none" color="#000" overflow="visible" opacity=".35"/><path d="M9 8c0-1.257-.312-2.216-1-3H7v6h1c.672-.837 1-1.742 1-3z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible" opacity=".35"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/changes-allow-symbolic.svg b/gtk/icons/scalable/status/changes-allow-symbolic.svg
index 5857953ccf..374103710a 100644
--- a/gtk/icons/scalable/status/changes-allow-symbolic.svg
+++ b/gtk/icons/scalable/status/changes-allow-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#bebebe" fill="#474747">
- <path d="M3 9h10c.554 0 1 .446 1 1v3c0 .554-.446 1-1 1H3c-.554 0-1-.446-1-1v-3c0-.554.446-1 1-1z" style="marker:none" overflow="visible"/>
- <path d="M7 0s-.709-.014-1.447.356C4.814.725 4 1.666 4 3v3h2V3c0-.667.186-.725.447-.855C6.71 2.014 7 2 7 2h2s.291.014.553.145c.261.13.447.188.447.855v8h2V3c0-1.333-.814-2.275-1.553-2.644C9.71-.014 9 0 9 0z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M2 12h12v4H2z" style="marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M3 9h10c.554 0 1 .446 1 1v3c0 .554-.446 1-1 1H3c-.554 0-1-.446-1-1v-3c0-.554.446-1 1-1z" style="marker:none" overflow="visible"/><path d="M7 0s-.709-.014-1.447.356C4.814.725 4 1.666 4 3v3h2V3c0-.667.186-.725.447-.855C6.71 2.014 7 2 7 2h2s.291.014.553.145c.261.13.447.188.447.855v8h2V3c0-1.333-.814-2.275-1.553-2.644C9.71-.014 9 0 9 0z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M2 12h12v4H2z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/changes-prevent-symbolic.svg b/gtk/icons/scalable/status/changes-prevent-symbolic.svg
index 8989e833df..132b656be6 100644
--- a/gtk/icons/scalable/status/changes-prevent-symbolic.svg
+++ b/gtk/icons/scalable/status/changes-prevent-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#bebebe" fill="#474747">
- <path d="M3 7h10c.554 0 1 .446 1 1v3c0 .554-.446 1-1 1H3c-.554 0-1-.446-1-1V8c0-.554.446-1 1-1z" style="marker:none" overflow="visible"/>
- <path d="M7 1s-.709-.014-1.447.355C4.814 1.725 4 2.667 4 4v4h2V4c0-.667.186-.725.447-.855C6.71 3.014 7 3 7 3h2s.291.014.553.145c.261.13.447.188.447.855v4h2V4c0-1.333-.814-2.275-1.553-2.645C9.71.986 9 1 9 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M2 10h12v4H2z" style="marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#474747"><path d="M3 7h10c.554 0 1 .446 1 1v3c0 .554-.446 1-1 1H3c-.554 0-1-.446-1-1V8c0-.554.446-1 1-1z" style="marker:none" overflow="visible"/><path d="M7 1s-.709-.014-1.447.355C4.814 1.725 4 2.667 4 4v4h2V4c0-.667.186-.725.447-.855C6.71 3.014 7 3 7 3h2s.291.014.553.145c.261.13.447.188.447.855v4h2V4c0-1.333-.814-2.275-1.553-2.645C9.71.986 9 1 9 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M2 10h12v4H2z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/dialog-error-symbolic.svg b/gtk/icons/scalable/status/dialog-error-symbolic.svg
index fd917d24fd..26adafafbb 100644
--- a/gtk/icons/scalable/status/dialog-error-symbolic.svg
+++ b/gtk/icons/scalable/status/dialog-error-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M8 1C4.13 1 1 4.13 1 8s3.13 7 7 7 7-3.13 7-7-3.13-7-7-7zM4 7h8v2H4z" style="line-height:normal;-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Andale Mono" overflow="visible" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 1C4.13 1 1 4.13 1 8s3.13 7 7 7 7-3.13 7-7-3.13-7-7-7zM4 7h8v2H4z" style="line-height:normal;-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-weight="400" font-family="Andale Mono" overflow="visible" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/dialog-password-symbolic.svg b/gtk/icons/scalable/status/dialog-password-symbolic.svg
index 8285382501..100a80a2d0 100644
--- a/gtk/icons/scalable/status/dialog-password-symbolic.svg
+++ b/gtk/icons/scalable/status/dialog-password-symbolic.svg
@@ -1 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M5 4a4 4 0 00-4 4 4 4 0 004 4 4 4 0 003.87-3H13v2h3V7H8.867A4 4 0 005 4zm0 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2 2 2 0 012-2z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436"/></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#2e3436">
+ <path d="m 11 6 c 0 -2.761719 -2.238281 -5 -5 -5 s -5 2.238281 -5 5 s 2.238281 5 5 5 s 5 -2.238281 5 -5 z m -5 -1 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 s 1 0.449219 1 1 z m 0 0"/>
+ <path d="m 15 15 v -3 l -6 -6 l -1 4 l 1 1 v 2 h 2 v 2 z m 0 0"/>
+ </g>
+</svg>
diff --git a/gtk/icons/scalable/status/dialog-warning-symbolic.svg b/gtk/icons/scalable/status/dialog-warning-symbolic.svg
index ee75f32f4f..dff0822c2b 100644
--- a/gtk/icons/scalable/status/dialog-warning-symbolic.svg
+++ b/gtk/icons/scalable/status/dialog-warning-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M7.906.094c-.525-.029-1.038.283-1.437.969L.219 12.655C-.315 13.62.267 15 1.313 15h13.156c.982 0 1.903-1.16 1.219-2.344L9.375 1.125C8.976.479 8.432.122 7.906.094zM7.97 4.03c.544-.017 1.048.487 1.031 1.032V9c.007.528-.471 1-1 1-.528 0-1.007-.472-1-1V5.062a1.033 1.033 0 0 1 .813-1c.05-.014.103-.024.156-.03zM8 11a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M7.906.094c-.525-.029-1.038.283-1.437.969L.219 12.655C-.315 13.62.267 15 1.313 15h13.156c.982 0 1.903-1.16 1.219-2.344L9.375 1.125C8.976.479 8.432.122 7.906.094zM7.97 4.03c.544-.017 1.048.487 1.031 1.032V9c.007.528-.471 1-1 1-.528 0-1.007-.472-1-1V5.062a1.033 1.033 0 01.813-1 1 1 0 01.156-.03zM8 11a1 1 0 110 2 1 1 0 010-2z" style="marker:none" color="#bebebe" overflow="visible" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/media-playlist-repeat-symbolic.svg b/gtk/icons/scalable/status/media-playlist-repeat-symbolic.svg
index 72ef3f3f8d..851f89f043 100644
--- a/gtk/icons/scalable/status/media-playlist-repeat-symbolic.svg
+++ b/gtk/icons/scalable/status/media-playlist-repeat-symbolic.svg
@@ -1,7 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g color="#000" fill="#474747">
- <path d="M9.98 8.99a1 1 0 0 0-.687.303L6.586 12l2.707 2.707a1 1 0 1 0 1.414-1.414L9.414 12l1.293-1.293a1 1 0 0 0-.726-1.717z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M4 3C2.356 3 1 4.355 1 6v4c0 1.645 1.356 3 3 3h1v-2H4c-.571 0-1-.429-1-1V6c0-.571.429-1 1-1h8c.572 0 1 .429 1 1v4c0 .571-.428 1-1 1H8v2h4c1.645 0 3-1.355 3-3V6c0-1.645-1.355-3-3-3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/>
- <path d="M10 9h1v1h-1zM10 14h1v1h-1z" style="marker:none" overflow="visible"/>
- </g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M9.98 8.99a1 1 0 00-.687.303L6.586 12l2.707 2.707a1 1 0 101.414-1.414L9.414 12l1.293-1.293a1 1 0 00-.726-1.717z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M4 3C2.356 3 1 4.355 1 6v4c0 1.645 1.356 3 3 3h1v-2H4c-.571 0-1-.429-1-1V6c0-.571.429-1 1-1h8c.572 0 1 .429 1 1v4c0 .571-.428 1-1 1H8v2h4c1.645 0 3-1.355 3-3V6c0-1.645-1.355-3-3-3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M10 9h1v1h-1zm0 5h1v1h-1z" style="marker:none" overflow="visible"/></g></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/orientation-landscape-inverse-symbolic.svg b/gtk/icons/scalable/status/orientation-landscape-inverse-symbolic.svg
index df2dd873e1..3e6f9b6a71 100644
--- a/gtk/icons/scalable/status/orientation-landscape-inverse-symbolic.svg
+++ b/gtk/icons/scalable/status/orientation-landscape-inverse-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M2.127 13.08a1.11 1.11 0 0 1-1.113-1.113V4.122a1.11 1.11 0 0 1 1.113-1.114h11.738a1.11 1.11 0 0 1 1.113 1.114v7.845a1.11 1.11 0 0 1-1.113 1.114zm5.842-3l4-4.04h-8z" style="marker:none" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M2.127 13.08a1.11 1.11 0 01-1.113-1.113V4.122a1.11 1.11 0 011.113-1.114h11.738a1.11 1.11 0 011.113 1.114v7.845a1.11 1.11 0 01-1.113 1.114zm5.842-3l4-4.04h-8z" style="marker:none" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/icons/scalable/status/orientation-landscape-symbolic.svg b/gtk/icons/scalable/status/orientation-landscape-symbolic.svg
index eb8e1f9da0..9bc1f168c9 100644
--- a/gtk/icons/scalable/status/orientation-landscape-symbolic.svg
+++ b/gtk/icons/scalable/status/orientation-landscape-symbolic.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path d="M2.127 3.04a1.11 1.11 0 0 0-1.113 1.113v7.846a1.11 1.11 0 0 0 1.113 1.113h11.738a1.11 1.11 0 0 0 1.113-1.113V4.153a1.11 1.11 0 0 0-1.113-1.113zm5.842 3l4 4h-8z" style="marker:none" fill="#474747"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M2.127 3.04a1.11 1.11 0 00-1.113 1.113v7.846a1.11 1.11 0 001.113 1.113h11.738a1.11 1.11 0 001.113-1.113V4.153a1.11 1.11 0 00-1.113-1.113zm5.842 3l4 4h-8z" style="marker:none" fill="#474747"/></svg> \ No newline at end of file
diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c
index a2066a2d96..8d1fc9f44c 100644
--- a/gtk/inspector/general.c
+++ b/gtk/inspector/general.c
@@ -87,7 +87,10 @@ struct _GtkInspectorGeneral
GtkWidget *pango_fontmap;
GtkWidget *media_backend;
GtkWidget *gl_version;
+ GtkWidget *gl_error;
+ GtkWidget *gl_error_row;
GtkWidget *gl_vendor;
+ GtkWidget *gl_vendor_row;
GtkWidget *vk_device;
GtkWidget *vk_api_version;
GtkWidget *vk_driver_version;
@@ -298,6 +301,17 @@ get_egl_display (GdkDisplay *display)
static void
init_gl (GtkInspectorGeneral *gen)
{
+ GError *error = NULL;
+
+ if (!gdk_display_prepare_gl (gen->display, &error))
+ {
+ gtk_label_set_text (GTK_LABEL (gen->gl_version), C_("GL version", "None"));
+ gtk_widget_set_visible (gen->gl_vendor_row, FALSE);
+ gtk_widget_set_visible (gen->gl_error_row, TRUE);
+ gtk_label_set_text (GTK_LABEL (gen->gl_error), error->message);
+ g_error_free (error);
+ }
+
if (gdk_display_get_debug_flags (gen->display) & GDK_DEBUG_GL_DISABLE)
{
gtk_label_set_text (GTK_LABEL (gen->gl_version), C_("GL version", "Disabled"));
@@ -1053,7 +1067,10 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, pango_fontmap);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, media_backend);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_version);
+ gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_error);
+ gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_error_row);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_vendor);
+ gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_vendor_row);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_device);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_api_version);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_driver_version);
diff --git a/gtk/inspector/general.ui b/gtk/inspector/general.ui
index 86cda44b82..e9aeb49a69 100644
--- a/gtk/inspector/general.ui
+++ b/gtk/inspector/general.ui
@@ -499,7 +499,30 @@
</object>
</child>
<child>
- <object class="GtkListBoxRow">
+ <object class="GtkListBoxRow" id="gl_error_row">
+ <property name="activatable">0</property>
+ <property name="visible">0</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel" id="gl_error">
+ <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>
+ <style>
+ <class name="error"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="gl_vendor_row">
<property name="activatable">0</property>
<child>
<object class="GtkBox">
diff --git a/gtk/meson.build b/gtk/meson.build
index 4a16e2808f..18fbe6ac61 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -114,6 +114,7 @@ gtk_private_sources = files([
'gtkiconcache.c',
'gtkiconcachevalidator.c',
'gtkiconhelper.c',
+ 'gtkjoinedmenu.c',
'gtkkineticscrolling.c',
'gtkmagnifier.c',
'gtkmenusectionbox.c',
@@ -122,7 +123,6 @@ gtk_private_sources = files([
'gtkpanedhandle.c',
'gtkpango.c',
'gskpango.c',
- 'gtkpasswordentrybuffer.c',
'gtkpathbar.c',
'gtkplacessidebar.c',
'gtkplacesview.c',
@@ -324,6 +324,7 @@ gtk_public_sources = files([
'gtkpaned.c',
'gtkpapersize.c',
'gtkpasswordentry.c',
+ 'gtkpasswordentrybuffer.c',
'gtkpicture.c',
'gtkpopover.c',
'gtkpopovermenu.c',
@@ -838,23 +839,25 @@ gtk_gresources_xml = configure_file(output: 'gtk.gresources.xml',
],
)
-# Build the theme files
-sassc = find_program('sassc', required: false)
-if not sassc.found() and not get_option('sassc').disabled()
- subproject('sassc')
- sassc = find_program('sassc', required: get_option('sassc').enabled())
-endif
+theme_deps = []
+# For git checkouts, but not for tarballs...
+if not fs.exists('theme/Adwaita/Adwaita.css')
+ # ... build the theme files
+ sassc = find_program('sassc', required: false)
+ if not sassc.found()
+ subproject('sassc')
+ sassc = find_program('sassc', required: true)
+ endif
-if sassc.found()
- sassc_opts = [ '-a', '-M', '-t', 'compact' ]
+ if sassc.found()
+ sassc_opts = [ '-a', '-M', '-t', 'compact' ]
- subdir('theme/Default')
+ subdir('theme/Default')
- theme_deps = [
- default_theme_deps,
- ]
-else
- theme_deps = []
+ theme_deps += [
+ default_theme_deps,
+ ]
+ endif
endif
gtkresources = gnome.compile_resources('gtkresources',
diff --git a/meson.build b/meson.build
index 2071ec73f3..5a19806e55 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('gtk', 'c',
- version: '4.3.1',
+ version: '4.3.2',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
@@ -8,7 +8,7 @@ project('gtk', 'c',
'c_std=gnu99',
],
meson_version : '>= 0.55',
- license: 'LGPLv2.1+')
+ license: 'LGPL-2.1-or-later')
glib_req = '>= 2.66.0'
pango_req = '>= 1.47.0' # keep this in sync with .gitlab-ci/test-msys.sh
@@ -24,6 +24,7 @@ cloudproviders_req = '>= 0.3.1'
xkbcommon_req = '>= 0.2.0'
sysprof_req = '>= 3.38.0'
+fs = import('fs')
gnome = import('gnome')
pkg_config = import('pkgconfig')
@@ -406,6 +407,9 @@ iso_codes_dep = dependency('iso-codes', required: false)
gidocgen_dep = dependency('gi-docgen', version: '>= 2021.1',
fallback: ['gi-docgen', 'dummy_dep'],
required: get_option('gtk_doc'))
+gi_dep = dependency('gobject-introspection-1.0', version: introspection_req,
+ required: get_option('introspection').enabled() and
+ get_option('build-tests'))
fontconfig_dep = [] # only used in x11 backend
@@ -493,46 +497,34 @@ if x11_enabled
xrender_dep = dependency('xrender')
xi_dep = dependency('xi')
xext_dep = dependency('xext')
- xcursor_dep = dependency('xcursor', required: false)
- xdamage_dep = dependency('xdamage', required: false)
- xfixes_dep = dependency('xfixes', required: false)
- xcomposite_dep = dependency('xcomposite', required: false)
+ xcursor_dep = dependency('xcursor')
+ xdamage_dep = dependency('xdamage')
+ xfixes_dep = dependency('xfixes')
fontconfig_dep = dependency('fontconfig')
- x11_pkgs = ['fontconfig', 'x11', 'xext', 'xi', 'xrandr']
+ x11_pkgs = ['fontconfig', 'x11', 'xext', 'xi', 'xrandr', 'xcursor', 'xdamage', 'xfixes', 'xinerama']
- if xcursor_dep.found()
- x11_pkgs += ['xcursor']
- endif
- if xdamage_dep.found()
- x11_pkgs += ['xdamage']
- endif
- if xfixes_dep.found()
- x11_pkgs += ['xfixes']
- endif
- if xcomposite_dep.found()
- x11_pkgs += ['xcomposite']
- endif
+ cdata.set('HAVE_XCURSOR', 1)
+ cdata.set('HAVE_XDAMAGE', 1)
+ cdata.set('HAVE_XFIXES', 1)
- cdata.set('HAVE_XCURSOR', xcursor_dep.found())
- cdata.set('HAVE_XDAMAGE', xdamage_dep.found())
- cdata.set('HAVE_XCOMPOSITE', xcomposite_dep.found())
- cdata.set('HAVE_XFIXES', xfixes_dep.found())
-
- if cc.has_function('XkbQueryExtension', dependencies: x11_dep,
- prefix : '#include <X11/XKBlib.h>')
- cdata.set('HAVE_XKB', 1)
+ if not cc.has_function('XkbQueryExtension', dependencies: x11_dep,
+ prefix : '#include <X11/XKBlib.h>')
+ error('X11 backend enabled, but Xkb not found.')
endif
+ cdata.set('HAVE_XKB', 1)
- if cc.has_function('XSyncQueryExtension', dependencies: xext_dep,
- prefix: '''#include <X11/Xlib.h>
- #include <X11/extensions/sync.h>''')
- cdata.set('HAVE_XSYNC', 1)
+ if not cc.has_function('XSyncQueryExtension', dependencies: xext_dep,
+ prefix: '''#include <X11/Xlib.h>
+ #include <X11/extensions/sync.h>''')
+ error('X11 backend enabled, but Xsync not found.')
endif
+ cdata.set('HAVE_XSYNC', 1)
- if cc.has_function('XGetEventData', dependencies: x11_dep)
- cdata.set('HAVE_XGENERICEVENTS', 1)
+ if not cc.has_function('XGetEventData', dependencies: x11_dep)
+ error('X11 backend enabled, but no generic event support.')
endif
+ cdata.set('HAVE_XGENERICEVENTS', 1)
if not xi_dep.found() or not cc.has_header('X11/extensions/XInput2.h', dependencies: xi_dep)
error('X11 backend enabled, but XInput2 not found.')
@@ -545,15 +537,16 @@ if x11_enabled
has_scroll_class_info = cc.has_member('XIScrollClassInfo', 'number', dependencies: xi_dep,
prefix: '''#include <X11/Xlib.h>
#include <X11/extensions/XInput2.h>''')
- if has_allow_touch_events and has_scroll_class_info
- cdata.set('XINPUT_2_2', 1)
+ if not has_allow_touch_events or not has_scroll_class_info
+ error('X11 backend enabled, but XInput2.2 not found.')
endif
+ cdata.set('XINPUT_2_2', 1)
- xinerama_dep = dependency('xinerama', required: get_option('xinerama'))
- if xinerama_dep.found() and cc.has_header_symbol('X11/extensions/Xinerama.h', 'XineramaQueryExtension', dependencies: xinerama_dep)
- cdata.set('HAVE_XFREE_XINERAMA', 1)
- x11_pkgs += ['xinerama']
+ xinerama_dep = dependency('xinerama')
+ if not cc.has_header_symbol('X11/extensions/Xinerama.h', 'XineramaQueryExtension', dependencies: xinerama_dep)
+ error('X11 backend enabled, but Xinerama extension does not work.')
endif
+ cdata.set('HAVE_XFREE_XINERAMA', 1)
cdata.set('HAVE_RANDR', xrandr_dep.found())
cdata.set('HAVE_RANDR15', xrandr15_dep.found())
@@ -740,11 +733,11 @@ subdir('gtk/css')
subdir('gdk')
subdir('gsk')
subdir('gtk')
-subdir('tools')
subdir('modules')
if get_option('demos')
subdir('demos')
endif
+subdir('tools')
if get_option('build-tests')
subdir('tests')
subdir('testsuite')
diff --git a/meson_options.txt b/meson_options.txt
index 402caec5fb..61878ceba4 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -26,15 +26,17 @@ option('macos-backend',
description : 'Enable the macOS gdk backend (only when building on macOS)')
# Media backends
+# For distros: GTK guarantees support for WebM video (VP8 and VP9), so a supported build
+# should provide that.
option('media-ffmpeg',
type: 'feature',
- value: 'auto',
- description : 'Build the ffmpeg media backend')
+ value: 'disabled',
+ description : 'Build the experimental ffmpeg media backend')
option('media-gstreamer',
type: 'feature',
- value: 'auto',
+ value: 'enabled',
description : 'Build the gstreamer media backend')
# Print backends
@@ -48,13 +50,8 @@ option('print-cups',
option('vulkan',
type: 'feature',
- value: 'auto',
- description : 'Enable support for the Vulkan graphics API')
-
-option('xinerama',
- type: 'feature',
- value: 'auto',
- description : 'Enable support for the X11 Xinerama extension')
+ value: 'disabled',
+ description : 'Enable support for the experimental Vulkan graphics API')
option('cloudproviders',
type: 'feature',
@@ -76,11 +73,6 @@ option('colord',
value: 'disabled',
description : 'Build colord support for the CUPS printing backend')
-option('sassc',
- type: 'feature',
- value: 'auto',
- description: 'Rebuild themes using sassc')
-
option('f16c',
type: 'feature',
value: 'enabled',
diff --git a/po-properties/POTFILES.in b/po-properties/POTFILES.in
index dbba25451d..73ca3627d7 100644
--- a/po-properties/POTFILES.in
+++ b/po-properties/POTFILES.in
@@ -33,6 +33,8 @@ gdk/win32/gdkclipdrop-win32.c
gdk/win32/gdkcursor-win32.c
gdk/win32/gdkdrop-win32.c
gdk/win32/gdkglcontext-win32.c
+gdk/win32/gdkglcontext-win32-egl.c
+gdk/win32/gdkglcontext-win32-wgl.c
gdk/win32/gdkhdataoutputstream-win32.c
gdk/win32/gdkmain-win32.c
gdk/x11/gdkapplaunchcontext-x11.c
diff --git a/po-properties/pt_BR.po b/po-properties/pt_BR.po
index ed634db055..249e4cade5 100644
--- a/po-properties/pt_BR.po
+++ b/po-properties/pt_BR.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+-properties\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
-"POT-Creation-Date: 2021-01-30 16:02+0000\n"
-"PO-Revision-Date: 2021-01-30 16:14-0300\n"
+"POT-Creation-Date: 2021-07-10 17:15+0000\n"
+"PO-Revision-Date: 2021-07-10 16:28-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
@@ -29,108 +29,108 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"X-Generator: Gtranslator 3.38.0\n"
+"X-Generator: Gtranslator 40.0\n"
-#: gdk/gdkapplaunchcontext.c:133 gdk/gdkdrawcontext.c:155 gdk/gdkseat.c:201
-#: gdk/gdkseat.c:202 gdk/gdksurface.c:522 gdk/gdksurface.c:523
-#: gdk/win32/gdkcursor-win32.c:234 gtk/gtkicontheme.c:993
-#: gtk/gtkicontheme.c:994 gtk/gtkmountoperation.c:191 gtk/gtkstylecontext.c:144
-#: gtk/gtkwindow.c:815
+#: gdk/gdkapplaunchcontext.c:130 gdk/gdkdrawcontext.c:148 gdk/gdkseat.c:189
+#: gdk/gdkseat.c:190 gdk/gdksurface.c:510 gdk/gdksurface.c:511
+#: gdk/win32/gdkcursor-win32.c:235 gtk/gtkicontheme.c:991
+#: gtk/gtkicontheme.c:992 gtk/gtkmountoperation.c:199 gtk/gtkstylecontext.c:139
+#: gtk/gtkwindow.c:898
msgid "Display"
msgstr "Tela"
-#: gdk/gdkcursor.c:183 gtk/gtktexttag.c:616
+#: gdk/gdkcursor.c:180 gtk/gtktexttag.c:771
msgid "Fallback"
msgstr "Alternativa"
-#: gdk/gdkcursor.c:184
+#: gdk/gdkcursor.c:181
msgid "Cursor image to fall back to if this cursor cannot be displayed"
msgstr ""
"Imagem do cursor para a qual retornar se este cursor não puder ser exibido"
# "ponto quente" em um gráfico
-#: gdk/gdkcursor.c:191
+#: gdk/gdkcursor.c:194
msgid "Hotspot X"
msgstr "Hotspot X"
# "ponto quente" em um gráfico
-#: gdk/gdkcursor.c:192
+#: gdk/gdkcursor.c:195
msgid "Horizontal offset of the cursor hotspot"
msgstr "Deslocamento horizontal do hotspot do cursor"
# "ponto quente" em um gráfico
-#: gdk/gdkcursor.c:199
+#: gdk/gdkcursor.c:208
msgid "Hotspot Y"
msgstr "Hotspot Y"
# "ponto quente" em um gráfico
-#: gdk/gdkcursor.c:200
+#: gdk/gdkcursor.c:209
msgid "Vertical offset of the cursor hotspot"
msgstr "Deslocamento horizontal do hotspot do cursor"
-#: gdk/gdkcursor.c:207 gtk/gtkcssnode.c:612 gtk/gtkeventcontroller.c:236
-#: gtk/gtkfilefilter.c:233 gtk/gtkprinter.c:119 gtk/gtkstack.c:411
-#: gtk/gtktextmark.c:135
+#: gdk/gdkcursor.c:224 gtk/gtkcssnode.c:612 gtk/gtkeventcontroller.c:242
+#: gtk/gtkfilefilter.c:233 gtk/gtkprinter.c:123 gtk/gtkstack.c:428
+#: gtk/gtktextmark.c:137
msgid "Name"
msgstr "Nome"
-#: gdk/gdkcursor.c:208
+#: gdk/gdkcursor.c:225
msgid "Name of this cursor"
msgstr "Nome deste cursor"
-#: gdk/gdkcursor.c:215 gtk/gtkcellrendererpixbuf.c:225
+#: gdk/gdkcursor.c:240 gtk/gtkcellrendererpixbuf.c:225
msgid "Texture"
msgstr "Textura"
-#: gdk/gdkcursor.c:216
+#: gdk/gdkcursor.c:241
msgid "The texture displayed by this cursor"
msgstr "A textura exibida próxima a este cursor"
-#: gdk/gdkdevice.c:124
+#: gdk/gdkdevice.c:114
msgid "Device Display"
msgstr "Tela do dispositivo"
-#: gdk/gdkdevice.c:125
+#: gdk/gdkdevice.c:115
msgid "Display which the device belongs to"
msgstr "Tela à qual este dispositivo pertence"
-#: gdk/gdkdevice.c:136 gdk/gdkdevice.c:137
+#: gdk/gdkdevice.c:126 gdk/gdkdevice.c:127
msgid "Device name"
msgstr "Nome do dispositivo"
-#: gdk/gdkdevice.c:149
+#: gdk/gdkdevice.c:139
msgid "Input source"
msgstr "Fonte de entrada"
-#: gdk/gdkdevice.c:150
+#: gdk/gdkdevice.c:140
msgid "Source type for the device"
msgstr "Tipo de fonte para o dispositivo"
-#: gdk/gdkdevice.c:163
+#: gdk/gdkdevice.c:153
msgid "Whether the device has a cursor"
msgstr "Se o dispositivo possui um cursor"
-#: gdk/gdkdevice.c:164
+#: gdk/gdkdevice.c:154
msgid "Whether there is a visible cursor following device motion"
msgstr "Se há um cursor visível acompanhando o movimento do dispositivo"
-#: gdk/gdkdevice.c:176 gdk/gdkdevice.c:177
+#: gdk/gdkdevice.c:166 gdk/gdkdevice.c:167
msgid "Number of axes in the device"
msgstr "O número de eixos no dispositivo"
-#: gdk/gdkdevice.c:189 gdk/gdkdevice.c:190
+#: gdk/gdkdevice.c:181 gdk/gdkdevice.c:182
msgid "Vendor ID"
msgstr "ID do fabricante"
-#: gdk/gdkdevice.c:202 gdk/gdkdevice.c:203
+#: gdk/gdkdevice.c:196 gdk/gdkdevice.c:197
msgid "Product ID"
msgstr "ID do produto"
-#: gdk/gdkdevice.c:215 gdk/gdkdevice.c:216
+#: gdk/gdkdevice.c:209 gdk/gdkdevice.c:210
msgid "Seat"
msgstr "Estação"
-#: gdk/gdkdevice.c:230 gdk/gdkdevice.c:231
+#: gdk/gdkdevice.c:225 gdk/gdkdevice.c:226
msgid "Number of concurrent touches"
msgstr "Número de toques simultâneos"
@@ -142,137 +142,137 @@ msgstr "Ferramenta"
msgid "The tool that is currently used with this device"
msgstr "A ferramenta que está atualmente sendo usada por este dispositivo"
-#: gdk/gdkdevice.c:246 gtk/gtkmenubutton.c:390 gtk/gtkshortcutsshortcut.c:687
+#: gdk/gdkdevice.c:253 gtk/gtkmenubutton.c:369 gtk/gtkshortcutsshortcut.c:699
msgid "Direction"
msgstr "Direção"
-#: gdk/gdkdevice.c:247
+#: gdk/gdkdevice.c:254
msgid "The direction of the current layout of the keyboard"
msgstr "A direção do layout atual do teclado"
# BiDi = bidirecional -- Rafael
-#: gdk/gdkdevice.c:253
+#: gdk/gdkdevice.c:267
msgid "Has bidi layouts"
msgstr "Tem layouts bidi"
-#: gdk/gdkdevice.c:254
+#: gdk/gdkdevice.c:268
msgid "Whether the keyboard has bidi layouts"
msgstr "Se o teclado tem layouts bidirecionais"
-#: gdk/gdkdevice.c:260
+#: gdk/gdkdevice.c:281
msgid "Caps lock state"
msgstr "Estado de caps lock"
-#: gdk/gdkdevice.c:261
+#: gdk/gdkdevice.c:282
msgid "Whether the keyboard caps lock is on"
msgstr "Se o caps lock do teclado está ligado"
-#: gdk/gdkdevice.c:267
+#: gdk/gdkdevice.c:295
msgid "Num lock state"
msgstr "Estado do num lock"
-#: gdk/gdkdevice.c:268
+#: gdk/gdkdevice.c:296
msgid "Whether the keyboard num lock is on"
msgstr "Se o num lock do teclado está ligado"
-#: gdk/gdkdevice.c:274
+#: gdk/gdkdevice.c:309
msgid "Scroll lock state"
msgstr "Estado do scroll lock"
-#: gdk/gdkdevice.c:275
+#: gdk/gdkdevice.c:310
msgid "Whether the keyboard scroll lock is on"
msgstr "Se o scroll lock do teclado está ligado"
-#: gdk/gdkdevice.c:281
+#: gdk/gdkdevice.c:323
msgid "Modifier state"
msgstr "Estado modificador"
-#: gdk/gdkdevice.c:282
+#: gdk/gdkdevice.c:324
msgid "The modifier state of the keyboard"
msgstr "O estado modificador do teclado"
-#: gdk/gdkdisplay.c:165 gdk/gdkdisplay.c:166
+#: gdk/gdkdisplay.c:158 gdk/gdkdisplay.c:159
msgid "Composited"
msgstr "Composto"
-#: gdk/gdkdisplay.c:178 gdk/gdkdisplay.c:179
+#: gdk/gdkdisplay.c:170 gdk/gdkdisplay.c:171
msgid "RGBA"
msgstr "RGBA"
-#: gdk/gdkdisplay.c:191 gdk/gdkdisplay.c:192
+#: gdk/gdkdisplay.c:182 gdk/gdkdisplay.c:183
msgid "Input shapes"
msgstr "Formas de entrada"
-#: gdk/gdkdisplaymanager.c:161
+#: gdk/gdkdisplaymanager.c:160
msgid "Default Display"
msgstr "Tela padrão"
-#: gdk/gdkdisplaymanager.c:162
+#: gdk/gdkdisplaymanager.c:161
msgid "The default display for GDK"
msgstr "A tela padrão para o GDK"
-#: gdk/gdkdrawcontext.c:156
+#: gdk/gdkdrawcontext.c:149
msgid "The GDK display used to create the context"
msgstr "A janela GDK usada para criar o contexto"
-#: gdk/gdkdrawcontext.c:168
+#: gdk/gdkdrawcontext.c:161
msgid "Surface"
msgstr "Superfície"
-#: gdk/gdkdrawcontext.c:169
+#: gdk/gdkdrawcontext.c:162
msgid "The GDK surface bound to the context"
msgstr "A superfície GDK vinculada ao contexto"
-#: gdk/gdkglcontext.c:426
+#: gdk/gdkglcontext.c:421
msgid "Shared context"
msgstr "Contexto compartilhado"
-#: gdk/gdkglcontext.c:427
+#: gdk/gdkglcontext.c:422
msgid "The GL context this context shares data with"
msgstr "O contexto GL com o qual este contexto compartilha dados"
-#: gdk/gdkpopup.c:85 gtk/gtkmountoperation.c:175
+#: gdk/gdkpopup.c:89 gtk/gtkmountoperation.c:173
msgid "Parent"
msgstr "Pai"
-#: gdk/gdkpopup.c:86
+#: gdk/gdkpopup.c:90
msgid "The parent surface"
msgstr "A superfície do pai"
-#: gdk/gdkpopup.c:91 gtk/gtkpopover.c:1678
+#: gdk/gdkpopup.c:101 gtk/gtkpopover.c:1778
msgid "Autohide"
msgstr "Ocultar automaticamente"
-#: gdk/gdkpopup.c:92
+#: gdk/gdkpopup.c:102
msgid "Whether to hide on outside clicks"
msgstr "Se deve ocultar em cliques fora"
-#: gdk/gdksurface.c:509 gdk/gdksurface.c:510 gtk/gtkwidget.c:1339
+#: gdk/gdksurface.c:498 gdk/gdksurface.c:499 gtk/gtkwidget.c:1402
msgid "Cursor"
msgstr "Cursor"
-#: gdk/gdksurface.c:529 gdk/gdksurface.c:530
+#: gdk/gdksurface.c:522 gdk/gdksurface.c:523
msgid "Frame Clock"
msgstr "Relógio de quadros"
-#: gdk/gdksurface.c:536 gdk/gdksurface.c:537
+#: gdk/gdksurface.c:534 gdk/gdksurface.c:535
msgid "Mapped"
msgstr "Mapeada"
-#: gdk/gdksurface.c:543 gdk/gdksurface.c:544 gtk/gtktreeviewcolumn.c:300
+#: gdk/gdksurface.c:546 gdk/gdksurface.c:547 gtk/gtktreeviewcolumn.c:298
msgid "Width"
msgstr "Largura"
-#: gdk/gdksurface.c:550 gdk/gdksurface.c:551 gtk/gtkshortcutsgroup.c:333
+#: gdk/gdksurface.c:558 gdk/gdksurface.c:559 gtk/gtkshortcutsgroup.c:334
msgid "Height"
msgstr "Altura"
-#: gdk/gdksurface.c:557 gdk/gdksurface.c:558 gtk/gtkwidget.c:1585
+#: gdk/gdksurface.c:570 gdk/gdksurface.c:571 gtk/gtkwidget.c:1654
msgid "Scale factor"
msgstr "Fator de escala"
-#: gdk/gdktoplevel.c:124 gdk/gdktoplevel.c:125 gtk/gtkcssnode.c:617
-#: gtk/gtkswitch.c:541
+#: gdk/gdktoplevel.c:125 gdk/gdktoplevel.c:126 gtk/gtkcssnode.c:617
+#: gtk/gtkswitch.c:536
msgid "State"
msgstr "Estado"
@@ -280,23 +280,23 @@ msgstr "Estado"
msgid "Drag Surface"
msgstr "Arrastar superfície"
-#: gdk/win32/gdkcursor-win32.c:235
+#: gdk/win32/gdkcursor-win32.c:236
msgid "The display that will use this cursor"
msgstr "A tela que vai usar este cursor"
-#: gdk/win32/gdkcursor-win32.c:241
+#: gdk/win32/gdkcursor-win32.c:242
msgid "Handle"
msgstr "Alça"
-#: gdk/win32/gdkcursor-win32.c:242
+#: gdk/win32/gdkcursor-win32.c:243
msgid "The HCURSOR handle for this cursor"
msgstr "A alça HCURSOR para este cursor"
-#: gdk/win32/gdkcursor-win32.c:247
+#: gdk/win32/gdkcursor-win32.c:248
msgid "Destroyable"
msgstr "Destruível"
-#: gdk/win32/gdkcursor-win32.c:248
+#: gdk/win32/gdkcursor-win32.c:249
msgid "Whether calling DestroyCursor() is allowed on this cursor"
msgstr "Se chamar DestroyCursor() é permitido neste cursor"
@@ -324,226 +324,226 @@ msgstr "Menor"
msgid "Minor version number"
msgstr "Número de versão menor"
-#: gdk/x11/gdkdevice-xi2.c:118
+#: gdk/x11/gdkdevice-xi2.c:120
msgid "Device ID"
msgstr "ID do dispositivo"
-#: gdk/x11/gdkdevice-xi2.c:119
+#: gdk/x11/gdkdevice-xi2.c:121
msgid "Device identifier"
msgstr "Identificador do dispositivo"
-#: gtk/gtkaboutdialog.c:375
+#: gtk/gtkaboutdialog.c:381
msgid "Program name"
msgstr "Nome do programa"
-#: gtk/gtkaboutdialog.c:376
+#: gtk/gtkaboutdialog.c:382
msgid ""
"The name of the program. If this is not set, it defaults to "
"g_get_application_name()"
msgstr ""
"O nome do programa. Se não definido, o padrão é g_get_application_name()"
-#: gtk/gtkaboutdialog.c:387
+#: gtk/gtkaboutdialog.c:393
msgid "Program version"
msgstr "Versão do programa"
-#: gtk/gtkaboutdialog.c:388
+#: gtk/gtkaboutdialog.c:394
msgid "The version of the program"
msgstr "A versão do programa"
-#: gtk/gtkaboutdialog.c:399
+#: gtk/gtkaboutdialog.c:405
msgid "Copyright string"
msgstr "Texto de copyright"
-#: gtk/gtkaboutdialog.c:400
+#: gtk/gtkaboutdialog.c:406
msgid "Copyright information for the program"
msgstr "Informações de copyright do programa"
-#: gtk/gtkaboutdialog.c:413
+#: gtk/gtkaboutdialog.c:421
msgid "Comments string"
msgstr "Texto de comentários"
-#: gtk/gtkaboutdialog.c:414
+#: gtk/gtkaboutdialog.c:422
msgid "Comments about the program"
msgstr "Comentários sobre o programa"
-#: gtk/gtkaboutdialog.c:436
+#: gtk/gtkaboutdialog.c:446
msgid "License"
msgstr "Licença"
-#: gtk/gtkaboutdialog.c:437
+#: gtk/gtkaboutdialog.c:447
msgid "The license of the program"
msgstr "A licença do programa"
-#: gtk/gtkaboutdialog.c:455
+#: gtk/gtkaboutdialog.c:466
msgid "System Information"
msgstr "Informações do sistema"
-#: gtk/gtkaboutdialog.c:456
+#: gtk/gtkaboutdialog.c:467
msgid "Information about the system on which the program is running"
msgstr "Informações sobre o sistema no qual o programa está sendo executado"
-#: gtk/gtkaboutdialog.c:481
+#: gtk/gtkaboutdialog.c:492
msgid "License Type"
msgstr "Tipo de licença"
-#: gtk/gtkaboutdialog.c:482
+#: gtk/gtkaboutdialog.c:493
msgid "The license type of the program"
msgstr "O tipo da licença do programa"
-#: gtk/gtkaboutdialog.c:495
+#: gtk/gtkaboutdialog.c:507
msgid "Website URL"
msgstr "URL do site"
-#: gtk/gtkaboutdialog.c:496
+#: gtk/gtkaboutdialog.c:508
msgid "The URL for the link to the website of the program"
msgstr "A URL para o link do site do programa"
-#: gtk/gtkaboutdialog.c:507
+#: gtk/gtkaboutdialog.c:519
msgid "Website label"
msgstr "Rótulo do site"
-#: gtk/gtkaboutdialog.c:508
+#: gtk/gtkaboutdialog.c:520
msgid "The label for the link to the website of the program"
msgstr "O rótulo para o link do site do programa"
-#: gtk/gtkaboutdialog.c:521
+#: gtk/gtkaboutdialog.c:534
msgid "Authors"
msgstr "Autores"
-#: gtk/gtkaboutdialog.c:522
+#: gtk/gtkaboutdialog.c:535
msgid "List of authors of the program"
msgstr "A lista dos autores do programa"
-#: gtk/gtkaboutdialog.c:535
+#: gtk/gtkaboutdialog.c:549
msgid "Documenters"
msgstr "Documentadores"
-#: gtk/gtkaboutdialog.c:536
+#: gtk/gtkaboutdialog.c:550
msgid "List of people documenting the program"
msgstr "Lista das pessoas que estão documentando o programa"
-#: gtk/gtkaboutdialog.c:549
+#: gtk/gtkaboutdialog.c:565
msgid "Artists"
msgstr "Artistas"
-#: gtk/gtkaboutdialog.c:550
+#: gtk/gtkaboutdialog.c:566
msgid "List of people who have contributed artwork to the program"
msgstr ""
"Lista das pessoas que têm contribuído com trabalhos artísticos para o "
"programa"
-#: gtk/gtkaboutdialog.c:563
+#: gtk/gtkaboutdialog.c:582
msgid "Translator credits"
msgstr "Créditos dos tradutores"
-#: gtk/gtkaboutdialog.c:564
+#: gtk/gtkaboutdialog.c:583
msgid ""
"Credits to the translators. This string should be marked as translatable"
msgstr "Créditos aos tradutores. Este texto deve ser definido como traduzível"
-#: gtk/gtkaboutdialog.c:576
+#: gtk/gtkaboutdialog.c:597
msgid "Logo"
msgstr "Logotipo"
-#: gtk/gtkaboutdialog.c:577
+#: gtk/gtkaboutdialog.c:598
msgid "A logo for the about box."
msgstr "Um logotipo para a caixa “Sobre”."
-#: gtk/gtkaboutdialog.c:589
+#: gtk/gtkaboutdialog.c:611
msgid "Logo Icon Name"
msgstr "Nome do ícone de logo"
-#: gtk/gtkaboutdialog.c:590
+#: gtk/gtkaboutdialog.c:612
msgid "A named icon to use as the logo for the about box."
msgstr "Um ícone nomeado para ser usado como o logotipo da caixa “Sobre”."
-#: gtk/gtkaboutdialog.c:601
+#: gtk/gtkaboutdialog.c:623
msgid "Wrap license"
msgstr "Quebrar texto da licença"
-#: gtk/gtkaboutdialog.c:602
+#: gtk/gtkaboutdialog.c:624
msgid "Whether to wrap the license text."
msgstr "Se deve quebrar as linhas do texto da licença."
-#: gtk/gtkactionable.c:69
+#: gtk/gtkactionable.c:61
msgid "Action name"
msgstr "Nome da ação"
-#: gtk/gtkactionable.c:70
+#: gtk/gtkactionable.c:62
msgid "The name of the associated action, like “app.quit”"
msgstr "O nome da ação associada, exemplo “app.quit”"
-#: gtk/gtkactionable.c:74
+#: gtk/gtkactionable.c:66
msgid "Action target value"
msgstr "Valor alvo da ação"
-#: gtk/gtkactionable.c:75
+#: gtk/gtkactionable.c:67
msgid "The parameter for action invocations"
msgstr "O parâmetro para as invocações da ação"
-#: gtk/gtkactionbar.c:154 gtk/gtkinfobar.c:377
+#: gtk/gtkactionbar.c:159 gtk/gtkinfobar.c:381
msgid "Reveal"
msgstr "Revelar"
-#: gtk/gtkactionbar.c:155
+#: gtk/gtkactionbar.c:160
msgid "Controls whether the action bar shows its contents or not"
msgstr "Controla se a barra de ação mostra seu conteúdo"
-#: gtk/gtkadjustment.c:139 gtk/gtkcellrendererprogress.c:621
-#: gtk/gtkdroptarget.c:686 gtk/gtkscalebutton.c:204 gtk/gtkspinbutton.c:421
+#: gtk/gtkadjustment.c:141 gtk/gtkcellrendererprogress.c:621
+#: gtk/gtkdroptarget.c:690 gtk/gtkscalebutton.c:197 gtk/gtkspinbutton.c:462
msgid "Value"
msgstr "Valor"
-#: gtk/gtkadjustment.c:140
+#: gtk/gtkadjustment.c:142
msgid "The value of the adjustment"
msgstr "O valor do ajustamento"
-#: gtk/gtkadjustment.c:152
+#: gtk/gtkadjustment.c:154
msgid "Minimum Value"
msgstr "Valor mínimo"
-#: gtk/gtkadjustment.c:153
+#: gtk/gtkadjustment.c:155
msgid "The minimum value of the adjustment"
msgstr "O valor mínimo do ajustamento"
-#: gtk/gtkadjustment.c:168
+#: gtk/gtkadjustment.c:170
msgid "Maximum Value"
msgstr "Valor máximo"
-#: gtk/gtkadjustment.c:169
+#: gtk/gtkadjustment.c:171
msgid "The maximum value of the adjustment"
msgstr "O valor máximo do ajustamento"
-#: gtk/gtkadjustment.c:181
+#: gtk/gtkadjustment.c:183
msgid "Step Increment"
msgstr "Incremento do passo"
-#: gtk/gtkadjustment.c:182
+#: gtk/gtkadjustment.c:184
msgid "The step increment of the adjustment"
msgstr "O incremento de passo do ajustamento"
-#: gtk/gtkadjustment.c:194
+#: gtk/gtkadjustment.c:196
msgid "Page Increment"
msgstr "Incremento de página"
-#: gtk/gtkadjustment.c:195
+#: gtk/gtkadjustment.c:197
msgid "The page increment of the adjustment"
msgstr "O incremento de página do ajustamento"
-#: gtk/gtkadjustment.c:210
+#: gtk/gtkadjustment.c:213
msgid "Page Size"
msgstr "Tamanho da página"
-#: gtk/gtkadjustment.c:211
+#: gtk/gtkadjustment.c:214
msgid "The page size of the adjustment"
msgstr "O tamanho de página do ajustamento"
-#: gtk/gtkappchooserbutton.c:678
+#: gtk/gtkappchooserbutton.c:676
msgid "Include an “Other…” item"
msgstr "Incluir um item “Outro…”"
-#: gtk/gtkappchooserbutton.c:679
+#: gtk/gtkappchooserbutton.c:677
msgid ""
"Whether the combobox should include an item that triggers a "
"GtkAppChooserDialog"
@@ -551,101 +551,101 @@ msgstr ""
"Se a caixa de combinação deve incluir um item que dispara um "
"GtkAppChooserDialog"
-#: gtk/gtkappchooserbutton.c:692
+#: gtk/gtkappchooserbutton.c:689
msgid "Show default item"
msgstr "Mostrar item padrão"
-#: gtk/gtkappchooserbutton.c:693
+#: gtk/gtkappchooserbutton.c:690
msgid "Whether the combobox should show the default application on top"
msgstr "Se a caixa de combinação deve mostrar o aplicativo padrão no topo"
-#: gtk/gtkappchooserbutton.c:705 gtk/gtkappchooserdialog.c:614
+#: gtk/gtkappchooserbutton.c:704 gtk/gtkappchooserdialog.c:617
msgid "Heading"
msgstr "Cabeçalho"
-#: gtk/gtkappchooserbutton.c:706 gtk/gtkappchooserdialog.c:615
+#: gtk/gtkappchooserbutton.c:705 gtk/gtkappchooserdialog.c:618
msgid "The text to show at the top of the dialog"
msgstr "O texto para mostrar no topo do diálogo"
-#: gtk/gtkappchooserbutton.c:712 gtk/gtkcolorbutton.c:215
-#: gtk/gtkfontbutton.c:520 gtk/gtknativedialog.c:225 gtk/gtkwindow.c:736
+#: gtk/gtkappchooserbutton.c:716 gtk/gtkcolorbutton.c:220
+#: gtk/gtkfontbutton.c:523 gtk/gtknativedialog.c:224 gtk/gtkwindow.c:792
msgid "Modal"
msgstr "Modal"
-#: gtk/gtkappchooserbutton.c:713
+#: gtk/gtkappchooserbutton.c:717
msgid "Whether the dialog should be modal"
msgstr "Se o diálogo deve ser modal"
-#: gtk/gtkappchooser.c:73
+#: gtk/gtkappchooser.c:71
msgid "Content type"
msgstr "Tipo de conteúdo"
-#: gtk/gtkappchooser.c:74
+#: gtk/gtkappchooser.c:72
msgid "The content type used by the open with object"
msgstr "O tipo de conteúdo usado para abrir o objeto"
-#: gtk/gtkappchooserdialog.c:600
+#: gtk/gtkappchooserdialog.c:602
msgid "GFile"
msgstr "GFile"
-#: gtk/gtkappchooserdialog.c:601
+#: gtk/gtkappchooserdialog.c:603
msgid "The GFile used by the app chooser dialog"
msgstr "O GFile usado pelo diálogo de seleção de aplicativos"
-#: gtk/gtkappchooserwidget.c:909
+#: gtk/gtkappchooserwidget.c:910
msgid "Show default app"
msgstr "Exibir aplicativo padrão"
-#: gtk/gtkappchooserwidget.c:910
+#: gtk/gtkappchooserwidget.c:911
msgid "Whether the widget should show the default application"
msgstr "Se o componente deve mostrar o aplicativo padrão"
-#: gtk/gtkappchooserwidget.c:924
+#: gtk/gtkappchooserwidget.c:926
msgid "Show recommended apps"
msgstr "Exibir aplicativos recomendados"
-#: gtk/gtkappchooserwidget.c:925
+#: gtk/gtkappchooserwidget.c:927
msgid "Whether the widget should show recommended applications"
msgstr "Se o componente deve mostrar os aplicativos recomendados"
-#: gtk/gtkappchooserwidget.c:939
+#: gtk/gtkappchooserwidget.c:942
msgid "Show fallback apps"
msgstr "Exibir aplicativos alternativos"
-#: gtk/gtkappchooserwidget.c:940
+#: gtk/gtkappchooserwidget.c:943
msgid "Whether the widget should show fallback applications"
msgstr ""
"Se o componente deve mostrar aplicativos alternativos em caso de falhas"
-#: gtk/gtkappchooserwidget.c:952
+#: gtk/gtkappchooserwidget.c:955
msgid "Show other apps"
msgstr "Mostrar outros aplicativos"
-#: gtk/gtkappchooserwidget.c:953
+#: gtk/gtkappchooserwidget.c:956
msgid "Whether the widget should show other applications"
msgstr "Se o componente deve mostrar outros aplicativos"
-#: gtk/gtkappchooserwidget.c:966
+#: gtk/gtkappchooserwidget.c:969
msgid "Show all apps"
msgstr "Mostrar todos os aplicativos"
-#: gtk/gtkappchooserwidget.c:967
+#: gtk/gtkappchooserwidget.c:970
msgid "Whether the widget should show all applications"
msgstr "Se o componente deve mostrar todos os aplicativos"
-#: gtk/gtkappchooserwidget.c:981
+#: gtk/gtkappchooserwidget.c:982
msgid "Widget’s default text"
msgstr "Texto padrão do componente"
-#: gtk/gtkappchooserwidget.c:982
+#: gtk/gtkappchooserwidget.c:983
msgid "The default text appearing when there are no applications"
msgstr "O texto padrão que aparece quando não há aplicativos"
-#: gtk/gtkapplication.c:602
+#: gtk/gtkapplication.c:599
msgid "Register session"
msgstr "Registrar sessão"
-#: gtk/gtkapplication.c:603
+#: gtk/gtkapplication.c:600
msgid "Register with the session manager"
msgstr "Registra junto ao gerenciador de sessão"
@@ -657,19 +657,19 @@ msgstr "Protetor de tela ativo"
msgid "Whether the screensaver is active"
msgstr "Se o protetor de tela está ativo"
-#: gtk/gtkapplication.c:625
+#: gtk/gtkapplication.c:630
msgid "Menubar"
msgstr "Barra de menu"
-#: gtk/gtkapplication.c:626
+#: gtk/gtkapplication.c:631
msgid "The GMenuModel for the menubar"
msgstr "O GMenuModel para a barra de menu"
-#: gtk/gtkapplication.c:632
+#: gtk/gtkapplication.c:642
msgid "Active window"
msgstr "Janela ativa"
-#: gtk/gtkapplication.c:633
+#: gtk/gtkapplication.c:643
msgid "The window which most recently had focus"
msgstr "A janela que recentemente estava em foco"
@@ -681,241 +681,241 @@ msgstr "Mostrar a barra de menu"
msgid "TRUE if the window should show a menubar at the top of the window"
msgstr "VERDADEIRO se a janela deve mostrar uma barra de menu no topo"
-#: gtk/gtkaspectframe.c:149 gtk/gtkwidget.c:1410
+#: gtk/gtkaspectframe.c:144 gtk/gtkwidget.c:1477
msgid "Horizontal Alignment"
msgstr "Alinhamento horizontal"
-#: gtk/gtkaspectframe.c:150
+#: gtk/gtkaspectframe.c:145
msgid "X alignment of the child"
msgstr "Alinhamento x do filho"
-#: gtk/gtkaspectframe.c:162 gtk/gtkwidget.c:1423
+#: gtk/gtkaspectframe.c:156 gtk/gtkwidget.c:1490
msgid "Vertical Alignment"
msgstr "Alinhamento vertical"
-#: gtk/gtkaspectframe.c:163
+#: gtk/gtkaspectframe.c:157
msgid "Y alignment of the child"
msgstr "Alinhamento y do filho"
-#: gtk/gtkaspectframe.c:177
+#: gtk/gtkaspectframe.c:171
msgid "Ratio"
msgstr "Proporção"
-#: gtk/gtkaspectframe.c:178
+#: gtk/gtkaspectframe.c:172
msgid "Aspect ratio if obey_child is FALSE"
msgstr "Proporção de tela se “Obedecer ao filho” for FALSO"
-#: gtk/gtkaspectframe.c:190
+#: gtk/gtkaspectframe.c:183
msgid "Obey child"
msgstr "Obedecer ao filho"
-#: gtk/gtkaspectframe.c:191
+#: gtk/gtkaspectframe.c:184
msgid "Force aspect ratio to match that of the frame’s child"
msgstr "Força a proporção de tela a acompanhar à do filho dentro da moldura"
-#: gtk/gtkaspectframe.c:202 gtk/gtkbutton.c:243 gtk/gtkcombobox.c:786
-#: gtk/gtkdragicon.c:375 gtk/gtkexpander.c:367 gtk/gtkflowbox.c:525
-#: gtk/gtkframe.c:187 gtk/gtklistbox.c:3498 gtk/gtklistitem.c:185
-#: gtk/gtknotebook.c:576 gtk/gtkoverlay.c:318 gtk/gtkpopover.c:1706
-#: gtk/gtkrevealer.c:347 gtk/gtkscrolledwindow.c:762 gtk/gtksearchbar.c:327
-#: gtk/gtkstack.c:404 gtk/gtktreeexpander.c:508 gtk/gtkviewport.c:381
-#: gtk/gtkwindow.c:934 gtk/gtkwindowhandle.c:548
+#: gtk/gtkaspectframe.c:195 gtk/gtkbutton.c:271 gtk/gtkcombobox.c:791
+#: gtk/gtkdragicon.c:373 gtk/gtkexpander.c:399 gtk/gtkflowbox.c:534
+#: gtk/gtkframe.c:207 gtk/gtklistbox.c:3583 gtk/gtklistitem.c:181
+#: gtk/gtknotebook.c:586 gtk/gtkoverlay.c:321 gtk/gtkpopover.c:1826
+#: gtk/gtkrevealer.c:368 gtk/gtkscrolledwindow.c:798 gtk/gtksearchbar.c:333
+#: gtk/gtkstack.c:416 gtk/gtktreeexpander.c:506 gtk/gtkviewport.c:388
+#: gtk/gtkwindow.c:1038 gtk/gtkwindowhandle.c:505
msgid "Child"
msgstr "Filho"
-#: gtk/gtkaspectframe.c:203 gtk/gtkbutton.c:244 gtk/gtkexpander.c:368
-#: gtk/gtkflowbox.c:526 gtk/gtkframe.c:188 gtk/gtklistbox.c:3499
-#: gtk/gtkoverlay.c:319 gtk/gtkpopover.c:1707 gtk/gtkrevealer.c:348
-#: gtk/gtkscrolledwindow.c:763 gtk/gtksearchbar.c:328 gtk/gtkviewport.c:382
-#: gtk/gtkwindow.c:935 gtk/gtkwindowhandle.c:549
+#: gtk/gtkaspectframe.c:196 gtk/gtkbutton.c:272 gtk/gtkexpander.c:400
+#: gtk/gtkflowbox.c:535 gtk/gtkframe.c:208 gtk/gtklistbox.c:3584
+#: gtk/gtkoverlay.c:322 gtk/gtkpopover.c:1827 gtk/gtkrevealer.c:369
+#: gtk/gtkscrolledwindow.c:799 gtk/gtksearchbar.c:334 gtk/gtkviewport.c:389
+#: gtk/gtkwindow.c:1039 gtk/gtkwindowhandle.c:506
msgid "The child widget"
msgstr "O componente filho"
-#: gtk/gtkassistant.c:251
+#: gtk/gtkassistant.c:257
msgid "Page type"
msgstr "Tipo de página"
-#: gtk/gtkassistant.c:252
+#: gtk/gtkassistant.c:258
msgid "The type of the assistant page"
msgstr "O tipo de página do assistente"
-#: gtk/gtkassistant.c:265
+#: gtk/gtkassistant.c:271
msgid "Page title"
msgstr "Título da página"
-#: gtk/gtkassistant.c:266
+#: gtk/gtkassistant.c:272
msgid "The title of the assistant page"
msgstr "O título da página do assistente"
-#: gtk/gtkassistant.c:280
+#: gtk/gtkassistant.c:287
msgid "Page complete"
msgstr "Página completa"
-#: gtk/gtkassistant.c:281
+#: gtk/gtkassistant.c:288
msgid "Whether all required fields on the page have been filled out"
msgstr "Se todos os campos exigidos da página foram preenchidos"
-#: gtk/gtkassistant.c:287
+#: gtk/gtkassistant.c:300
msgid "Child widget"
msgstr "Componente filho"
-#: gtk/gtkassistant.c:288
+#: gtk/gtkassistant.c:301
msgid "The content the assistant page"
msgstr "O conteúdo da página do assistente"
-#: gtk/gtkassistant.c:595 gtk/gtkdialog.c:545
+#: gtk/gtkassistant.c:608 gtk/gtkdialog.c:565
msgid "Use Header Bar"
msgstr "Usar barra de cabeçalho"
-#: gtk/gtkassistant.c:596 gtk/gtkdialog.c:546
+#: gtk/gtkassistant.c:609 gtk/gtkdialog.c:566
msgid "Use Header Bar for actions."
msgstr "Usa barra de cabeçalho para ações."
-#: gtk/gtkassistant.c:603 gtk/gtknotebook.c:1113 gtk/gtkstack.c:818
+#: gtk/gtkassistant.c:621 gtk/gtknotebook.c:1212 gtk/gtkstack.c:900
msgid "Pages"
msgstr "Páginas"
-#: gtk/gtkassistant.c:604
+#: gtk/gtkassistant.c:622
msgid "The pages of the assistant."
msgstr "As páginas do assistente."
-#: gtk/gtkbookmarklist.c:213 gtk/gtkimage.c:179 gtk/gtkrecentmanager.c:279
+#: gtk/gtkbookmarklist.c:217 gtk/gtkimage.c:190 gtk/gtkrecentmanager.c:271
msgid "Filename"
msgstr "Nome do arquivo"
-#: gtk/gtkbookmarklist.c:214
+#: gtk/gtkbookmarklist.c:218
msgid "Bookmark file to load"
msgstr "Arquivo marcador para carregar"
-#: gtk/gtkbookmarklist.c:224 gtk/gtkcellrenderertext.c:267 gtk/gtkentry.c:923
-#: gtk/gtklabel.c:2197 gtk/gtktext.c:892
+#: gtk/gtkbookmarklist.c:228 gtk/gtkcellrenderertext.c:267 gtk/gtkentry.c:965
+#: gtk/gtklabel.c:2197 gtk/gtktext.c:928
msgid "Attributes"
msgstr "Atributos"
-#: gtk/gtkbookmarklist.c:225 gtk/gtkdirectorylist.c:262
+#: gtk/gtkbookmarklist.c:229 gtk/gtkdirectorylist.c:261
msgid "Attributes to query"
msgstr "Atributos para consultar"
-#: gtk/gtkbookmarklist.c:236 gtk/gtkdirectorylist.c:297
+#: gtk/gtkbookmarklist.c:240 gtk/gtkdirectorylist.c:296
msgid "IO priority"
msgstr "Prioridade de E/S"
-#: gtk/gtkbookmarklist.c:237 gtk/gtkdirectorylist.c:298
+#: gtk/gtkbookmarklist.c:241 gtk/gtkdirectorylist.c:297
msgid "Priority used when loading"
msgstr "Prioridade usada ao carregar"
-#: gtk/gtkbookmarklist.c:248 gtk/gtkdirectorylist.c:309
+#: gtk/gtkbookmarklist.c:252 gtk/gtkdirectorylist.c:308
msgid "loading"
msgstr "carregando"
-#: gtk/gtkbookmarklist.c:249 gtk/gtkdirectorylist.c:310
+#: gtk/gtkbookmarklist.c:253 gtk/gtkdirectorylist.c:309
msgid "TRUE if files are being loaded"
msgstr "VERDADEIRO se arquivos devem ser carregados"
-#: gtk/gtkboolfilter.c:165 gtk/gtkdropdown.c:513 gtk/gtknumericsorter.c:550
-#: gtk/gtkstringfilter.c:252 gtk/gtkstringsorter.c:296
+#: gtk/gtkboolfilter.c:163 gtk/gtkdropdown.c:518 gtk/gtknumericsorter.c:548
+#: gtk/gtkstringfilter.c:257 gtk/gtkstringsorter.c:295
msgid "Expression"
msgstr "Expressão"
-#: gtk/gtkboolfilter.c:166
+#: gtk/gtkboolfilter.c:164
msgid "Expression to evaluate"
msgstr "Expressão para avaliar"
-#: gtk/gtkboolfilter.c:176
+#: gtk/gtkboolfilter.c:174
msgid "Invert"
msgstr "Inverter"
-#: gtk/gtkboolfilter.c:177
+#: gtk/gtkboolfilter.c:175
msgid "If the expression result should be inverted"
msgstr "Se o resultado da expressão deve ser invertido"
-#: gtk/gtkbox.c:261 gtk/gtkboxlayout.c:722 gtk/gtkcellareabox.c:317
-#: gtk/gtkiconview.c:464 gtk/gtktreeviewcolumn.c:308
+#: gtk/gtkbox.c:267 gtk/gtkboxlayout.c:720 gtk/gtkcellareabox.c:316
+#: gtk/gtkiconview.c:464 gtk/gtktreeviewcolumn.c:306
msgid "Spacing"
msgstr "Espaçamento"
-#: gtk/gtkbox.c:262
+#: gtk/gtkbox.c:268
msgid "The amount of space between children"
msgstr "A quantidade de espaço entre os filhos"
-#: gtk/gtkbox.c:268 gtk/gtkboxlayout.c:708 gtk/gtkflowbox.c:3631
+#: gtk/gtkbox.c:279 gtk/gtkboxlayout.c:707 gtk/gtkflowbox.c:3651
msgid "Homogeneous"
msgstr "Homogêneo"
-#: gtk/gtkbox.c:269 gtk/gtkflowbox.c:3632
+#: gtk/gtkbox.c:280 gtk/gtkflowbox.c:3652
msgid "Whether the children should all be the same size"
msgstr "Se os filhos devem ter todos o mesmo tamanho"
-#: gtk/gtkbox.c:275 gtk/gtkboxlayout.c:740 gtk/gtkcenterbox.c:208
+#: gtk/gtkbox.c:291 gtk/gtkboxlayout.c:737 gtk/gtkcenterbox.c:212
msgid "Baseline position"
msgstr "Posição da linha de base"
-#: gtk/gtkbox.c:276 gtk/gtkboxlayout.c:741 gtk/gtkcenterbox.c:209
+#: gtk/gtkbox.c:292 gtk/gtkboxlayout.c:738 gtk/gtkcenterbox.c:213
msgid ""
"The position of the baseline aligned widgets if extra space is available"
msgstr ""
"A posição da linha de base alinhada a componentes, se um espaço extra "
"estiver disponível"
-#: gtk/gtkboxlayout.c:709
+#: gtk/gtkboxlayout.c:708
msgid "Distribute space homogeneously"
msgstr "Distribuir espaço homogeneamente"
-#: gtk/gtkboxlayout.c:723
+#: gtk/gtkboxlayout.c:721
msgid "Spacing between widgets"
msgstr "Espaçamento entre os componentes"
-#: gtk/gtkbuilder.c:305
+#: gtk/gtkbuilder.c:310
msgid "Translation Domain"
msgstr "Domínio de tradução"
-#: gtk/gtkbuilder.c:306
+#: gtk/gtkbuilder.c:311
msgid "The translation domain used by gettext"
msgstr "O domínio de tradução usado pelo gettext"
-#: gtk/gtkbuilder.c:317
+#: gtk/gtkbuilder.c:322
msgid "Current object"
msgstr "Objeto atual"
-#: gtk/gtkbuilder.c:318
+#: gtk/gtkbuilder.c:323
msgid "The object the builder is evaluating for"
msgstr "O objeto para o qual o construtor está avaliando"
-#: gtk/gtkbuilder.c:329 gtk/gtkbuilderlistitemfactory.c:293
+#: gtk/gtkbuilder.c:334 gtk/gtkbuilderlistitemfactory.c:292
#: gtk/gtkshortcutcontroller.c:577
msgid "Scope"
msgstr "Escopo"
-#: gtk/gtkbuilder.c:330
+#: gtk/gtkbuilder.c:335
msgid "The scope the builder is operating in"
msgstr "O escopo no qual o construtor está operando"
-#: gtk/gtkbuilderlistitemfactory.c:269
+#: gtk/gtkbuilderlistitemfactory.c:268
msgid "Bytes"
msgstr "Bytes"
-#: gtk/gtkbuilderlistitemfactory.c:270
+#: gtk/gtkbuilderlistitemfactory.c:269
msgid "bytes containing the UI definition"
msgstr "bytes contendo a definição de UI"
-#: gtk/gtkbuilderlistitemfactory.c:281 gtk/gtkimage.c:241
+#: gtk/gtkbuilderlistitemfactory.c:280 gtk/gtkimage.c:261
msgid "Resource"
msgstr "Recurso"
-#: gtk/gtkbuilderlistitemfactory.c:282
+#: gtk/gtkbuilderlistitemfactory.c:281
msgid "resource containing the UI definition"
msgstr "recurso contendo a definição de UI"
-#: gtk/gtkbuilderlistitemfactory.c:294
+#: gtk/gtkbuilderlistitemfactory.c:293
msgid "scope to use when instantiating listitems"
msgstr "escopo para usar ao instanciar “listitems”"
-#: gtk/gtkbutton.c:215 gtk/gtkcheckbutton.c:471 gtk/gtkexpander.c:321
-#: gtk/gtkframe.c:165 gtk/gtklabel.c:2190 gtk/gtkmenubutton.c:417
+#: gtk/gtkbutton.c:222 gtk/gtkcheckbutton.c:540 gtk/gtkexpander.c:333
+#: gtk/gtkframe.c:170 gtk/gtklabel.c:2185 gtk/gtkmenubutton.c:406
msgid "Label"
msgstr "Rótulo"
-#: gtk/gtkbutton.c:216 gtk/gtkcheckbutton.c:472
+#: gtk/gtkbutton.c:223 gtk/gtkcheckbutton.c:541
msgid ""
"Text of the label widget inside the button, if the button contains a label "
"widget"
@@ -923,13 +923,13 @@ msgstr ""
"Texto do componente rótulo dentro do botão, se o botão contiver um rótulo de "
"componente"
-#: gtk/gtkbutton.c:222 gtk/gtkcheckbutton.c:485 gtk/gtkexpander.c:329
-#: gtk/gtklabel.c:2211 gtk/gtkmenubutton.c:424 gtk/gtkstack.c:454
+#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:568 gtk/gtkexpander.c:346
+#: gtk/gtklabel.c:2223 gtk/gtkmenubutton.c:418 gtk/gtkstack.c:492
msgid "Use underline"
msgstr "Usar sublinhado"
-#: gtk/gtkbutton.c:223 gtk/gtkcheckbutton.c:486 gtk/gtkexpander.c:330
-#: gtk/gtklabel.c:2212 gtk/gtkmenubutton.c:425
+#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:569 gtk/gtkexpander.c:347
+#: gtk/gtklabel.c:2224 gtk/gtkmenubutton.c:419
msgid ""
"If set, an underline in the text indicates the next character should be used "
"for the mnemonic accelerator key"
@@ -937,45 +937,45 @@ msgstr ""
"Se definido, um sublinhado no texto indica que o caractere seguinte deve ser "
"usado como a tecla de atalho mnemônico"
-#: gtk/gtkbutton.c:229 gtk/gtkcombobox.c:673 gtk/gtkentry.c:502
-#: gtk/gtkscrolledwindow.c:644
+#: gtk/gtkbutton.c:247 gtk/gtkcombobox.c:670 gtk/gtkentry.c:525
+#: gtk/gtkscrolledwindow.c:673
msgid "Has Frame"
msgstr "Tem moldura"
-#: gtk/gtkbutton.c:230 gtk/gtkmenubutton.c:432
+#: gtk/gtkbutton.c:248 gtk/gtkmenubutton.c:431
msgid "Whether the button has a frame"
msgstr "Se o botão tem um quadro"
-#: gtk/gtkbutton.c:236 gtk/gtkcellrendererpixbuf.c:253 gtk/gtkimage.c:215
-#: gtk/gtkmenubutton.c:410 gtk/gtkprinter.c:168 gtk/gtkwindow.c:808
+#: gtk/gtkbutton.c:259 gtk/gtkcellrendererpixbuf.c:253 gtk/gtkimage.c:234
+#: gtk/gtkmenubutton.c:394 gtk/gtkprinter.c:214 gtk/gtkwindow.c:886
msgid "Icon Name"
msgstr "Nome do ícone"
-#: gtk/gtkbutton.c:237 gtk/gtkmenubutton.c:411
+#: gtk/gtkbutton.c:260 gtk/gtkmenubutton.c:395
msgid "The name of the icon used to automatically populate the button"
msgstr "O nome do ícone usado para popular automaticamente o botão"
-#: gtk/gtkcalendar.c:373
+#: gtk/gtkcalendar.c:376
msgid "Year"
msgstr "Ano"
-#: gtk/gtkcalendar.c:374
+#: gtk/gtkcalendar.c:377
msgid "The selected year"
msgstr "O ano selecionado"
-#: gtk/gtkcalendar.c:387
+#: gtk/gtkcalendar.c:391
msgid "Month"
msgstr "Mês"
-#: gtk/gtkcalendar.c:388
+#: gtk/gtkcalendar.c:392
msgid "The selected month (as a number between 0 and 11)"
msgstr "O mês selecionado (como número entre 0 e 11)"
-#: gtk/gtkcalendar.c:402
+#: gtk/gtkcalendar.c:407
msgid "Day"
msgstr "Dia"
-#: gtk/gtkcalendar.c:403
+#: gtk/gtkcalendar.c:408
msgid ""
"The selected day (as a number between 1 and 31, or 0 to unselect the "
"currently selected day)"
@@ -983,64 +983,64 @@ msgstr ""
"O dia selecionado (como um número entre 1 e 31, ou 0 para desfazer a seleção "
"do dia)"
-#: gtk/gtkcalendar.c:415
+#: gtk/gtkcalendar.c:420
msgid "Show Heading"
msgstr "Mostrar cabeçalho"
-#: gtk/gtkcalendar.c:416
+#: gtk/gtkcalendar.c:421
msgid "If TRUE, a heading is displayed"
msgstr "Se VERDADEIRO, um cabeçalho é exibido"
-#: gtk/gtkcalendar.c:428
+#: gtk/gtkcalendar.c:433
msgid "Show Day Names"
msgstr "Mostrar nomes de dias"
-#: gtk/gtkcalendar.c:429
+#: gtk/gtkcalendar.c:434
msgid "If TRUE, day names are displayed"
msgstr "Se VERDADEIRO, os nomes dos dias são exibidos"
-#: gtk/gtkcalendar.c:440
+#: gtk/gtkcalendar.c:445
msgid "Show Week Numbers"
msgstr "Mostrar números de semana"
-#: gtk/gtkcalendar.c:441
+#: gtk/gtkcalendar.c:446
msgid "If TRUE, week numbers are displayed"
msgstr "Se VERDADEIRO, a numeração das semanas são exibidos"
-#: gtk/gtkcellareabox.c:318 gtk/gtktreeviewcolumn.c:309
+#: gtk/gtkcellareabox.c:317 gtk/gtktreeviewcolumn.c:307
msgid "Space which is inserted between cells"
msgstr "Espaço inserido entre as células"
-#: gtk/gtkcellareabox.c:335 gtk/gtkcolumnviewcolumn.c:324
-#: gtk/gtktreeviewcolumn.c:355
+#: gtk/gtkcellareabox.c:334 gtk/gtkcolumnviewcolumn.c:325
+#: gtk/gtktreeviewcolumn.c:353
msgid "Expand"
msgstr "Expandir"
-#: gtk/gtkcellareabox.c:336
+#: gtk/gtkcellareabox.c:335
msgid "Whether the cell expands"
msgstr "Se a célula se expande"
-#: gtk/gtkcellareabox.c:349
+#: gtk/gtkcellareabox.c:348
msgid "Align"
msgstr "Alinhar"
-#: gtk/gtkcellareabox.c:350
+#: gtk/gtkcellareabox.c:349
msgid "Whether cell should align with adjacent rows"
msgstr "Se as células devem se alinhar com linhas vizinhas"
-#: gtk/gtkcellareabox.c:364
+#: gtk/gtkcellareabox.c:363
msgid "Fixed Size"
msgstr "Tamanho fixo"
-#: gtk/gtkcellareabox.c:365
+#: gtk/gtkcellareabox.c:364
msgid "Whether cells should be the same size in all rows"
msgstr "Se as células devem ter o mesmo tamanho em todas linhas"
-#: gtk/gtkcellareabox.c:379
+#: gtk/gtkcellareabox.c:378
msgid "Pack Type"
msgstr "Tipo de empacotamento"
-#: gtk/gtkcellareabox.c:380
+#: gtk/gtkcellareabox.c:379
msgid ""
"A GtkPackType indicating whether the cell is packed with reference to the "
"start or end of the cell area"
@@ -1081,7 +1081,7 @@ msgid "The Cell Area this context was created for"
msgstr "A área de célula para a qual este contexto foi criado"
#: gtk/gtkcellareacontext.c:128 gtk/gtkcellareacontext.c:143
-#: gtk/gtktreeviewcolumn.c:332
+#: gtk/gtktreeviewcolumn.c:330
msgid "Minimum Width"
msgstr "Largura mínima"
@@ -1097,11 +1097,11 @@ msgstr "Altura mínima"
msgid "Minimum cached height"
msgstr "Altura mínima em cache"
-#: gtk/gtkcelleditable.c:49
+#: gtk/gtkcelleditable.c:48
msgid "Editing Canceled"
msgstr "Edição cancelada"
-#: gtk/gtkcelleditable.c:50
+#: gtk/gtkcelleditable.c:49
msgid "Indicates that editing has been canceled"
msgstr "Indica que a edição foi cancelada"
@@ -1137,132 +1137,132 @@ msgstr "Modo do acelerador"
msgid "The type of accelerators"
msgstr "O tipo dos aceleradores"
-#: gtk/gtkcellrenderer.c:282
+#: gtk/gtkcellrenderer.c:281
msgid "mode"
msgstr "modo"
-#: gtk/gtkcellrenderer.c:283
+#: gtk/gtkcellrenderer.c:282
msgid "Editable mode of the CellRenderer"
msgstr "Modo editável do CellRenderer"
-#: gtk/gtkcellrenderer.c:291
+#: gtk/gtkcellrenderer.c:290
msgid "visible"
msgstr "visível"
-#: gtk/gtkcellrenderer.c:292
+#: gtk/gtkcellrenderer.c:291
msgid "Display the cell"
msgstr "Exibir a célula"
-#: gtk/gtkcellrenderer.c:298 gtk/gtkwidget.c:1257
+#: gtk/gtkcellrenderer.c:297 gtk/gtkwidget.c:1300
msgid "Sensitive"
msgstr "Sensível"
-#: gtk/gtkcellrenderer.c:299
+#: gtk/gtkcellrenderer.c:298
msgid "Display the cell sensitive"
msgstr "Exibir a sensibilidade da célula"
-#: gtk/gtkcellrenderer.c:306
+#: gtk/gtkcellrenderer.c:305
msgid "xalign"
msgstr "xalign"
-#: gtk/gtkcellrenderer.c:307
+#: gtk/gtkcellrenderer.c:306
msgid "The x-align"
msgstr "O alinhamento horizontal"
-#: gtk/gtkcellrenderer.c:316
+#: gtk/gtkcellrenderer.c:315
msgid "yalign"
msgstr "yalign"
-#: gtk/gtkcellrenderer.c:317
+#: gtk/gtkcellrenderer.c:316
msgid "The y-align"
msgstr "O alinhamento vertical"
-#: gtk/gtkcellrenderer.c:326
+#: gtk/gtkcellrenderer.c:325
msgid "xpad"
msgstr "xpad"
-#: gtk/gtkcellrenderer.c:327
+#: gtk/gtkcellrenderer.c:326
msgid "The xpad"
msgstr "Preenchimento horizontal"
-#: gtk/gtkcellrenderer.c:336
+#: gtk/gtkcellrenderer.c:335
msgid "ypad"
msgstr "ypad"
-#: gtk/gtkcellrenderer.c:337
+#: gtk/gtkcellrenderer.c:336
msgid "The ypad"
msgstr "Preenchimento vertical"
-#: gtk/gtkcellrenderer.c:346
+#: gtk/gtkcellrenderer.c:345
msgid "width"
msgstr "largura"
-#: gtk/gtkcellrenderer.c:347
+#: gtk/gtkcellrenderer.c:346
msgid "The fixed width"
msgstr "A largura fixa"
-#: gtk/gtkcellrenderer.c:356
+#: gtk/gtkcellrenderer.c:355
msgid "height"
msgstr "altura"
-#: gtk/gtkcellrenderer.c:357
+#: gtk/gtkcellrenderer.c:356
msgid "The fixed height"
msgstr "A altura fixa"
-#: gtk/gtkcellrenderer.c:366
+#: gtk/gtkcellrenderer.c:365
msgid "Is Expander"
msgstr "É expansível"
-#: gtk/gtkcellrenderer.c:367
+#: gtk/gtkcellrenderer.c:366
msgid "Row has children"
msgstr "Linha tem filhos"
-#: gtk/gtkcellrenderer.c:375
+#: gtk/gtkcellrenderer.c:374
msgid "Is Expanded"
msgstr "Está expandida"
-#: gtk/gtkcellrenderer.c:376
+#: gtk/gtkcellrenderer.c:375
msgid "Row is an expander row, and is expanded"
msgstr "Linha é expansível, e está expandida"
-#: gtk/gtkcellrenderer.c:383
+#: gtk/gtkcellrenderer.c:382
msgid "Cell background color name"
msgstr "Nome da cor de fundo da célula"
-#: gtk/gtkcellrenderer.c:384
+#: gtk/gtkcellrenderer.c:383
msgid "Cell background color as a string"
msgstr "Cor de fundo da célula como um texto"
-#: gtk/gtkcellrenderer.c:396
+#: gtk/gtkcellrenderer.c:395
msgid "Cell background RGBA color"
msgstr "Cor de fundo da célula em RGBA"
-#: gtk/gtkcellrenderer.c:397
+#: gtk/gtkcellrenderer.c:396
msgid "Cell background color as a GdkRGBA"
msgstr "Cor de fundo da célula como um GdkRGBA"
-#: gtk/gtkcellrenderer.c:404 gtk/gtkeditablelabel.c:372
+#: gtk/gtkcellrenderer.c:403 gtk/gtkeditablelabel.c:371
msgid "Editing"
msgstr "Editando"
-#: gtk/gtkcellrenderer.c:405
+#: gtk/gtkcellrenderer.c:404
msgid "Whether the cell renderer is currently in editing mode"
msgstr "Se o renderizador de célula está atualmente em modo de edição"
-#: gtk/gtkcellrenderer.c:413
+#: gtk/gtkcellrenderer.c:412
msgid "Cell background set"
msgstr "Fundo da célula definido"
-#: gtk/gtkcellrenderer.c:414
+#: gtk/gtkcellrenderer.c:413
msgid "Whether the cell background color is set"
msgstr "Se a cor de plano de fundo da célula está definida"
-#: gtk/gtkcellrenderercombo.c:134 gtk/gtkcolumnview.c:695 gtk/gtkdropdown.c:459
-#: gtk/gtkfilterlistmodel.c:589 gtk/gtkflattenlistmodel.c:413
-#: gtk/gtkgridview.c:1099 gtk/gtklistview.c:831 gtk/gtkmaplistmodel.c:375
-#: gtk/gtkmultiselection.c:356 gtk/gtkselectionfiltermodel.c:227
-#: gtk/gtkshortcutcontroller.c:565 gtk/gtkslicelistmodel.c:264
-#: gtk/gtksortlistmodel.c:796 gtk/gtktreelistmodel.c:706
+#: gtk/gtkcellrenderercombo.c:134 gtk/gtkcolumnview.c:694 gtk/gtkdropdown.c:459
+#: gtk/gtkfilterlistmodel.c:587 gtk/gtkflattenlistmodel.c:409
+#: gtk/gtkgridview.c:1097 gtk/gtklistview.c:829 gtk/gtkmaplistmodel.c:373
+#: gtk/gtkmultiselection.c:353 gtk/gtkselectionfiltermodel.c:224
+#: gtk/gtkshortcutcontroller.c:565 gtk/gtkslicelistmodel.c:260
+#: gtk/gtksortlistmodel.c:793 gtk/gtktreelistmodel.c:702
msgid "Model"
msgstr "Modelo"
@@ -1278,7 +1278,7 @@ msgstr "Coluna de texto"
msgid "A column in the data source model to get the strings from"
msgstr "Uma coluna no modelo de fonte de dados de onde obter os textos"
-#: gtk/gtkcellrenderercombo.c:171 gtk/gtkcombobox.c:717
+#: gtk/gtkcellrenderercombo.c:171 gtk/gtkcombobox.c:715
msgid "Has Entry"
msgstr "Possui inserir"
@@ -1323,16 +1323,16 @@ msgstr "Tamanhos de ícone"
msgid "The GtkIconSize value that specifies the size of the rendered icon"
msgstr "O valor GtkIconSize que especifica o tamanho do ícone renderizado"
-#: gtk/gtkcellrendererpixbuf.c:254 gtk/gtkimage.c:216
+#: gtk/gtkcellrendererpixbuf.c:254 gtk/gtkimage.c:235
msgid "The name of the icon from the icon theme"
msgstr "O nome do ícone retirado do tema do ícone"
-#: gtk/gtkcellrendererpixbuf.c:268 gtk/gtkimage.c:229 gtk/gtkmodelbutton.c:1186
-#: gtk/gtkshortcutsshortcut.c:592
+#: gtk/gtkcellrendererpixbuf.c:268 gtk/gtkimage.c:249 gtk/gtkmodelbutton.c:1184
+#: gtk/gtkshortcutsshortcut.c:601
msgid "Icon"
msgstr "Ícone"
-#: gtk/gtkcellrendererpixbuf.c:269 gtk/gtkimage.c:230
+#: gtk/gtkcellrendererpixbuf.c:269 gtk/gtkimage.c:250
msgid "The GIcon being displayed"
msgstr "O GIcon a ser exibido"
@@ -1341,8 +1341,8 @@ msgid "Value of the progress bar"
msgstr "Valor da barra de progresso"
#: gtk/gtkcellrendererprogress.c:637 gtk/gtkcellrenderertext.c:253
-#: gtk/gtkeditable.c:378 gtk/gtkentrybuffer.c:351 gtk/gtkmessagedialog.c:386
-#: gtk/gtkmodelbutton.c:1198 gtk/gtkprogressbar.c:208 gtk/gtktextbuffer.c:468
+#: gtk/gtkeditable.c:383 gtk/gtkentrybuffer.c:348 gtk/gtkmessagedialog.c:388
+#: gtk/gtkmodelbutton.c:1196 gtk/gtkprogressbar.c:226 gtk/gtktextbuffer.c:469
msgid "Text"
msgstr "Texto"
@@ -1350,7 +1350,7 @@ msgstr "Texto"
msgid "Text on the progress bar"
msgstr "Texto na barra de progresso"
-#: gtk/gtkcellrendererprogress.c:659 gtk/gtkcellrendererspinner.c:199
+#: gtk/gtkcellrendererprogress.c:659 gtk/gtkcellrendererspinner.c:198
msgid "Pulse"
msgstr "Pulso"
@@ -1382,60 +1382,60 @@ msgstr "Alinhamento y do texto"
msgid "The vertical text alignment, from 0 (top) to 1 (bottom)."
msgstr "O alinhamento vertical do texto, de 0 (topo) até 1 (base)."
-#: gtk/gtkcellrendererprogress.c:701 gtk/gtklevelbar.c:1004
-#: gtk/gtkprogressbar.c:185 gtk/gtkrange.c:371
+#: gtk/gtkcellrendererprogress.c:701 gtk/gtklevelbar.c:1006
+#: gtk/gtkprogressbar.c:188 gtk/gtkrange.c:384
msgid "Inverted"
msgstr "Invertido"
-#: gtk/gtkcellrendererprogress.c:702 gtk/gtkprogressbar.c:186
+#: gtk/gtkcellrendererprogress.c:702 gtk/gtkprogressbar.c:189
msgid "Invert the direction in which the progress bar grows"
msgstr "Inverter a direção de crescimento da barra de progresso"
-#: gtk/gtkcellrendererspin.c:132 gtk/gtkrange.c:364 gtk/gtkscalebutton.c:214
-#: gtk/gtkscrollbar.c:213 gtk/gtkspinbutton.c:371
+#: gtk/gtkcellrendererspin.c:131 gtk/gtkrange.c:372 gtk/gtkscalebutton.c:212
+#: gtk/gtkscrollbar.c:221 gtk/gtkspinbutton.c:375
msgid "Adjustment"
msgstr "Ajustamento"
-#: gtk/gtkcellrendererspin.c:133 gtk/gtkspinbutton.c:372
+#: gtk/gtkcellrendererspin.c:132 gtk/gtkspinbutton.c:376
msgid "The adjustment that holds the value of the spin button"
msgstr "O ajustamento que contém o valor do botão do seletor numérico"
-#: gtk/gtkcellrendererspin.c:146
+#: gtk/gtkcellrendererspin.c:145
msgid "Climb rate"
msgstr "Taxa de aumento"
-#: gtk/gtkcellrendererspin.c:147
+#: gtk/gtkcellrendererspin.c:146
msgid "The acceleration rate when you hold down a button"
msgstr "O taxa de aceleração quando você obtém um botão pressionado"
-#: gtk/gtkcellrendererspin.c:158 gtk/gtkscale.c:677 gtk/gtkspinbutton.c:385
+#: gtk/gtkcellrendererspin.c:157 gtk/gtkscale.c:681 gtk/gtkspinbutton.c:399
msgid "Digits"
msgstr "Dígitos"
-#: gtk/gtkcellrendererspin.c:159 gtk/gtkspinbutton.c:386
+#: gtk/gtkcellrendererspin.c:158 gtk/gtkspinbutton.c:400
msgid "The number of decimal places to display"
msgstr "O número de casas decimais exibidas"
-#: gtk/gtkcellrendererspinner.c:182 gtk/gtkcheckbutton.c:459
-#: gtk/gtkmodelbutton.c:1225 gtk/gtkmodelbutton.c:1226 gtk/gtkswitch.c:528
-#: gtk/gtktogglebutton.c:259
+#: gtk/gtkcellrendererspinner.c:181 gtk/gtkcheckbutton.c:516
+#: gtk/gtkmodelbutton.c:1223 gtk/gtkmodelbutton.c:1224 gtk/gtkswitch.c:522
+#: gtk/gtktogglebutton.c:276
msgid "Active"
msgstr "Ativo"
-#: gtk/gtkcellrendererspinner.c:183
+#: gtk/gtkcellrendererspinner.c:182
msgid "Whether the spinner is active (ie. shown) in the cell"
msgstr "Se o spinner está ativo (se é exibido) na célula"
-#: gtk/gtkcellrendererspinner.c:200
+#: gtk/gtkcellrendererspinner.c:199
msgid "Pulse of the spinner"
msgstr "Pulso do spinner"
-#: gtk/gtkcellrendererspinner.c:212 gtk/gtkrecentmanager.c:292
-#: gtk/gtkslicelistmodel.c:288
+#: gtk/gtkcellrendererspinner.c:211 gtk/gtkrecentmanager.c:284
+#: gtk/gtkslicelistmodel.c:284
msgid "Size"
msgstr "Tamanho"
-#: gtk/gtkcellrendererspinner.c:213
+#: gtk/gtkcellrendererspinner.c:212
msgid "The GtkIconSize value that specifies the size of the rendered spinner"
msgstr "O valor GtkIconSize que especifica o tamanho do spinner renderizado"
@@ -1463,11 +1463,11 @@ msgstr "Modo de parágrafo único"
msgid "Whether to keep all text in a single paragraph"
msgstr "Se deve manter todo o texto em um único parágrafo"
-#: gtk/gtkcellrenderertext.c:281 gtk/gtktexttag.c:215
+#: gtk/gtkcellrenderertext.c:281 gtk/gtktexttag.c:228
msgid "Background color name"
msgstr "Nome da cor de fundo"
-#: gtk/gtkcellrenderertext.c:282 gtk/gtktexttag.c:216
+#: gtk/gtkcellrenderertext.c:282 gtk/gtktexttag.c:229
msgid "Background color as a string"
msgstr "Cor de fundo como um texto"
@@ -1475,15 +1475,15 @@ msgstr "Cor de fundo como um texto"
msgid "Background color as RGBA"
msgstr "Cor de fundo como RGBA"
-#: gtk/gtkcellrenderertext.c:294 gtk/gtktexttag.c:229
+#: gtk/gtkcellrenderertext.c:294 gtk/gtktexttag.c:242
msgid "Background color as a GdkRGBA"
msgstr "Cor de fundo como um GdkRGBA"
-#: gtk/gtkcellrenderertext.c:299 gtk/gtktexttag.c:244
+#: gtk/gtkcellrenderertext.c:299 gtk/gtktexttag.c:268
msgid "Foreground color name"
msgstr "Nome da cor de frente"
-#: gtk/gtkcellrenderertext.c:300 gtk/gtktexttag.c:245
+#: gtk/gtkcellrenderertext.c:300 gtk/gtktexttag.c:269
msgid "Foreground color as a string"
msgstr "Cor de frente como um texto"
@@ -1491,74 +1491,74 @@ msgstr "Cor de frente como um texto"
msgid "Foreground color as RGBA"
msgstr "Cor de frente como RGBA"
-#: gtk/gtkcellrenderertext.c:312 gtk/gtktexttag.c:258
+#: gtk/gtkcellrenderertext.c:312 gtk/gtktexttag.c:282
msgid "Foreground color as a GdkRGBA"
msgstr "Cor de frente como um GdkRGBA"
-#: gtk/gtkcellrenderertext.c:319 gtk/gtkeditable.c:408 gtk/gtktexttag.c:274
-#: gtk/gtktextview.c:860
+#: gtk/gtkcellrenderertext.c:319 gtk/gtkeditable.c:433 gtk/gtktexttag.c:308
+#: gtk/gtktextview.c:887
msgid "Editable"
msgstr "Editável"
-#: gtk/gtkcellrenderertext.c:320 gtk/gtktexttag.c:275 gtk/gtktextview.c:861
+#: gtk/gtkcellrenderertext.c:320 gtk/gtktexttag.c:309 gtk/gtktextview.c:888
msgid "Whether the text can be modified by the user"
msgstr "Se o texto pode ser modificado pelo usuário"
#: gtk/gtkcellrenderertext.c:326 gtk/gtkcellrenderertext.c:333
-#: gtk/gtkfontchooser.c:63 gtk/gtktexttag.c:290 gtk/gtktexttag.c:298
+#: gtk/gtkfontchooser.c:62 gtk/gtktexttag.c:324 gtk/gtktexttag.c:337
msgid "Font"
msgstr "Fonte"
-#: gtk/gtkcellrenderertext.c:327 gtk/gtkfontchooser.c:64 gtk/gtktexttag.c:291
+#: gtk/gtkcellrenderertext.c:327 gtk/gtkfontchooser.c:63 gtk/gtktexttag.c:325
msgid "Font description as a string, e.g. “Sans Italic 12”"
msgstr "Descrição da fonte como um texto, ex. “Sans Italic 12”"
-#: gtk/gtkcellrenderertext.c:334 gtk/gtkfontchooser.c:77 gtk/gtktexttag.c:299
+#: gtk/gtkcellrenderertext.c:334 gtk/gtkfontchooser.c:76 gtk/gtktexttag.c:338
msgid "Font description as a PangoFontDescription struct"
msgstr "Descrição da fonte como uma estrutura PangoFontDescription"
-#: gtk/gtkcellrenderertext.c:340 gtk/gtktexttag.c:306
+#: gtk/gtkcellrenderertext.c:340 gtk/gtktexttag.c:350
msgid "Font family"
msgstr "Família da fonte"
-#: gtk/gtkcellrenderertext.c:341 gtk/gtktexttag.c:307
+#: gtk/gtkcellrenderertext.c:341 gtk/gtktexttag.c:351
msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace"
msgstr "Nome da família da fonte; ex.: Sans, Helvetica, Times, Monospace"
#: gtk/gtkcellrenderertext.c:347 gtk/gtkcellrenderertext.c:348
-#: gtk/gtktexttag.c:314
+#: gtk/gtktexttag.c:363
msgid "Font style"
msgstr "Estilo de fonte"
#: gtk/gtkcellrenderertext.c:355 gtk/gtkcellrenderertext.c:356
-#: gtk/gtktexttag.c:323
+#: gtk/gtktexttag.c:377
msgid "Font variant"
msgstr "Variante da fonte"
#: gtk/gtkcellrenderertext.c:363 gtk/gtkcellrenderertext.c:364
-#: gtk/gtktexttag.c:332
+#: gtk/gtktexttag.c:390
msgid "Font weight"
msgstr "Peso da fonte"
#: gtk/gtkcellrenderertext.c:371 gtk/gtkcellrenderertext.c:372
-#: gtk/gtktexttag.c:343
+#: gtk/gtktexttag.c:405
msgid "Font stretch"
msgstr "Comprimento da fonte"
#: gtk/gtkcellrenderertext.c:379 gtk/gtkcellrenderertext.c:380
-#: gtk/gtktexttag.c:352
+#: gtk/gtktexttag.c:419
msgid "Font size"
msgstr "Tamanho da fonte"
-#: gtk/gtkcellrenderertext.c:387 gtk/gtktexttag.c:372
+#: gtk/gtkcellrenderertext.c:387 gtk/gtktexttag.c:452
msgid "Font points"
msgstr "Pontos da fonte"
-#: gtk/gtkcellrenderertext.c:388 gtk/gtktexttag.c:373
+#: gtk/gtkcellrenderertext.c:388 gtk/gtktexttag.c:453
msgid "Font size in points"
msgstr "Tamanho da fonte em pontos"
-#: gtk/gtkcellrenderertext.c:395 gtk/gtktexttag.c:362
+#: gtk/gtkcellrenderertext.c:395 gtk/gtktexttag.c:437
msgid "Font scale"
msgstr "Escala da fonte"
@@ -1566,7 +1566,7 @@ msgstr "Escala da fonte"
msgid "Font scaling factor"
msgstr "Fator de escala da fonte"
-#: gtk/gtkcellrenderertext.c:403 gtk/gtktexttag.c:441
+#: gtk/gtkcellrenderertext.c:403 gtk/gtktexttag.c:547
msgid "Rise"
msgstr "Levantar"
@@ -1576,23 +1576,23 @@ msgid ""
msgstr ""
"Deslocamento do texto sobre a linha base (ou abaixo se o valor for negativo)"
-#: gtk/gtkcellrenderertext.c:412 gtk/gtktexttag.c:481
+#: gtk/gtkcellrenderertext.c:412 gtk/gtktexttag.c:607
msgid "Strikethrough"
msgstr "Riscar"
-#: gtk/gtkcellrenderertext.c:413 gtk/gtktexttag.c:482
+#: gtk/gtkcellrenderertext.c:413 gtk/gtktexttag.c:608
msgid "Whether to strike through the text"
msgstr "Se deve riscar uma linha por cima do texto"
-#: gtk/gtkcellrenderertext.c:419 gtk/gtktexttag.c:489
+#: gtk/gtkcellrenderertext.c:419 gtk/gtktexttag.c:620
msgid "Underline"
msgstr "Sublinhar"
-#: gtk/gtkcellrenderertext.c:420 gtk/gtktexttag.c:490
+#: gtk/gtkcellrenderertext.c:420 gtk/gtktexttag.c:621
msgid "Style of underline for this text"
msgstr "Estilo do sublinhado para este texto"
-#: gtk/gtkcellrenderertext.c:427 gtk/gtkfontchooser.c:147 gtk/gtktexttag.c:401
+#: gtk/gtkcellrenderertext.c:427 gtk/gtkfontchooser.c:146 gtk/gtktexttag.c:487
msgid "Language"
msgstr "Idioma"
@@ -1606,7 +1606,7 @@ msgstr ""
"dica quando for renderizar o texto. Se você não entende este parâmetro, você "
"provavelmente não precisa dele"
-#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2317 gtk/gtkprogressbar.c:247
+#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2358 gtk/gtkprogressbar.c:267
msgid "Ellipsize"
msgstr "Colocar reticências"
@@ -1618,15 +1618,15 @@ msgstr ""
"O local preferido para se colocar reticências no texto, se o renderizador da "
"célula não tiver espaço suficiente para exibi-lo por completo"
-#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2335
+#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2377
msgid "Width In Characters"
msgstr "Largura em caracteres"
-#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2336
+#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2378
msgid "The desired width of the label, in characters"
msgstr "A largura desejada do rótulo, em caracteres"
-#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2369
+#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2413
msgid "Maximum Width In Characters"
msgstr "Largura máxima em caracteres"
@@ -1634,7 +1634,7 @@ msgstr "Largura máxima em caracteres"
msgid "The maximum width of the cell, in characters"
msgstr "A largura máxima da célula, em caracteres"
-#: gtk/gtkcellrenderertext.c:496 gtk/gtktexttag.c:547
+#: gtk/gtkcellrenderertext.c:496 gtk/gtktexttag.c:698
msgid "Wrap mode"
msgstr "Modo de quebra"
@@ -1654,7 +1654,7 @@ msgstr "Largura da quebra"
msgid "The width at which the text is wrapped"
msgstr "A largura na qual o texto será quebrado"
-#: gtk/gtkcellrenderertext.c:530 gtk/gtktreeviewcolumn.c:376
+#: gtk/gtkcellrenderertext.c:530 gtk/gtktreeviewcolumn.c:374
msgid "Alignment"
msgstr "Alinhamento"
@@ -1662,8 +1662,8 @@ msgstr "Alinhamento"
msgid "How to align the lines"
msgstr "Como alinhar as linhas"
-#: gtk/gtkcellrenderertext.c:544 gtk/gtkentry.c:613 gtk/gtkpasswordentry.c:436
-#: gtk/gtksearchentry.c:289 gtk/gtktext.c:824
+#: gtk/gtkcellrenderertext.c:544 gtk/gtkentry.c:653 gtk/gtkpasswordentry.c:443
+#: gtk/gtksearchentry.c:301 gtk/gtktext.c:859
msgid "Placeholder text"
msgstr "Texto de espaço reservado"
@@ -1671,115 +1671,115 @@ msgstr "Texto de espaço reservado"
msgid "Text rendered when an editable cell is empty"
msgstr "O texto renderizado quando uma célula editável está vazia"
-#: gtk/gtkcellrenderertext.c:554 gtk/gtktexttag.c:694
+#: gtk/gtkcellrenderertext.c:554 gtk/gtktexttag.c:864
msgid "Background set"
msgstr "Plano de fundo definido"
-#: gtk/gtkcellrenderertext.c:555 gtk/gtktexttag.c:695
+#: gtk/gtkcellrenderertext.c:555 gtk/gtktexttag.c:865
msgid "Whether this tag affects the background color"
msgstr "Se esta marca afeta a cor do plano de fundo"
-#: gtk/gtkcellrenderertext.c:558 gtk/gtktexttag.c:702
+#: gtk/gtkcellrenderertext.c:558 gtk/gtktexttag.c:872
msgid "Foreground set"
msgstr "Primeiro plano definido"
-#: gtk/gtkcellrenderertext.c:559 gtk/gtktexttag.c:703
+#: gtk/gtkcellrenderertext.c:559 gtk/gtktexttag.c:873
msgid "Whether this tag affects the foreground color"
msgstr "Se esta marca afeta a cor do primeiro plano"
-#: gtk/gtkcellrenderertext.c:562 gtk/gtktexttag.c:706
+#: gtk/gtkcellrenderertext.c:562 gtk/gtktexttag.c:876
msgid "Editability set"
msgstr "Editabilidade definido"
-#: gtk/gtkcellrenderertext.c:563 gtk/gtktexttag.c:707
+#: gtk/gtkcellrenderertext.c:563 gtk/gtktexttag.c:877
msgid "Whether this tag affects text editability"
msgstr "Se esta marca afeta a editabilidade do texto"
-#: gtk/gtkcellrenderertext.c:566 gtk/gtktexttag.c:710
+#: gtk/gtkcellrenderertext.c:566 gtk/gtktexttag.c:880
msgid "Font family set"
msgstr "Família da fonte definida"
-#: gtk/gtkcellrenderertext.c:567 gtk/gtktexttag.c:711
+#: gtk/gtkcellrenderertext.c:567 gtk/gtktexttag.c:881
msgid "Whether this tag affects the font family"
msgstr "Se esta marca afeta a família da fonte"
-#: gtk/gtkcellrenderertext.c:570 gtk/gtktexttag.c:714
+#: gtk/gtkcellrenderertext.c:570 gtk/gtktexttag.c:884
msgid "Font style set"
msgstr "Estilo da fonte definido"
-#: gtk/gtkcellrenderertext.c:571 gtk/gtktexttag.c:715
+#: gtk/gtkcellrenderertext.c:571 gtk/gtktexttag.c:885
msgid "Whether this tag affects the font style"
msgstr "Se esta marca afeta o estilo da fonte"
-#: gtk/gtkcellrenderertext.c:574 gtk/gtktexttag.c:718
+#: gtk/gtkcellrenderertext.c:574 gtk/gtktexttag.c:888
msgid "Font variant set"
msgstr "Variante da fonte definida"
-#: gtk/gtkcellrenderertext.c:575 gtk/gtktexttag.c:719
+#: gtk/gtkcellrenderertext.c:575 gtk/gtktexttag.c:889
msgid "Whether this tag affects the font variant"
msgstr "Se esta marca afeta a variante da fonte"
-#: gtk/gtkcellrenderertext.c:578 gtk/gtktexttag.c:722
+#: gtk/gtkcellrenderertext.c:578 gtk/gtktexttag.c:892
msgid "Font weight set"
msgstr "Peso da fonte definido"
-#: gtk/gtkcellrenderertext.c:579 gtk/gtktexttag.c:723
+#: gtk/gtkcellrenderertext.c:579 gtk/gtktexttag.c:893
msgid "Whether this tag affects the font weight"
msgstr "Se esta marca afeta o peso da fonte"
-#: gtk/gtkcellrenderertext.c:582 gtk/gtktexttag.c:726
+#: gtk/gtkcellrenderertext.c:582 gtk/gtktexttag.c:896
msgid "Font stretch set"
msgstr "Comprimento da fonte definido"
-#: gtk/gtkcellrenderertext.c:583 gtk/gtktexttag.c:727
+#: gtk/gtkcellrenderertext.c:583 gtk/gtktexttag.c:897
msgid "Whether this tag affects the font stretch"
msgstr "Se esta marca afeta o comprimento da fonte"
-#: gtk/gtkcellrenderertext.c:586 gtk/gtktexttag.c:730
+#: gtk/gtkcellrenderertext.c:586 gtk/gtktexttag.c:900
msgid "Font size set"
msgstr "Tamanho da fonte definido"
-#: gtk/gtkcellrenderertext.c:587 gtk/gtktexttag.c:731
+#: gtk/gtkcellrenderertext.c:587 gtk/gtktexttag.c:901
msgid "Whether this tag affects the font size"
msgstr "Se esta marca afeta o tamanho da fonte"
-#: gtk/gtkcellrenderertext.c:590 gtk/gtktexttag.c:734
+#: gtk/gtkcellrenderertext.c:590 gtk/gtktexttag.c:904
msgid "Font scale set"
msgstr "Escala da fonte definida"
-#: gtk/gtkcellrenderertext.c:591 gtk/gtktexttag.c:735
+#: gtk/gtkcellrenderertext.c:591 gtk/gtktexttag.c:905
msgid "Whether this tag scales the font size by a factor"
msgstr "Se esta marca multiplica o tamanho da fonte por um fator"
-#: gtk/gtkcellrenderertext.c:594 gtk/gtktexttag.c:754
+#: gtk/gtkcellrenderertext.c:594 gtk/gtktexttag.c:924
msgid "Rise set"
msgstr "Elevação definida"
-#: gtk/gtkcellrenderertext.c:595 gtk/gtktexttag.c:755
+#: gtk/gtkcellrenderertext.c:595 gtk/gtktexttag.c:925
msgid "Whether this tag affects the rise"
msgstr "Se esta marca afeta a elevação"
-#: gtk/gtkcellrenderertext.c:598 gtk/gtktexttag.c:770
+#: gtk/gtkcellrenderertext.c:598 gtk/gtktexttag.c:940
msgid "Strikethrough set"
msgstr "Riscado definido"
-#: gtk/gtkcellrenderertext.c:599 gtk/gtktexttag.c:771
+#: gtk/gtkcellrenderertext.c:599 gtk/gtktexttag.c:941
msgid "Whether this tag affects strikethrough"
msgstr "Se esta marca afeta o atributo de riscado"
-#: gtk/gtkcellrenderertext.c:602 gtk/gtktexttag.c:778
+#: gtk/gtkcellrenderertext.c:602 gtk/gtktexttag.c:948
msgid "Underline set"
msgstr "Sublinhado definido"
-#: gtk/gtkcellrenderertext.c:603 gtk/gtktexttag.c:779
+#: gtk/gtkcellrenderertext.c:603 gtk/gtktexttag.c:949
msgid "Whether this tag affects underlining"
msgstr "Se esta marca afeta o sublinhamento"
-#: gtk/gtkcellrenderertext.c:606 gtk/gtktexttag.c:742
+#: gtk/gtkcellrenderertext.c:606 gtk/gtktexttag.c:912
msgid "Language set"
msgstr "Idioma definido"
-#: gtk/gtkcellrenderertext.c:607 gtk/gtktexttag.c:743
+#: gtk/gtkcellrenderertext.c:607 gtk/gtktexttag.c:913
msgid "Whether this tag affects the language the text is rendered as"
msgstr "Se esta marca afeta o idioma pelo qual o texto é renderizado"
@@ -1815,7 +1815,7 @@ msgstr "Estado inconsistente"
msgid "The inconsistent state of the button"
msgstr "O estado inconsistente do botão"
-#: gtk/gtkcellrenderertoggle.c:212 gtk/gtklistbox.c:3479 gtk/gtklistitem.c:173
+#: gtk/gtkcellrenderertoggle.c:212 gtk/gtklistbox.c:3559 gtk/gtklistitem.c:169
msgid "Activatable"
msgstr "Ativável"
@@ -1839,13 +1839,13 @@ msgstr "Modelo de CellView"
msgid "The model for cell view"
msgstr "O modelo para a visualização da célula"
-#: gtk/gtkcellview.c:218 gtk/gtkentrycompletion.c:399 gtk/gtkiconview.c:575
-#: gtk/gtktreepopover.c:213 gtk/gtktreeviewcolumn.c:427
+#: gtk/gtkcellview.c:218 gtk/gtkentrycompletion.c:407 gtk/gtkiconview.c:575
+#: gtk/gtktreepopover.c:213 gtk/gtktreeviewcolumn.c:425
msgid "Cell Area"
msgstr "Área da célula"
-#: gtk/gtkcellview.c:219 gtk/gtkentrycompletion.c:400 gtk/gtkiconview.c:576
-#: gtk/gtktreepopover.c:214 gtk/gtktreeviewcolumn.c:428
+#: gtk/gtkcellview.c:219 gtk/gtkentrycompletion.c:408 gtk/gtkiconview.c:576
+#: gtk/gtktreepopover.c:214 gtk/gtktreeviewcolumn.c:426
msgid "The GtkCellArea used to layout cells"
msgstr "O GtkCellArea usado para disposição das células"
@@ -1874,30 +1874,30 @@ msgstr "Ajustar modelo"
msgid "Whether to request enough space for every row in the model"
msgstr "Se deve requisitar espaço suficiente para cada linha no modelo"
-#: gtk/gtkcheckbutton.c:460 gtk/gtktogglebutton.c:260
+#: gtk/gtkcheckbutton.c:517 gtk/gtktogglebutton.c:277
msgid "If the toggle button should be pressed in"
msgstr "Se o botão de alternância deveria estar pressionado"
-#: gtk/gtkcheckbutton.c:465 gtk/gtktogglebutton.c:266
+#: gtk/gtkcheckbutton.c:528 gtk/gtktogglebutton.c:288
msgid "Group"
msgstr "Grupo"
-#: gtk/gtkcheckbutton.c:466
+#: gtk/gtkcheckbutton.c:529
msgid "The check button whose group this widget belongs to."
msgstr "O botão de seleção cujo grupo este componente pertence."
-#: gtk/gtkcheckbutton.c:478
+#: gtk/gtkcheckbutton.c:555
msgid "Inconsistent"
msgstr "Inconsistente"
-#: gtk/gtkcheckbutton.c:479
+#: gtk/gtkcheckbutton.c:556
msgid "If the check button is in an “in between” state"
msgstr "Se o botão de marcação está “entre estados”"
-#: gtk/gtkcolorbutton.c:170 gtk/gtkcolumnviewcolumn.c:264
-#: gtk/gtkfontbutton.c:484 gtk/gtkprintjob.c:144 gtk/gtkshortcutsgroup.c:279
-#: gtk/gtkshortcutssection.c:320 gtk/gtkshortcutsshortcut.c:617
-#: gtk/gtkstack.c:418 gtk/gtktreeviewcolumn.c:348
+#: gtk/gtkcolorbutton.c:170 gtk/gtkcolumnviewcolumn.c:265
+#: gtk/gtkfontbutton.c:484 gtk/gtkprintjob.c:147 gtk/gtkshortcutsgroup.c:279
+#: gtk/gtkshortcutssection.c:326 gtk/gtkshortcutsshortcut.c:628
+#: gtk/gtkstack.c:440 gtk/gtktreeviewcolumn.c:346
msgid "Title"
msgstr "Título"
@@ -1913,7 +1913,7 @@ msgstr "Mostrar editor"
msgid "Whether to show the color editor right away"
msgstr "Se deve mostrar o editor de cores imediatamente"
-#: gtk/gtkcolorbutton.c:216 gtk/gtkfontbutton.c:521
+#: gtk/gtkcolorbutton.c:221 gtk/gtkfontbutton.c:524
msgid "Whether the dialog is modal"
msgstr "Se o diálogo é modal"
@@ -1925,15 +1925,15 @@ msgstr "Cor"
msgid "Current color, as a GdkRGBA"
msgstr "Cor atual, na forma GdkRGBA"
-#: gtk/gtkcolorchooser.c:83
+#: gtk/gtkcolorchooser.c:84
msgid "Use alpha"
msgstr "Usar alfa"
-#: gtk/gtkcolorchooser.c:84
+#: gtk/gtkcolorchooser.c:85
msgid "Whether alpha should be shown"
msgstr "Se alfa deve ser mostrado"
-#: gtk/gtkcolorchooserdialog.c:219 gtk/gtkcolorchooserwidget.c:720
+#: gtk/gtkcolorchooserdialog.c:226 gtk/gtkcolorchooserwidget.c:721
msgid "Show editor"
msgstr "Mostrar editor"
@@ -1941,202 +1941,202 @@ msgstr "Mostrar editor"
msgid "Scale type"
msgstr "Tipo de escala"
-#: gtk/gtkcolorswatch.c:505
+#: gtk/gtkcolorswatch.c:504
msgid "RGBA Color"
msgstr "Cor RGBA"
-#: gtk/gtkcolorswatch.c:505
+#: gtk/gtkcolorswatch.c:504
msgid "Color as RGBA"
msgstr "Cor na forma RGBA"
-#: gtk/gtkcolorswatch.c:508 gtk/gtklabel.c:2280 gtk/gtklistbox.c:3491
-#: gtk/gtklistitem.c:221
+#: gtk/gtkcolorswatch.c:507 gtk/gtklabel.c:2312 gtk/gtklistbox.c:3571
+#: gtk/gtklistitem.c:217
msgid "Selectable"
msgstr "Selecionável"
-#: gtk/gtkcolorswatch.c:508
+#: gtk/gtkcolorswatch.c:507
msgid "Whether the swatch is selectable"
msgstr "Se a amostra é selecionável"
-#: gtk/gtkcolorswatch.c:511
+#: gtk/gtkcolorswatch.c:510
msgid "Has Menu"
msgstr "Possui menu"
-#: gtk/gtkcolorswatch.c:511
+#: gtk/gtkcolorswatch.c:510
msgid "Whether the swatch should offer customization"
msgstr "Se a amostra deve oferecer personalização"
-#: gtk/gtkcolorswatch.c:514
+#: gtk/gtkcolorswatch.c:513
msgid "Can Drop"
msgstr "Pode soltar"
-#: gtk/gtkcolorswatch.c:514
+#: gtk/gtkcolorswatch.c:513
msgid "Whether the swatch should accept drops"
msgstr "Se a amostra deve aceitar ser soltada"
-#: gtk/gtkcolumnview.c:683
+#: gtk/gtkcolumnview.c:682
msgid "Columns"
msgstr "Colunas"
-#: gtk/gtkcolumnview.c:684
+#: gtk/gtkcolumnview.c:683
msgid "List of columns"
msgstr "Lista de colunas"
-#: gtk/gtkcolumnview.c:696 gtk/gtkgridview.c:1100 gtk/gtklistview.c:832
+#: gtk/gtkcolumnview.c:695 gtk/gtkgridview.c:1098 gtk/gtklistview.c:830
msgid "Model for the items displayed"
msgstr "Modelo para os itens exibidos"
-#: gtk/gtkcolumnview.c:707
+#: gtk/gtkcolumnview.c:706
msgid "Show row separators"
msgstr "Mostrar separadores de linha"
-#: gtk/gtkcolumnview.c:708 gtk/gtklistbox.c:516 gtk/gtklistview.c:844
+#: gtk/gtkcolumnview.c:707 gtk/gtklistbox.c:544 gtk/gtklistview.c:842
msgid "Show separators between rows"
msgstr "Mostra os separadores entre linhas"
-#: gtk/gtkcolumnview.c:719
+#: gtk/gtkcolumnview.c:718
msgid "Show column separators"
msgstr "Mostrar separadores de coluna"
-#: gtk/gtkcolumnview.c:720
+#: gtk/gtkcolumnview.c:719
msgid "Show separators between columns"
msgstr "Mostra os separadores entre colunas"
-#: gtk/gtkcolumnview.c:731 gtk/gtkcolumnviewcolumn.c:276
-#: gtk/gtksortlistmodel.c:820 gtk/gtktreelistrowsorter.c:547
+#: gtk/gtkcolumnview.c:730 gtk/gtkcolumnviewcolumn.c:277
+#: gtk/gtksortlistmodel.c:817 gtk/gtktreelistrowsorter.c:544
msgid "Sorter"
msgstr "Ordenador"
-#: gtk/gtkcolumnview.c:732
+#: gtk/gtkcolumnview.c:731
msgid "Sorter with sorting choices of the user"
msgstr "Ordenador com escolhas de ordenação do usuário"
-#: gtk/gtkcolumnview.c:743 gtk/gtkgridview.c:1111 gtk/gtklistview.c:855
+#: gtk/gtkcolumnview.c:742 gtk/gtkgridview.c:1109 gtk/gtklistview.c:853
msgid "Single click activate"
msgstr "Ativação com clique único"
-#: gtk/gtkcolumnview.c:744 gtk/gtkgridview.c:1112 gtk/gtklistview.c:856
+#: gtk/gtkcolumnview.c:743 gtk/gtkgridview.c:1110 gtk/gtklistview.c:854
msgid "Activate rows on single click"
msgstr "Ativa linhas com um clique único"
-#: gtk/gtkcolumnview.c:755 gtk/gtkiconview.c:535 gtk/gtktreeview.c:1023
-#: gtk/gtktreeviewcolumn.c:383
+#: gtk/gtkcolumnview.c:754 gtk/gtkiconview.c:535 gtk/gtktreeview.c:1024
+#: gtk/gtktreeviewcolumn.c:381
msgid "Reorderable"
msgstr "Reordenável"
-#: gtk/gtkcolumnview.c:756
+#: gtk/gtkcolumnview.c:755
msgid "Whether columns are reorderable"
msgstr "Se as colunas são reordenáveis"
-#: gtk/gtkcolumnview.c:767 gtk/gtkgridview.c:1123 gtk/gtklistview.c:867
+#: gtk/gtkcolumnview.c:766 gtk/gtkgridview.c:1121 gtk/gtklistview.c:865
msgid "Enable rubberband selection"
msgstr "Habilitar seleção elástica"
-#: gtk/gtkcolumnview.c:768 gtk/gtkgridview.c:1124 gtk/gtklistview.c:868
+#: gtk/gtkcolumnview.c:767 gtk/gtkgridview.c:1122 gtk/gtklistview.c:866
msgid "Allow selecting items by dragging with the mouse"
msgstr "Permite selecionar itens para arrastar com o mouse"
-#: gtk/gtkcolumnviewcolumn.c:240
+#: gtk/gtkcolumnviewcolumn.c:241
msgid "Column view"
msgstr "Visão de coluna"
-#: gtk/gtkcolumnviewcolumn.c:241
+#: gtk/gtkcolumnviewcolumn.c:242
msgid "Column view this column is a part of"
msgstr "A visão de coluna da qual esta coluna é parte"
-#: gtk/gtkcolumnviewcolumn.c:252 gtk/gtkdropdown.c:433 gtk/gtkgridview.c:1059
-#: gtk/gtklistview.c:819
+#: gtk/gtkcolumnviewcolumn.c:253 gtk/gtkdropdown.c:433 gtk/gtkgridview.c:1057
+#: gtk/gtklistview.c:817
msgid "Factory"
msgstr "Fábrica"
-#: gtk/gtkcolumnviewcolumn.c:253 gtk/gtkdropdown.c:434 gtk/gtkdropdown.c:448
-#: gtk/gtkgridview.c:1060 gtk/gtklistview.c:820
+#: gtk/gtkcolumnviewcolumn.c:254 gtk/gtkdropdown.c:434 gtk/gtkdropdown.c:448
+#: gtk/gtkgridview.c:1058 gtk/gtklistview.c:818
msgid "Factory for populating list items"
msgstr "Fábrica para popular itens de lista"
-#: gtk/gtkcolumnviewcolumn.c:265
+#: gtk/gtkcolumnviewcolumn.c:266
msgid "Title displayed in the header"
msgstr "Titulo exibido no cabeçalho"
-#: gtk/gtkcolumnviewcolumn.c:277
+#: gtk/gtkcolumnviewcolumn.c:278
msgid "Sorter for sorting items according to this column"
msgstr "Ordenador de para itens de ordenação conforme esta coluna"
-#: gtk/gtkcolumnviewcolumn.c:288 gtk/gtkcssnode.c:623 gtk/gtknativedialog.c:237
-#: gtk/gtkstack.c:447 gtk/gtktreeviewcolumn.c:278 gtk/gtkwidget.c:1250
+#: gtk/gtkcolumnviewcolumn.c:289 gtk/gtkcssnode.c:623 gtk/gtknativedialog.c:236
+#: gtk/gtkstack.c:480 gtk/gtktreeviewcolumn.c:276 gtk/gtkwidget.c:1288
msgid "Visible"
msgstr "Visível"
-#: gtk/gtkcolumnviewcolumn.c:289
+#: gtk/gtkcolumnviewcolumn.c:290
msgid "Whether this column is visible"
msgstr "Se esta coluna está visível"
-#: gtk/gtkcolumnviewcolumn.c:300
+#: gtk/gtkcolumnviewcolumn.c:301
msgid "Header menu"
msgstr "Menu de cabeçalho"
-#: gtk/gtkcolumnviewcolumn.c:301
+#: gtk/gtkcolumnviewcolumn.c:302
msgid "Menu to use on the title of this column"
msgstr "Menu para usar no título desta coluna"
-#: gtk/gtkcolumnviewcolumn.c:312 gtk/gtktreeviewcolumn.c:285
-#: gtk/gtkwindow.c:729
+#: gtk/gtkcolumnviewcolumn.c:313 gtk/gtktreeviewcolumn.c:283
+#: gtk/gtkwindow.c:780
msgid "Resizable"
msgstr "Redimensionável"
-#: gtk/gtkcolumnviewcolumn.c:313
+#: gtk/gtkcolumnviewcolumn.c:314
msgid "Whether this column is resizable"
msgstr "Se esta coluna é redimensionável"
-#: gtk/gtkcolumnviewcolumn.c:325
+#: gtk/gtkcolumnviewcolumn.c:326
msgid "column gets share of extra width"
msgstr "a coluna obtém uma parcela de largura extra"
-#: gtk/gtkcolumnviewcolumn.c:337
+#: gtk/gtkcolumnviewcolumn.c:338
msgid "Fixed width"
msgstr "Largura fixa"
-#: gtk/gtkcolumnviewcolumn.c:338
+#: gtk/gtkcolumnviewcolumn.c:339
msgid "Fixed width of this column"
msgstr "Largura fixa desta coluna"
-#: gtk/gtkcombobox.c:639
+#: gtk/gtkcombobox.c:636
msgid "ComboBox model"
msgstr "Modelo de ComboBox"
-#: gtk/gtkcombobox.c:640
+#: gtk/gtkcombobox.c:637
msgid "The model for the combo box"
msgstr "O modelo para a caixa de combinação"
-#: gtk/gtkcombobox.c:657
+#: gtk/gtkcombobox.c:655
msgid "Active item"
msgstr "Item ativo"
-#: gtk/gtkcombobox.c:658
+#: gtk/gtkcombobox.c:656
msgid "The item which is currently active"
msgstr "O item que está atualmente ativo"
-#: gtk/gtkcombobox.c:674
+#: gtk/gtkcombobox.c:671
msgid "Whether the combo box draws a frame around the child"
msgstr "Se a caixa de combinação desenha uma moldura ao redor do filho"
-#: gtk/gtkcombobox.c:688
+#: gtk/gtkcombobox.c:686
msgid "Popup shown"
msgstr "Menu instantâneo mostrado"
-#: gtk/gtkcombobox.c:689
+#: gtk/gtkcombobox.c:687
msgid "Whether the combo’s dropdown is shown"
msgstr "Se o menu desdobrável da caixa de combinação deve ser mostrado"
-#: gtk/gtkcombobox.c:703
+#: gtk/gtkcombobox.c:701
msgid "Button Sensitivity"
msgstr "Botão Sensibilidade"
-#: gtk/gtkcombobox.c:704
+#: gtk/gtkcombobox.c:702
msgid "Whether the dropdown button is sensitive when the model is empty"
msgstr "Se o botão desdobrável é sensível quando o modelo está vazio"
-#: gtk/gtkcombobox.c:718
+#: gtk/gtkcombobox.c:716
msgid "Whether combo box has an entry"
msgstr "Se a caixa de seleção possui uma entrada"
@@ -2184,71 +2184,71 @@ msgstr ""
"Se uma largura da janela instantânea deve ser fixada correspondente com a "
"largura alocada da caixa de seleção"
-#: gtk/gtkcombobox.c:787
+#: gtk/gtkcombobox.c:792
msgid "The child_widget"
msgstr "O child_widget"
-#: gtk/gtkconstraint.c:191
+#: gtk/gtkconstraint.c:193
msgid "Target"
msgstr "Alvo"
-#: gtk/gtkconstraint.c:192
+#: gtk/gtkconstraint.c:194
msgid "The target of the constraint"
msgstr "O alvo da restrição"
-#: gtk/gtkconstraint.c:204
+#: gtk/gtkconstraint.c:206
msgid "Target Attribute"
msgstr "Atributo alvo"
-#: gtk/gtkconstraint.c:205
+#: gtk/gtkconstraint.c:207
msgid "The attribute of the target set by the constraint"
msgstr "O atributo do alvo definido pela restrição"
-#: gtk/gtkconstraint.c:218
+#: gtk/gtkconstraint.c:220
msgid "Relation"
msgstr "Relação"
-#: gtk/gtkconstraint.c:219
+#: gtk/gtkconstraint.c:221
msgid "The relation between the source and target attributes"
msgstr "A relação entre os atributos fonte e alvo"
-#: gtk/gtkconstraint.c:235
+#: gtk/gtkconstraint.c:238
msgid "Source"
msgstr "Fonte"
-#: gtk/gtkconstraint.c:236
+#: gtk/gtkconstraint.c:239
msgid "The source of the constraint"
msgstr "A fonte da restrição"
-#: gtk/gtkconstraint.c:248
+#: gtk/gtkconstraint.c:252
msgid "Source Attribute"
msgstr "Atributo fonte"
-#: gtk/gtkconstraint.c:249
+#: gtk/gtkconstraint.c:253
msgid "The attribute of the source widget set by the constraint"
msgstr "O atributo do componente fonte definido pela restrição"
-#: gtk/gtkconstraint.c:263
+#: gtk/gtkconstraint.c:267
msgid "Multiplier"
msgstr "Multiplicador"
-#: gtk/gtkconstraint.c:264
+#: gtk/gtkconstraint.c:268
msgid "The multiplication factor to be applied to the source attribute"
msgstr "O fator de multiplicação a ser aplicado ao atributo fonte"
-#: gtk/gtkconstraint.c:276
+#: gtk/gtkconstraint.c:280
msgid "Constant"
msgstr "Constante"
-#: gtk/gtkconstraint.c:277
+#: gtk/gtkconstraint.c:281
msgid "The constant to be added to the source attribute"
msgstr "A constante a ser adicionada ao atributo fonte"
-#: gtk/gtkconstraint.c:293
+#: gtk/gtkconstraint.c:297
msgid "Strength"
msgstr "Força"
-#: gtk/gtkconstraint.c:294
+#: gtk/gtkconstraint.c:298
msgid "The strength of the constraint"
msgstr "A força da restrição"
@@ -2320,52 +2320,52 @@ msgstr "Valor inicial"
msgid "The initial specified value used for this property"
msgstr "O valor inicial usado para esta propriedade"
-#: gtk/gtkdirectorylist.c:261
+#: gtk/gtkdirectorylist.c:260
msgid "attributes"
msgstr "atributos"
-#: gtk/gtkdirectorylist.c:273
+#: gtk/gtkdirectorylist.c:272
msgid "error"
msgstr "erro"
-#: gtk/gtkdirectorylist.c:274
+#: gtk/gtkdirectorylist.c:273
msgid "Error encountered while loading files"
msgstr "Erro encontrado ao carregar arquivos"
-#: gtk/gtkdirectorylist.c:285 gtk/gtkmediafile.c:161 gtk/gtkpicture.c:342
+#: gtk/gtkdirectorylist.c:284 gtk/gtkmediafile.c:159 gtk/gtkpicture.c:343
#: gtk/gtkvideo.c:318
msgid "File"
msgstr "Arquivo"
-#: gtk/gtkdirectorylist.c:286
+#: gtk/gtkdirectorylist.c:285
msgid "The file to query"
msgstr "O arquivo para consultar"
-#: gtk/gtkdirectorylist.c:321
+#: gtk/gtkdirectorylist.c:320
msgid "monitored"
msgstr "monitorado"
-#: gtk/gtkdirectorylist.c:322
+#: gtk/gtkdirectorylist.c:321
msgid "TRUE if the directory is monitored for changes"
msgstr "VERDADEIRO se o diretório é monitorado por alterações"
-#: gtk/gtkdragicon.c:376
+#: gtk/gtkdragicon.c:374
msgid "The widget to display as drag icon."
msgstr "O componente para exibir como um ícone arrastado."
-#: gtk/gtkdragsource.c:328
+#: gtk/gtkdragsource.c:327
msgid "Content"
msgstr "Conteúdo"
-#: gtk/gtkdragsource.c:329
+#: gtk/gtkdragsource.c:328
msgid "The content provider for the dragged data"
msgstr "O provedor de conteúdo para os dados arrastados"
-#: gtk/gtkdragsource.c:343 gtk/gtkdroptargetasync.c:391 gtk/gtkdroptarget.c:617
+#: gtk/gtkdragsource.c:342 gtk/gtkdroptargetasync.c:388 gtk/gtkdroptarget.c:617
msgid "Actions"
msgstr "Ações"
-#: gtk/gtkdragsource.c:344
+#: gtk/gtkdragsource.c:343
msgid "Supported actions"
msgstr "Suporte a ações"
@@ -2385,11 +2385,11 @@ msgstr "Altura do conteúdo"
msgid "Desired height for displayed content"
msgstr "Altura desejada para conteúdo exibido"
-#: gtk/gtkdropcontrollermotion.c:226 gtk/gtkeventcontrollermotion.c:223
+#: gtk/gtkdropcontrollermotion.c:224 gtk/gtkeventcontrollermotion.c:229
msgid "Contains Pointer"
msgstr "Contém cursor"
-#: gtk/gtkdropcontrollermotion.c:227 gtk/gtkeventcontrollermotion.c:224
+#: gtk/gtkdropcontrollermotion.c:225 gtk/gtkeventcontrollermotion.c:230
msgid "Whether the pointer is in the controllers widget or a descendant"
msgstr "Se o cursor está no componente do controlador ou em um descendente"
@@ -2401,11 +2401,11 @@ msgstr "Soltar"
msgid "The ongoing drop operation"
msgstr "A operação de soltar em andamento"
-#: gtk/gtkdropcontrollermotion.c:264 gtk/gtkeventcontrollermotion.c:206
+#: gtk/gtkdropcontrollermotion.c:265 gtk/gtkeventcontrollermotion.c:211
msgid "Is Pointer"
msgstr "É cursor"
-#: gtk/gtkdropcontrollermotion.c:265 gtk/gtkeventcontrollermotion.c:207
+#: gtk/gtkdropcontrollermotion.c:266 gtk/gtkeventcontrollermotion.c:212
msgid "Whether the pointer is in the controllers widget"
msgstr "Se o cursor está no componente do controlador"
@@ -2417,35 +2417,35 @@ msgstr "Fábrica de lista"
msgid "Model for the displayed items"
msgstr "O modelo para os itens exibidos"
-#: gtk/gtkdropdown.c:472 gtk/gtklistitem.c:233 gtk/gtksingleselection.c:415
+#: gtk/gtkdropdown.c:474 gtk/gtklistitem.c:229 gtk/gtksingleselection.c:411
msgid "Selected"
msgstr "Selecionado"
-#: gtk/gtkdropdown.c:473 gtk/gtksingleselection.c:416
+#: gtk/gtkdropdown.c:475 gtk/gtksingleselection.c:412
msgid "Position of the selected item"
msgstr "A posição do item selecionado"
-#: gtk/gtkdropdown.c:484 gtk/gtksingleselection.c:427
+#: gtk/gtkdropdown.c:486 gtk/gtksingleselection.c:423
msgid "Selected Item"
msgstr "Item selecionado"
-#: gtk/gtkdropdown.c:485 gtk/gtksingleselection.c:428
+#: gtk/gtkdropdown.c:487 gtk/gtksingleselection.c:424
msgid "The selected item"
msgstr "O item selecionado"
-#: gtk/gtkdropdown.c:498
+#: gtk/gtkdropdown.c:501
msgid "Enable search"
msgstr "Habilitar pesquisa"
-#: gtk/gtkdropdown.c:499
+#: gtk/gtkdropdown.c:502
msgid "Whether to show a search entry in the popup"
msgstr "Se deve mostrar uma entrada de pesquisa na janela instantânea"
-#: gtk/gtkdropdown.c:514
+#: gtk/gtkdropdown.c:519
msgid "Expression to determine strings to search for"
msgstr "Expressão para determinar strings para pesquisar"
-#: gtk/gtkdroptargetasync.c:401 gtk/gtkdroptarget.c:641
+#: gtk/gtkdroptargetasync.c:398 gtk/gtkdroptarget.c:641
msgid "Formats"
msgstr "Formatos"
@@ -2461,73 +2461,73 @@ msgstr "Soltar atual"
msgid "The supported formats"
msgstr "Os formatos suportados"
-#: gtk/gtkdroptarget.c:669
+#: gtk/gtkdroptarget.c:670
msgid "Preload"
msgstr "Pré-carregar"
-#: gtk/gtkdroptarget.c:670
+#: gtk/gtkdroptarget.c:671
msgid "Whether drop data should be preloaded while hovering"
msgstr ""
"Se os dados de soltar devem ser pré-carregados ao passar o cursor por cima"
-#: gtk/gtkdroptarget.c:687
+#: gtk/gtkdroptarget.c:691
msgid "The value for this drop operation"
msgstr "O valor para esta operação de soltar"
-#: gtk/gtkeditable.c:379
+#: gtk/gtkeditable.c:384
msgid "The contents of the entry"
msgstr "O conteúdo da entrada"
-#: gtk/gtkeditable.c:385
+#: gtk/gtkeditable.c:395
msgid "Cursor Position"
msgstr "Posição do cursor"
-#: gtk/gtkeditable.c:386
+#: gtk/gtkeditable.c:396
msgid "The current position of the insertion cursor in chars"
msgstr "A posição atual do cursor de inserção em caracteres"
-#: gtk/gtkeditable.c:393
+#: gtk/gtkeditable.c:408
msgid "Enable Undo"
msgstr "Habilitar desfazimento"
-#: gtk/gtkeditable.c:394
+#: gtk/gtkeditable.c:409
msgid "If undo/redo should be enabled for the editable"
msgstr "Se desfazer/refazer devem estar habilitados para o editável"
-#: gtk/gtkeditable.c:400
+#: gtk/gtkeditable.c:420
msgid "Selection Bound"
msgstr "Limite da seleção"
-#: gtk/gtkeditable.c:401
+#: gtk/gtkeditable.c:421
msgid ""
"The position of the opposite end of the selection from the cursor in chars"
msgstr "A posição do lado oposto da seleção a partir do cursor em caracteres"
-#: gtk/gtkeditable.c:409
+#: gtk/gtkeditable.c:434
msgid "Whether the entry contents can be edited"
msgstr "Se o conteúdo da entrada pode ser editado"
-#: gtk/gtkeditable.c:415
+#: gtk/gtkeditable.c:445
msgid "Width in chars"
msgstr "Largura em caracteres"
-#: gtk/gtkeditable.c:416
+#: gtk/gtkeditable.c:446
msgid "Number of characters to leave space for in the entry"
msgstr "Número de caracteres para deixar de espaço na entrada"
-#: gtk/gtkeditable.c:423
+#: gtk/gtkeditable.c:458
msgid "Maximum width in characters"
msgstr "Largura máxima em caracteres"
-#: gtk/gtkeditable.c:424
+#: gtk/gtkeditable.c:459
msgid "The desired maximum width of the entry, in characters"
msgstr "A largura máxima desejada da entrada, em caracteres"
-#: gtk/gtkeditable.c:431 gtk/gtklabel.c:2234
+#: gtk/gtkeditable.c:473 gtk/gtklabel.c:2254
msgid "X align"
msgstr "Alinhamento x"
-#: gtk/gtkeditable.c:432 gtk/gtklabel.c:2235
+#: gtk/gtkeditable.c:474 gtk/gtklabel.c:2255
msgid ""
"The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL "
"layouts."
@@ -2535,69 +2535,69 @@ msgstr ""
"O alinhamento horizontal, de 0 (esquerda) para 1 (direita). Invertido para "
"disposições direita-para-esquerda."
-#: gtk/gtkeditablelabel.c:373
+#: gtk/gtkeditablelabel.c:372
msgid "Whether the widget is in editing mode"
msgstr "Se o componente está no modo de edição"
-#: gtk/gtkentrybuffer.c:352
+#: gtk/gtkentrybuffer.c:349
msgid "The contents of the buffer"
msgstr "O conteúdo do buffer"
-#: gtk/gtkentrybuffer.c:363 gtk/gtkentry.c:560
+#: gtk/gtkentrybuffer.c:360 gtk/gtkentry.c:598
msgid "Text length"
msgstr "Tamanho do texto"
-#: gtk/gtkentrybuffer.c:364
+#: gtk/gtkentrybuffer.c:361
msgid "Length of the text currently in the buffer"
msgstr "Comprimento do texto atualmente no buffer"
-#: gtk/gtkentrybuffer.c:375 gtk/gtkentry.c:487 gtk/gtktext.c:752
+#: gtk/gtkentrybuffer.c:372 gtk/gtkentry.c:499 gtk/gtktext.c:772
msgid "Maximum length"
msgstr "Comprimento máximo"
-#: gtk/gtkentrybuffer.c:376 gtk/gtkentry.c:488
+#: gtk/gtkentrybuffer.c:373 gtk/gtkentry.c:500
msgid "Maximum number of characters for this entry. Zero if no maximum"
msgstr ""
"Número máximo de caracteres para esta entrada. Zero se não houver máximo"
-#: gtk/gtkentry.c:480 gtk/gtktext.c:745
+#: gtk/gtkentry.c:487 gtk/gtktext.c:758
msgid "Text Buffer"
msgstr "Buffer de texto"
-#: gtk/gtkentry.c:481
+#: gtk/gtkentry.c:488
msgid "Text buffer object which actually stores entry text"
msgstr "Objeto de buffer de texto que efetivamente armazena a entrada de texto"
-#: gtk/gtkentry.c:495 gtk/gtktext.c:918
+#: gtk/gtkentry.c:513 gtk/gtktext.c:964
msgid "Visibility"
msgstr "Visibilidade"
-#: gtk/gtkentry.c:496 gtk/gtktext.c:919
+#: gtk/gtkentry.c:514 gtk/gtktext.c:965
msgid ""
"FALSE displays the “invisible char” instead of the actual text (password "
"mode)"
msgstr ""
"FALSO exibe o “caractere de invisibilidade” em vez do texto real (modo senha)"
-#: gtk/gtkentry.c:503
+#: gtk/gtkentry.c:526
msgid "FALSE removes outside bevel from entry"
msgstr "FALSO remove o baixo-relevo externo da entrada"
-#: gtk/gtkentry.c:509 gtk/gtktext.c:760
+#: gtk/gtkentry.c:537 gtk/gtktext.c:785
msgid "Invisible character"
msgstr "Caractere de invisibilidade"
-#: gtk/gtkentry.c:510
+#: gtk/gtkentry.c:538
msgid "The character to use when masking entry contents (in “password mode”)"
msgstr "O caractere usado para mascarar o conteúdo digitado (em “modo senha”)"
-#: gtk/gtkentry.c:516 gtk/gtkpasswordentry.c:443 gtk/gtksearchentry.c:296
-#: gtk/gtktext.c:767
+#: gtk/gtkentry.c:549 gtk/gtkpasswordentry.c:455 gtk/gtksearchentry.c:313
+#: gtk/gtktext.c:797
msgid "Activates default"
msgstr "Ativa padrão"
-#: gtk/gtkentry.c:517 gtk/gtkpasswordentry.c:444 gtk/gtksearchentry.c:297
-#: gtk/gtktext.c:768
+#: gtk/gtkentry.c:550 gtk/gtkpasswordentry.c:456 gtk/gtksearchentry.c:314
+#: gtk/gtktext.c:798
msgid ""
"Whether to activate the default widget (such as the default button in a "
"dialog) when Enter is pressed"
@@ -2605,55 +2605,55 @@ msgstr ""
"Ativar o componente padrão (tal como o botão padrão num diálogo) quando a "
"tecla Enter for pressionada"
-#: gtk/gtkentry.c:523 gtk/gtktext.c:774
+#: gtk/gtkentry.c:561 gtk/gtktext.c:809
msgid "Scroll offset"
msgstr "Deslocamento da rolagem"
-#: gtk/gtkentry.c:524
+#: gtk/gtkentry.c:562
msgid "Number of pixels of the entry scrolled off the screen to the left"
msgstr "Número de pixels da entrada rolados para fora da tela à esquerda"
-#: gtk/gtkentry.c:536 gtk/gtktext.c:787
+#: gtk/gtkentry.c:574 gtk/gtktext.c:822
msgid "Truncate multiline"
msgstr "Truncar múltiplos"
-#: gtk/gtkentry.c:537 gtk/gtktext.c:788
+#: gtk/gtkentry.c:575 gtk/gtktext.c:823
msgid "Whether to truncate multiline pastes to one line."
msgstr "Truncar ou não múltiplas linhas coladas em linha única."
-#: gtk/gtkentry.c:548 gtk/gtktext.c:799 gtk/gtktextview.c:992
+#: gtk/gtkentry.c:586 gtk/gtktext.c:834 gtk/gtktextview.c:1056
msgid "Overwrite mode"
msgstr "Modo de sobrescrita"
-#: gtk/gtkentry.c:549 gtk/gtktext.c:800
+#: gtk/gtkentry.c:587 gtk/gtktext.c:835
msgid "Whether new text overwrites existing text"
msgstr "Se o novo texto sobrescreve o texto existente"
-#: gtk/gtkentry.c:561
+#: gtk/gtkentry.c:599
msgid "Length of the text currently in the entry"
msgstr "Tamanho do texto atualmente no campo de entrada"
-#: gtk/gtkentry.c:573 gtk/gtktext.c:811
+#: gtk/gtkentry.c:611 gtk/gtktext.c:846
msgid "Invisible character set"
msgstr "Caractere de invisibilidade definido"
-#: gtk/gtkentry.c:574 gtk/gtktext.c:812
+#: gtk/gtkentry.c:612 gtk/gtktext.c:847
msgid "Whether the invisible character has been set"
msgstr "Se o caractere de invisibilidade foi definido"
-#: gtk/gtkentry.c:585
+#: gtk/gtkentry.c:623
msgid "Progress Fraction"
msgstr "Fração do progresso"
-#: gtk/gtkentry.c:586
+#: gtk/gtkentry.c:624
msgid "The current fraction of the task that’s been completed"
msgstr "A fração atual da tarefa que foi concluída"
-#: gtk/gtkentry.c:599
+#: gtk/gtkentry.c:639
msgid "Progress Pulse Step"
msgstr "Incremento do impulso do progresso"
-#: gtk/gtkentry.c:600
+#: gtk/gtkentry.c:640
msgid ""
"The fraction of total entry width to move the progress bouncing block for "
"each call to gtk_entry_progress_pulse()"
@@ -2661,355 +2661,355 @@ msgstr ""
"Em que proporção da largura total da entrada o bloco quicante de progresso "
"deve ser movido para cada chamada a gtk_entry_progress_pulse()"
-#: gtk/gtkentry.c:614 gtk/gtkpasswordentry.c:437 gtk/gtksearchentry.c:290
+#: gtk/gtkentry.c:654 gtk/gtkpasswordentry.c:444 gtk/gtksearchentry.c:302
msgid "Show text in the entry when it’s empty and unfocused"
msgstr "Mostrar texto na entrada quando ele está vazio e sem foco"
-#: gtk/gtkentry.c:625
+#: gtk/gtkentry.c:665
msgid "Primary paintable"
msgstr "Primário pintável"
-#: gtk/gtkentry.c:626
+#: gtk/gtkentry.c:666
msgid "Primary paintable for the entry"
msgstr "Primário pintável para a entrada"
-#: gtk/gtkentry.c:637
+#: gtk/gtkentry.c:677
msgid "Secondary paintable"
msgstr "Secundário pintável"
-#: gtk/gtkentry.c:638
+#: gtk/gtkentry.c:678
msgid "Secondary paintable for the entry"
msgstr "Secundário pintável para a entrada"
-#: gtk/gtkentry.c:649
+#: gtk/gtkentry.c:689
msgid "Primary icon name"
msgstr "Nome do ícone primário"
-#: gtk/gtkentry.c:650
+#: gtk/gtkentry.c:690
msgid "Icon name for primary icon"
msgstr "Nome de ícone para o ícone primário"
-#: gtk/gtkentry.c:661
+#: gtk/gtkentry.c:701
msgid "Secondary icon name"
msgstr "Nome do ícone secundário"
-#: gtk/gtkentry.c:662
+#: gtk/gtkentry.c:702
msgid "Icon name for secondary icon"
msgstr "Nome de ícone para o ícone secundário"
-#: gtk/gtkentry.c:673
+#: gtk/gtkentry.c:713
msgid "Primary GIcon"
msgstr "GIcon primário"
-#: gtk/gtkentry.c:674
+#: gtk/gtkentry.c:714
msgid "GIcon for primary icon"
msgstr "GIcon do ícone primário"
-#: gtk/gtkentry.c:685
+#: gtk/gtkentry.c:725
msgid "Secondary GIcon"
msgstr "GIcon secundário"
-#: gtk/gtkentry.c:686
+#: gtk/gtkentry.c:726
msgid "GIcon for secondary icon"
msgstr "GIcon para o ícone secundário"
-#: gtk/gtkentry.c:697
+#: gtk/gtkentry.c:737
msgid "Primary storage type"
msgstr "Tipo de armazenamento primário"
-#: gtk/gtkentry.c:698
+#: gtk/gtkentry.c:738
msgid "The representation being used for primary icon"
msgstr "A representação usada para o ícone primário"
-#: gtk/gtkentry.c:710
+#: gtk/gtkentry.c:750
msgid "Secondary storage type"
msgstr "Tipo de armazenamento secundário"
-#: gtk/gtkentry.c:711
+#: gtk/gtkentry.c:751
msgid "The representation being used for secondary icon"
msgstr "A representação usada para o ícone secundário"
-#: gtk/gtkentry.c:729
+#: gtk/gtkentry.c:770
msgid "Primary icon activatable"
msgstr "Ícone primário ativável"
-#: gtk/gtkentry.c:730
+#: gtk/gtkentry.c:771
msgid "Whether the primary icon is activatable"
msgstr "Se o ícone primário é ativável"
-#: gtk/gtkentry.c:747
+#: gtk/gtkentry.c:789
msgid "Secondary icon activatable"
msgstr "Ícone secundário ativável"
-#: gtk/gtkentry.c:748
+#: gtk/gtkentry.c:790
msgid "Whether the secondary icon is activatable"
msgstr "Se o ícone secundário é ativável"
-#: gtk/gtkentry.c:766
+#: gtk/gtkentry.c:808
msgid "Primary icon sensitive"
msgstr "Ícone primário sensível"
-#: gtk/gtkentry.c:767
+#: gtk/gtkentry.c:809
msgid "Whether the primary icon is sensitive"
msgstr "Se o ícone primário é sensível"
-#: gtk/gtkentry.c:785
+#: gtk/gtkentry.c:827
msgid "Secondary icon sensitive"
msgstr "Ícone secundário sensível"
-#: gtk/gtkentry.c:786
+#: gtk/gtkentry.c:828
msgid "Whether the secondary icon is sensitive"
msgstr "Se o ícone secundário é sensível"
-#: gtk/gtkentry.c:799
+#: gtk/gtkentry.c:841
msgid "Primary icon tooltip text"
msgstr "Dica (texto) do ícone primário"
-#: gtk/gtkentry.c:800 gtk/gtkentry.c:829
+#: gtk/gtkentry.c:842 gtk/gtkentry.c:870
msgid "The contents of the tooltip on the primary icon"
msgstr "O conteúdo da dica do ícone primário"
-#: gtk/gtkentry.c:813
+#: gtk/gtkentry.c:855
msgid "Secondary icon tooltip text"
msgstr "Dica (texto) do ícone secundário"
-#: gtk/gtkentry.c:814 gtk/gtkentry.c:844
+#: gtk/gtkentry.c:856 gtk/gtkentry.c:884
msgid "The contents of the tooltip on the secondary icon"
msgstr "O conteúdo da dica do ícone primário"
-#: gtk/gtkentry.c:828
+#: gtk/gtkentry.c:869
msgid "Primary icon tooltip markup"
msgstr "Dica (marcação) do ícone primário"
-#: gtk/gtkentry.c:843
+#: gtk/gtkentry.c:883
msgid "Secondary icon tooltip markup"
msgstr "Dica (marcação) do ícone secundário"
-#: gtk/gtkentry.c:860 gtk/gtktext.c:841 gtk/gtktextview.c:1018
+#: gtk/gtkentry.c:901 gtk/gtktext.c:877 gtk/gtktextview.c:1087
msgid "IM module"
msgstr "Módulo de entrada"
-#: gtk/gtkentry.c:861 gtk/gtktext.c:842 gtk/gtktextview.c:1019
+#: gtk/gtkentry.c:902 gtk/gtktext.c:878 gtk/gtktextview.c:1088
msgid "Which IM module should be used"
msgstr "Qual módulo de método de entrada deve ser usado"
-#: gtk/gtkentry.c:872
+#: gtk/gtkentry.c:913
msgid "Completion"
msgstr "Auto completar"
-#: gtk/gtkentry.c:873
+#: gtk/gtkentry.c:914
msgid "The auxiliary completion object"
msgstr "O objeto auxiliar de auto completar"
-#: gtk/gtkentry.c:891 gtk/gtkimcontext.c:337 gtk/gtktext.c:860
-#: gtk/gtktextview.c:1034
+#: gtk/gtkentry.c:932 gtk/gtkimcontext.c:322 gtk/gtktext.c:896
+#: gtk/gtktextview.c:1103
msgid "Purpose"
msgstr "Propósito"
-#: gtk/gtkentry.c:892 gtk/gtkimcontext.c:338 gtk/gtktext.c:861
-#: gtk/gtktextview.c:1035
+#: gtk/gtkentry.c:933 gtk/gtkimcontext.c:323 gtk/gtktext.c:897
+#: gtk/gtktextview.c:1104
msgid "Purpose of the text field"
msgstr "O propósito do campo de texto"
-#: gtk/gtkentry.c:905 gtk/gtkimcontext.c:345 gtk/gtktext.c:874
-#: gtk/gtktextview.c:1050
+#: gtk/gtkentry.c:947 gtk/gtkimcontext.c:330 gtk/gtktext.c:910
+#: gtk/gtktextview.c:1119
msgid "hints"
msgstr "dicas"
-#: gtk/gtkentry.c:906 gtk/gtkimcontext.c:346 gtk/gtktext.c:875
-#: gtk/gtktextview.c:1051
+#: gtk/gtkentry.c:948 gtk/gtkimcontext.c:331 gtk/gtktext.c:911
+#: gtk/gtktextview.c:1120
msgid "Hints for the text field behaviour"
msgstr "As dicas do comportamento do campo de texto"
-#: gtk/gtkentry.c:924
+#: gtk/gtkentry.c:966
msgid "A list of style attributes to apply to the text of the entry"
msgstr "Uma lista de atributos de estilo para aplicar ao texto da entrada"
-#: gtk/gtkentry.c:935 gtk/gtktext.c:904 gtk/gtktexttag.c:557
-#: gtk/gtktextview.c:968
+#: gtk/gtkentry.c:977 gtk/gtktext.c:940 gtk/gtktexttag.c:712
+#: gtk/gtktextview.c:1017
msgid "Tabs"
msgstr "Tabulações"
-#: gtk/gtkentry.c:936
+#: gtk/gtkentry.c:978
msgid "A list of tabstop locations to apply to the text of the entry"
msgstr ""
"Uma lista de localizações de paradas de tabulação para aplicar ao texto da "
"entrada"
-#: gtk/gtkentry.c:948
+#: gtk/gtkentry.c:990
msgid "Emoji icon"
msgstr "Ícone de Emoji"
-#: gtk/gtkentry.c:949
+#: gtk/gtkentry.c:991
msgid "Whether to show an icon for Emoji"
msgstr "Se deve mostrar um ícone para Emoji"
-#: gtk/gtkentry.c:961 gtk/gtklabel.c:2399 gtk/gtkpasswordentry.c:463
-#: gtk/gtktext.c:938 gtk/gtktextview.c:1074
+#: gtk/gtkentry.c:1002 gtk/gtklabel.c:2443 gtk/gtkpasswordentry.c:480
+#: gtk/gtktext.c:989 gtk/gtktextview.c:1150
msgid "Extra menu"
msgstr "Menu extra"
-#: gtk/gtkentry.c:962 gtk/gtkpasswordentry.c:464
+#: gtk/gtkentry.c:1003 gtk/gtkpasswordentry.c:481
msgid "Model menu to append to the context menu"
msgstr "Modelo de menu para acrescentar ao menu de contexto"
-#: gtk/gtkentry.c:968 gtk/gtktext.c:911
+#: gtk/gtkentry.c:1015 gtk/gtktext.c:952
msgid "Enable Emoji completion"
msgstr "Habilitar completamento de Emoji"
-#: gtk/gtkentry.c:969 gtk/gtktext.c:912
+#: gtk/gtkentry.c:1016 gtk/gtktext.c:953
msgid "Whether to suggest Emoji replacements"
msgstr "Se deve sugerir substituições de Emoji"
-#: gtk/gtkentrycompletion.c:294
+#: gtk/gtkentrycompletion.c:299
msgid "Completion Model"
msgstr "Modelo de completar"
-#: gtk/gtkentrycompletion.c:295
+#: gtk/gtkentrycompletion.c:300
msgid "The model to find matches in"
msgstr "O modelo para localizar correspondências"
-#: gtk/gtkentrycompletion.c:301
+#: gtk/gtkentrycompletion.c:306
msgid "Minimum Key Length"
msgstr "Tamanho mínimo da chave"
-#: gtk/gtkentrycompletion.c:302
+#: gtk/gtkentrycompletion.c:307
msgid "Minimum length of the search key in order to look up matches"
msgstr "Tamanho mínimo da chave de pesquisa para procurar correspondências"
-#: gtk/gtkentrycompletion.c:314 gtk/gtkiconview.c:393
+#: gtk/gtkentrycompletion.c:320 gtk/gtkiconview.c:393
msgid "Text column"
msgstr "Coluna de texto"
-#: gtk/gtkentrycompletion.c:315
+#: gtk/gtkentrycompletion.c:321
msgid "The column of the model containing the strings."
msgstr "A coluna do modelo contendo as strings."
-#: gtk/gtkentrycompletion.c:329
+#: gtk/gtkentrycompletion.c:336
msgid "Inline completion"
msgstr "Completar automaticamente"
-#: gtk/gtkentrycompletion.c:330
+#: gtk/gtkentrycompletion.c:337
msgid "Whether the common prefix should be inserted automatically"
msgstr "Se o prefixo comum deve ser inserido automaticamente"
-#: gtk/gtkentrycompletion.c:342
+#: gtk/gtkentrycompletion.c:349
msgid "Popup completion"
msgstr "Completar em janela instantânea"
-#: gtk/gtkentrycompletion.c:343
+#: gtk/gtkentrycompletion.c:350
msgid "Whether the completions should be shown in a popup window"
msgstr ""
"Se o resultado de completar palavras deve ser mostrado em uma janela "
"instantânea"
-#: gtk/gtkentrycompletion.c:355
+#: gtk/gtkentrycompletion.c:362
msgid "Popup set width"
msgstr "Definir largura da janela instantânea"
-#: gtk/gtkentrycompletion.c:356
+#: gtk/gtkentrycompletion.c:363
msgid "If TRUE, the popup window will have the same size as the entry"
msgstr "Se VERDADEIRO, a janela instantânea terá o mesmo tamanho que a entrada"
-#: gtk/gtkentrycompletion.c:370
+#: gtk/gtkentrycompletion.c:378
msgid "Popup single match"
msgstr "Único ocorrência na janela instantânea"
-#: gtk/gtkentrycompletion.c:371
+#: gtk/gtkentrycompletion.c:379
msgid "If TRUE, the popup window will appear for a single match."
msgstr ""
"Se VERDADEIRO, a janela instantânea aparecerá para uma única ocorrência."
-#: gtk/gtkentrycompletion.c:383
+#: gtk/gtkentrycompletion.c:391
msgid "Inline selection"
msgstr "Seleção na própria linha"
-#: gtk/gtkentrycompletion.c:384
+#: gtk/gtkentrycompletion.c:392
msgid "Your description here"
msgstr "Sua descrição aqui"
-#: gtk/gtkeventcontroller.c:198 gtk/gtktreeviewcolumn.c:369
-#: gtk/gtkwidgetpaintable.c:250
+#: gtk/gtkeventcontroller.c:204 gtk/gtktreeviewcolumn.c:367
+#: gtk/gtkwidgetpaintable.c:247
msgid "Widget"
msgstr "Componente"
-#: gtk/gtkeventcontroller.c:199
+#: gtk/gtkeventcontroller.c:205
msgid "Widget the gesture relates to"
msgstr "Componente ao qual o gesto está relacionado"
-#: gtk/gtkeventcontroller.c:210
+#: gtk/gtkeventcontroller.c:216
msgid "Propagation phase"
msgstr "Fase de propagação"
-#: gtk/gtkeventcontroller.c:211
+#: gtk/gtkeventcontroller.c:217
msgid "Propagation phase at which this controller is run"
msgstr "Fase de propagação na qual este controlador é executado"
-#: gtk/gtkeventcontroller.c:223
+#: gtk/gtkeventcontroller.c:229
msgid "Propagation limit"
msgstr "Limite de propagação"
-#: gtk/gtkeventcontroller.c:224
+#: gtk/gtkeventcontroller.c:230
msgid "Propagation limit for events handled by this controller"
msgstr "Limite de propagação para eventos lidados por este controlador"
-#: gtk/gtkeventcontroller.c:237
+#: gtk/gtkeventcontroller.c:243
msgid "Name for this controller"
msgstr "Nome para este controlador"
-#: gtk/gtkeventcontrollerfocus.c:198
+#: gtk/gtkeventcontrollerfocus.c:203
msgid "Is Focus"
msgstr "É foco"
-#: gtk/gtkeventcontrollerfocus.c:199
+#: gtk/gtkeventcontrollerfocus.c:204
msgid "Whether the focus is in the controllers widget"
msgstr "Se o foco está no componente do controlador"
-#: gtk/gtkeventcontrollerfocus.c:216
+#: gtk/gtkeventcontrollerfocus.c:222
msgid "Contains Focus"
msgstr "Contém foco"
-#: gtk/gtkeventcontrollerfocus.c:217
+#: gtk/gtkeventcontrollerfocus.c:223
msgid "Whether the focus is in a descendant of the controllers widget"
msgstr "Se o foco está em um descendente do componente do controlador"
-#: gtk/gtkeventcontrollerscroll.c:373 gtk/gtkeventcontrollerscroll.c:374
+#: gtk/gtkeventcontrollerscroll.c:372 gtk/gtkeventcontrollerscroll.c:373
msgid "Flags"
msgstr "Sinalizadores"
-#: gtk/gtkexpander.c:313 gtk/gtktreelistmodel.c:1090
+#: gtk/gtkexpander.c:320 gtk/gtktreelistmodel.c:1095
msgid "Expanded"
msgstr "Expandido"
-#: gtk/gtkexpander.c:314
+#: gtk/gtkexpander.c:321
msgid "Whether the expander has been opened to reveal the child widget"
msgstr "Se o expansor foi aberto para revelar o componente filho"
-#: gtk/gtkexpander.c:322
+#: gtk/gtkexpander.c:334
msgid "Text of the expander’s label"
msgstr "Texto do rótulo do expansor"
-#: gtk/gtkexpander.c:337 gtk/gtklabel.c:2204 gtk/gtkmodelbutton.c:1212
+#: gtk/gtkexpander.c:359 gtk/gtklabel.c:2211 gtk/gtkmodelbutton.c:1210
msgid "Use markup"
msgstr "Usar marcação"
-#: gtk/gtkexpander.c:338 gtk/gtklabel.c:2205
+#: gtk/gtkexpander.c:360 gtk/gtklabel.c:2212
msgid "The text of the label includes XML markup. See pango_parse_markup()"
msgstr "O texto do rótulo inclui marcação XML. Veja pango_parse_markup()"
-#: gtk/gtkexpander.c:345 gtk/gtkframe.c:180
+#: gtk/gtkexpander.c:372 gtk/gtkframe.c:195
msgid "Label widget"
msgstr "Componente de rótulo"
-#: gtk/gtkexpander.c:346
+#: gtk/gtkexpander.c:373
msgid "A widget to display in place of the usual expander label"
msgstr "Um componente a exibir em vez do rótulo do expansor usual"
-#: gtk/gtkexpander.c:359
+#: gtk/gtkexpander.c:386
msgid "Resize toplevel"
msgstr "Redimensionar nível superior"
-#: gtk/gtkexpander.c:360
+#: gtk/gtkexpander.c:387
msgid ""
"Whether the expander will resize the toplevel window upon expanding and "
"collapsing"
@@ -3017,51 +3017,51 @@ msgstr ""
"Se o expansor irá redimensionar a janela do nível superior quando expandindo "
"e recolhendo"
-#: gtk/gtkfilechooser.c:83 gtk/gtkshortcut.c:161
+#: gtk/gtkfilechooser.c:87 gtk/gtkshortcut.c:156
msgid "Action"
msgstr "Ação"
-#: gtk/gtkfilechooser.c:84
+#: gtk/gtkfilechooser.c:88
msgid "The type of operation that the file selector is performing"
msgstr "O tipo de operação que o seletor de arquivos está executando"
-#: gtk/gtkfilechooser.c:90 gtk/gtkfilterlistmodel.c:565
+#: gtk/gtkfilechooser.c:101 gtk/gtkfilterlistmodel.c:563
msgid "Filter"
msgstr "Filtro"
-#: gtk/gtkfilechooser.c:91
+#: gtk/gtkfilechooser.c:102
msgid "The current filter for selecting which files are displayed"
msgstr "O filtro atual para selecionar que arquivos serão exibidos"
-#: gtk/gtkfilechooser.c:96
+#: gtk/gtkfilechooser.c:113
msgid "Select Multiple"
msgstr "Selecionar múltiplos"
-#: gtk/gtkfilechooser.c:97
+#: gtk/gtkfilechooser.c:114
msgid "Whether to allow multiple files to be selected"
msgstr "Permitir ou não a seleção de múltiplos arquivos"
-#: gtk/gtkfilechooser.c:112
+#: gtk/gtkfilechooser.c:129
msgid "Filters"
msgstr "Filtros"
-#: gtk/gtkfilechooser.c:113
+#: gtk/gtkfilechooser.c:130
msgid "List model of filters"
msgstr "Lista modelo de filtros"
-#: gtk/gtkfilechooser.c:128
+#: gtk/gtkfilechooser.c:145
msgid "Shortcut Folders"
msgstr "Pastas de atalhos"
-#: gtk/gtkfilechooser.c:129
+#: gtk/gtkfilechooser.c:146
msgid "List model of shortcut folders"
msgstr "Lista modelo de pastas de atalhos"
-#: gtk/gtkfilechooser.c:141
+#: gtk/gtkfilechooser.c:158
msgid "Allow folder creation"
msgstr "Permitir criação de pasta"
-#: gtk/gtkfilechooser.c:142
+#: gtk/gtkfilechooser.c:159
msgid ""
"Whether a file chooser not in open mode will offer the user to create new "
"folders."
@@ -3069,28 +3069,28 @@ msgstr ""
"Se um seletor de arquivo não em modo de abrir permitirá ao usuário criar "
"novas pastas."
-#: gtk/gtkfilechoosernative.c:771
+#: gtk/gtkfilechoosernative.c:778
msgid "Accept label"
msgstr "Rótulo de aceitar"
-#: gtk/gtkfilechoosernative.c:772
+#: gtk/gtkfilechoosernative.c:779
msgid "The label on the accept button"
msgstr "O rótulo do botão de aceitar"
-#: gtk/gtkfilechoosernative.c:784
+#: gtk/gtkfilechoosernative.c:791
msgid "Cancel label"
msgstr "Rótulo de cancelar"
-#: gtk/gtkfilechoosernative.c:785
+#: gtk/gtkfilechoosernative.c:792
msgid "The label on the cancel button"
msgstr "O rótulo do botão de cancelar"
-#: gtk/gtkfilechooserwidget.c:7607 gtk/gtkfilechooserwidget.c:7608
+#: gtk/gtkfilechooserwidget.c:7630 gtk/gtkfilechooserwidget.c:7631
msgid "Search mode"
msgstr "Modo de pesquisa"
-#: gtk/gtkfilechooserwidget.c:7614 gtk/gtkfilechooserwidget.c:7615
-#: gtk/gtkshortcutsshortcut.c:633
+#: gtk/gtkfilechooserwidget.c:7637 gtk/gtkfilechooserwidget.c:7638
+#: gtk/gtkshortcutsshortcut.c:644
msgid "Subtitle"
msgstr "Subtítulo"
@@ -3098,74 +3098,74 @@ msgstr "Subtítulo"
msgid "The human-readable name for this filter"
msgstr "Um nome legível por humanos para este filtro"
-#: gtk/gtkfilterlistmodel.c:566
+#: gtk/gtkfilterlistmodel.c:564
msgid "The filter set for this model"
msgstr "O filtro definido para este modelo"
-#: gtk/gtkfilterlistmodel.c:577 gtk/gtksortlistmodel.c:784
+#: gtk/gtkfilterlistmodel.c:575 gtk/gtksortlistmodel.c:781
msgid "Incremental"
msgstr "Incremental"
-#: gtk/gtkfilterlistmodel.c:578
+#: gtk/gtkfilterlistmodel.c:576
msgid "Filter items incrementally"
msgstr "Filtra itens incrementalmente"
-#: gtk/gtkfilterlistmodel.c:590 gtk/gtkselectionfiltermodel.c:228
+#: gtk/gtkfilterlistmodel.c:588 gtk/gtkselectionfiltermodel.c:225
msgid "The model being filtered"
msgstr "O modelo sendo filtrado"
-#: gtk/gtkfilterlistmodel.c:601 gtk/gtksortlistmodel.c:808
+#: gtk/gtkfilterlistmodel.c:599 gtk/gtksortlistmodel.c:805
msgid "Pending"
msgstr "Pendente"
-#: gtk/gtkfilterlistmodel.c:602
+#: gtk/gtkfilterlistmodel.c:600
msgid "Number of items not yet filtered"
msgstr "Número de itens ainda não filtrados"
-#: gtk/gtkfixedlayout.c:155
+#: gtk/gtkfixedlayout.c:163
msgid "transform"
msgstr "transformação"
-#: gtk/gtkfixedlayout.c:156
+#: gtk/gtkfixedlayout.c:164
msgid "The transform of a child of a fixed layout"
msgstr "A transformação de um filho de um layout fixo"
-#: gtk/gtkflattenlistmodel.c:414
+#: gtk/gtkflattenlistmodel.c:410
msgid "The model being flattened"
msgstr "O modelo sendo achatado"
-#: gtk/gtkflowbox.c:3597 gtk/gtkiconview.c:360 gtk/gtklistbox.c:493
-#: gtk/gtktreeselection.c:139
+#: gtk/gtkflowbox.c:3612 gtk/gtkiconview.c:360 gtk/gtklistbox.c:504
+#: gtk/gtktreeselection.c:135
msgid "Selection mode"
msgstr "Modo de seleção"
-#: gtk/gtkflowbox.c:3598 gtk/gtkiconview.c:361 gtk/gtklistbox.c:494
+#: gtk/gtkflowbox.c:3613 gtk/gtkiconview.c:361 gtk/gtklistbox.c:505
msgid "The selection mode"
msgstr "O modo de seleção"
-#: gtk/gtkflowbox.c:3611 gtk/gtkiconview.c:589 gtk/gtklistbox.c:501
-#: gtk/gtktreeview.c:1157
+#: gtk/gtkflowbox.c:3626 gtk/gtkiconview.c:589 gtk/gtklistbox.c:518
+#: gtk/gtktreeview.c:1158
msgid "Activate on Single Click"
msgstr "Ativar com clique único"
-#: gtk/gtkflowbox.c:3612 gtk/gtkiconview.c:590 gtk/gtklistbox.c:502
-#: gtk/gtktreeview.c:1158
+#: gtk/gtkflowbox.c:3627 gtk/gtkiconview.c:590 gtk/gtklistbox.c:519
+#: gtk/gtktreeview.c:1159
msgid "Activate row on a single click"
msgstr "Ativar linha com um clique único"
-#: gtk/gtkflowbox.c:3618 gtk/gtklistbox.c:508 gtk/gtklistbox.c:509
+#: gtk/gtkflowbox.c:3638 gtk/gtklistbox.c:530 gtk/gtklistbox.c:531
msgid "Accept unpaired release"
msgstr "Aceitar liberação não pareada"
-#: gtk/gtkflowbox.c:3619
+#: gtk/gtkflowbox.c:3639
msgid "Accept an unpaired release event"
msgstr "Aceita um evento de liberação não pareada"
-#: gtk/gtkflowbox.c:3648
+#: gtk/gtkflowbox.c:3668
msgid "Minimum Children Per Line"
msgstr "Mínimo de filhos por linha"
-#: gtk/gtkflowbox.c:3649
+#: gtk/gtkflowbox.c:3669
msgid ""
"The minimum number of children to allocate consecutively in the given "
"orientation."
@@ -3173,11 +3173,11 @@ msgstr ""
"A quantidade mínima de filhos para alocar consecutivamente na orientação "
"dada."
-#: gtk/gtkflowbox.c:3662
+#: gtk/gtkflowbox.c:3682
msgid "Maximum Children Per Line"
msgstr "Máximo de filhos por linha"
-#: gtk/gtkflowbox.c:3663
+#: gtk/gtkflowbox.c:3683
msgid ""
"The maximum amount of children to request space for consecutively in the "
"given orientation."
@@ -3185,19 +3185,19 @@ msgstr ""
"A quantidade máxima de filhos para requisitar espaço consecutivamente na "
"orientação dada."
-#: gtk/gtkflowbox.c:3675
+#: gtk/gtkflowbox.c:3695
msgid "Vertical spacing"
msgstr "Espaçamento vertical"
-#: gtk/gtkflowbox.c:3676
+#: gtk/gtkflowbox.c:3696
msgid "The amount of vertical space between two children"
msgstr "A quantidade de espaço vertical entre os dois filhos"
-#: gtk/gtkflowbox.c:3687
+#: gtk/gtkflowbox.c:3707
msgid "Horizontal spacing"
msgstr "Espaçamento horizontal"
-#: gtk/gtkflowbox.c:3688
+#: gtk/gtkflowbox.c:3708
msgid "The amount of horizontal space between two children"
msgstr "A quantidade de espaço horizontal entre dois filhos"
@@ -3205,107 +3205,107 @@ msgstr "A quantidade de espaço horizontal entre dois filhos"
msgid "The title of the font chooser dialog"
msgstr "O título do diálogo de seleção de fonte"
-#: gtk/gtkfontbutton.c:498
+#: gtk/gtkfontbutton.c:497
msgid "Use font in label"
msgstr "Usar fonte no rótulo"
-#: gtk/gtkfontbutton.c:499
+#: gtk/gtkfontbutton.c:498
msgid "Whether the label is drawn in the selected font"
msgstr "Se o rótulo é desenhado na fonte selecionada"
-#: gtk/gtkfontbutton.c:512
+#: gtk/gtkfontbutton.c:510
msgid "Use size in label"
msgstr "Usar tamanho no rótulo"
-#: gtk/gtkfontbutton.c:513
+#: gtk/gtkfontbutton.c:511
msgid "Whether the label is drawn with the selected font size"
msgstr "Se o rótulo é desenhado com o tamanho de fonte selecionado"
-#: gtk/gtkfontchooser.c:76
+#: gtk/gtkfontchooser.c:75
msgid "Font description"
msgstr "Descrição da fonte"
-#: gtk/gtkfontchooser.c:89
+#: gtk/gtkfontchooser.c:88
msgid "Preview text"
msgstr "Texto de visualização"
-#: gtk/gtkfontchooser.c:90
+#: gtk/gtkfontchooser.c:89
msgid "The text to display in order to demonstrate the selected font"
msgstr "O texto a exibir para demonstrar a fonte selecionada"
-#: gtk/gtkfontchooser.c:102
+#: gtk/gtkfontchooser.c:101
msgid "Show preview text entry"
msgstr "Mostrar pré-visualização de entrada de texto"
-#: gtk/gtkfontchooser.c:103
+#: gtk/gtkfontchooser.c:102
msgid "Whether the preview text entry is shown or not"
msgstr "Se a entrada de texto pré-visualização é mostrada ou não"
-#: gtk/gtkfontchooser.c:115
+#: gtk/gtkfontchooser.c:114
msgid "Selection level"
msgstr "Nível de seleção"
-#: gtk/gtkfontchooser.c:116
+#: gtk/gtkfontchooser.c:115
msgid "Whether to select family, face or font"
msgstr "Se deve selecionar família, face ou fonte"
-#: gtk/gtkfontchooser.c:132
+#: gtk/gtkfontchooser.c:133
msgid "Font features"
msgstr "Recursos da fonte"
-#: gtk/gtkfontchooser.c:133
+#: gtk/gtkfontchooser.c:134
msgid "Font features as a string"
msgstr "Recursos da fonte como um string"
-#: gtk/gtkfontchooser.c:148
+#: gtk/gtkfontchooser.c:147
msgid "Language for which features have been selected"
msgstr "Idioma para o qual os recursos foram selecionados"
-#: gtk/gtkfontchooserwidget.c:909
+#: gtk/gtkfontchooserwidget.c:905
msgid "The tweak action"
msgstr "A ação de ajuste"
-#: gtk/gtkfontchooserwidget.c:910
+#: gtk/gtkfontchooserwidget.c:906
msgid "The toggle action to switch to the tweak page"
msgstr "A ação de ativação que leva à página de ajustes"
-#: gtk/gtkframe.c:166
+#: gtk/gtkframe.c:171
msgid "Text of the frame’s label"
msgstr "Texto do rótulo da moldura"
-#: gtk/gtkframe.c:172
+#: gtk/gtkframe.c:182
msgid "Label xalign"
msgstr "Alinhamento X do rótulo"
-#: gtk/gtkframe.c:173
+#: gtk/gtkframe.c:183
msgid "The horizontal alignment of the label"
msgstr "O alinhamento horizontal do rótulo"
-#: gtk/gtkframe.c:181
+#: gtk/gtkframe.c:196
msgid "A widget to display in place of the usual frame label"
msgstr "Um componente a ser exibido no lugar do usual rótulo da moldura"
-#: gtk/gtkgesture.c:757
+#: gtk/gtkgesture.c:762
msgid "Number of points"
msgstr "Número de pontos"
-#: gtk/gtkgesture.c:758
+#: gtk/gtkgesture.c:763
msgid "Number of points needed to trigger the gesture"
msgstr "O número de pontos necessários para disparar o gesto"
-#: gtk/gtkgesturelongpress.c:280
+#: gtk/gtkgesturelongpress.c:291
msgid "Delay factor"
msgstr "Fator de atraso"
-#: gtk/gtkgesturelongpress.c:281
+#: gtk/gtkgesturelongpress.c:292
msgid "Factor by which to modify the default timeout"
msgstr "Fator pelo qual se modifica o tempo de espera padrão"
-#: gtk/gtkgesturepan.c:236 gtk/gtklistbase.c:1147 gtk/gtkorientable.c:57
+#: gtk/gtkgesturepan.c:234 gtk/gtklistbase.c:1146 gtk/gtkorientable.c:56
msgid "Orientation"
msgstr "Orientação"
-#: gtk/gtkgesturepan.c:237
+#: gtk/gtkgesturepan.c:235
msgid "Allowed orientations"
msgstr "Orientações permitidas"
@@ -3317,208 +3317,208 @@ msgstr "Lidar apenas com eventos de toque"
msgid "Whether the gesture handles only touch events"
msgstr "Se o gesto lida apenas com eventos de toque"
-#: gtk/gtkgesturesingle.c:278 gtk/gtkgesturesingle.c:279
+#: gtk/gtkgesturesingle.c:279 gtk/gtkgesturesingle.c:280
msgid "Whether the gesture is exclusive"
msgstr "Se o gesto é exclusivo"
-#: gtk/gtkgesturesingle.c:290
+#: gtk/gtkgesturesingle.c:291
msgid "Button number"
msgstr "Número do botão"
-#: gtk/gtkgesturesingle.c:291
+#: gtk/gtkgesturesingle.c:292
msgid "Button number to listen to"
msgstr "Número do botão a ouvir"
-#: gtk/gtkglarea.c:804
+#: gtk/gtkglarea.c:802
msgid "Context"
msgstr "Contexto"
-#: gtk/gtkglarea.c:805
+#: gtk/gtkglarea.c:803
msgid "The GL context"
msgstr "O contexto GL"
-#: gtk/gtkglarea.c:825
+#: gtk/gtkglarea.c:824
msgid "Auto render"
msgstr "Renderizar automaticamente"
-#: gtk/gtkglarea.c:826
+#: gtk/gtkglarea.c:825
msgid "Whether the GtkGLArea renders on each redraw"
msgstr "Se o GtkGLArea renderiza a cada redesenho"
-#: gtk/gtkglarea.c:840
+#: gtk/gtkglarea.c:839
msgid "Has depth buffer"
msgstr "Possui buffer de profundidade"
-#: gtk/gtkglarea.c:841
+#: gtk/gtkglarea.c:840
msgid "Whether a depth buffer is allocated"
msgstr "Se um buffer de profundidade está alocado"
-#: gtk/gtkglarea.c:855
+#: gtk/gtkglarea.c:854
msgid "Has stencil buffer"
msgstr "Possui buffer de estêncil"
-#: gtk/gtkglarea.c:856
+#: gtk/gtkglarea.c:855
msgid "Whether a stencil buffer is allocated"
msgstr "Se um buffer de estêncil está alocado"
-#: gtk/gtkglarea.c:872
+#: gtk/gtkglarea.c:869
msgid "Use OpenGL ES"
msgstr "Usar OpenGL ES"
-#: gtk/gtkglarea.c:873
+#: gtk/gtkglarea.c:870
msgid "Whether the context uses OpenGL or OpenGL ES"
msgstr "Se o contexto deve usar OpenGL ou OpenGL ES"
-#: gtk/gtkgrid.c:366 gtk/gtkgridlayout.c:1669
+#: gtk/gtkgrid.c:434 gtk/gtkgridlayout.c:1670
msgid "Row spacing"
msgstr "Espaçamento de linha"
-#: gtk/gtkgrid.c:367 gtk/gtkgridlayout.c:1670
+#: gtk/gtkgrid.c:435 gtk/gtkgridlayout.c:1671
msgid "The amount of space between two consecutive rows"
msgstr "A quantidade de espaço entre duas linhas consecutivas"
-#: gtk/gtkgrid.c:373 gtk/gtkgridlayout.c:1681
+#: gtk/gtkgrid.c:446 gtk/gtkgridlayout.c:1682
msgid "Column spacing"
msgstr "Espaçamento da coluna"
-#: gtk/gtkgrid.c:374 gtk/gtkgridlayout.c:1682
+#: gtk/gtkgrid.c:447 gtk/gtkgridlayout.c:1683
msgid "The amount of space between two consecutive columns"
msgstr "A quantidade de espaço entre duas colunas consecutivas"
-#: gtk/gtkgrid.c:380 gtk/gtkgridlayout.c:1693
+#: gtk/gtkgrid.c:458 gtk/gtkgridlayout.c:1694
msgid "Row Homogeneous"
msgstr "Linha homogênea"
-#: gtk/gtkgrid.c:381 gtk/gtkgridlayout.c:1694
+#: gtk/gtkgrid.c:459 gtk/gtkgridlayout.c:1695
msgid "If TRUE, the rows are all the same height"
msgstr "Se VERDADEIRO, todas as linhas têm a mesma largura/altura"
-#: gtk/gtkgrid.c:387 gtk/gtkgridlayout.c:1705
+#: gtk/gtkgrid.c:470 gtk/gtkgridlayout.c:1706
msgid "Column Homogeneous"
msgstr "Coluna homogênea"
-#: gtk/gtkgrid.c:388 gtk/gtkgridlayout.c:1706
+#: gtk/gtkgrid.c:471 gtk/gtkgridlayout.c:1707
msgid "If TRUE, the columns are all the same width"
msgstr "Se VERDADEIRO, todas as colunas têm a mesma largura/altura"
-#: gtk/gtkgrid.c:394 gtk/gtkgridlayout.c:1718
+#: gtk/gtkgrid.c:482 gtk/gtkgridlayout.c:1719
msgid "Baseline Row"
msgstr "Linha da linha de base"
-#: gtk/gtkgrid.c:395 gtk/gtkgridlayout.c:1719
+#: gtk/gtkgrid.c:483 gtk/gtkgridlayout.c:1720
msgid "The row to align the to the baseline when valign is GTK_ALIGN_BASELINE"
msgstr ""
"A linha para alinhar a linha de base quando valign for GTK_ALIGN_BASELINE"
-#: gtk/gtkgridlayout.c:167
+#: gtk/gtkgridlayout.c:168
msgid "Column"
msgstr "Coluna"
-#: gtk/gtkgridlayout.c:168
+#: gtk/gtkgridlayout.c:169
msgid "The column to place the child in"
msgstr "A coluna para colocar o filho"
-#: gtk/gtkgridlayout.c:179
+#: gtk/gtkgridlayout.c:180
msgid "Row"
msgstr "Linha"
-#: gtk/gtkgridlayout.c:180
+#: gtk/gtkgridlayout.c:181
msgid "The row to place the child in"
msgstr "A linha para colocar o filho"
-#: gtk/gtkgridlayout.c:191
+#: gtk/gtkgridlayout.c:192
msgid "Column span"
msgstr "Extensão por colunas"
-#: gtk/gtkgridlayout.c:192
+#: gtk/gtkgridlayout.c:193
msgid "The number of columns that a child spans"
msgstr "O número de colunas que o filho ocupa"
-#: gtk/gtkgridlayout.c:203
+#: gtk/gtkgridlayout.c:204
msgid "Row span"
msgstr "Extensão por linhas"
-#: gtk/gtkgridlayout.c:204
+#: gtk/gtkgridlayout.c:205
msgid "The number of rows that a child spans"
msgstr "O número de linhas na tabela que o filho ocupa"
-#: gtk/gtkgridview.c:1075
+#: gtk/gtkgridview.c:1073
msgid "Max columns"
msgstr "Máx. colunas"
-#: gtk/gtkgridview.c:1076
+#: gtk/gtkgridview.c:1074
msgid "Maximum number of columns per row"
msgstr "Número máximo de colunas por linha"
-#: gtk/gtkgridview.c:1087
+#: gtk/gtkgridview.c:1085
msgid "Min columns"
msgstr "Mín. colunas"
-#: gtk/gtkgridview.c:1088
+#: gtk/gtkgridview.c:1086
msgid "Minimum number of columns per row"
msgstr "Número mínimo de colunas por linha"
-#: gtk/gtkheaderbar.c:562
+#: gtk/gtkheaderbar.c:571
msgid "Title Widget"
msgstr "Componente de título"
-#: gtk/gtkheaderbar.c:563
+#: gtk/gtkheaderbar.c:572
msgid "Title widget to display"
msgstr "Componente de título para exibir"
-#: gtk/gtkheaderbar.c:579
+#: gtk/gtkheaderbar.c:588
msgid "Show title buttons"
msgstr "Mostrar botões de título"
-#: gtk/gtkheaderbar.c:580
+#: gtk/gtkheaderbar.c:589
msgid "Whether to show title buttons"
msgstr "Se deve mostrar botões de título"
-#: gtk/gtkheaderbar.c:596 gtk/gtksettings.c:815 gtk/gtkwindowcontrols.c:534
+#: gtk/gtkheaderbar.c:603 gtk/gtksettings.c:997 gtk/gtkwindowcontrols.c:535
msgid "Decoration Layout"
msgstr "Layout de decoração"
-#: gtk/gtkheaderbar.c:597 gtk/gtksettings.c:816 gtk/gtkwindowcontrols.c:535
+#: gtk/gtkheaderbar.c:604 gtk/gtksettings.c:998 gtk/gtkwindowcontrols.c:536
msgid "The layout for window decorations"
msgstr "A layout de decorações da janela"
-#: gtk/gtkicontheme.c:1005 gtk/gtkicontheme.c:1006
+#: gtk/gtkicontheme.c:1003 gtk/gtkicontheme.c:1004
msgid "Supported icon names"
msgstr "Nomes do ícone suportados"
-#: gtk/gtkicontheme.c:1023 gtk/gtkicontheme.c:1024
+#: gtk/gtkicontheme.c:1021 gtk/gtkicontheme.c:1022
msgid "Search path"
msgstr "Caminho de pesquisa"
-#: gtk/gtkicontheme.c:1042 gtk/gtkicontheme.c:1043
+#: gtk/gtkicontheme.c:1040 gtk/gtkicontheme.c:1041
msgid "Resource path"
msgstr "Caminho do recurso"
-#: gtk/gtkicontheme.c:1058 gtk/gtkicontheme.c:1059
+#: gtk/gtkicontheme.c:1056 gtk/gtkicontheme.c:1057
msgid "Theme name"
msgstr "Nome do tema"
-#: gtk/gtkicontheme.c:3574
+#: gtk/gtkicontheme.c:3630
msgid "file"
msgstr "arquivo"
-#: gtk/gtkicontheme.c:3575
+#: gtk/gtkicontheme.c:3631
msgid "The file representing the icon"
msgstr "O arquivo representando o ícone"
-#: gtk/gtkicontheme.c:3585 gtk/gtkstack.c:425
+#: gtk/gtkicontheme.c:3642 gtk/gtkstack.c:452
msgid "Icon name"
msgstr "Nome do ícone"
-#: gtk/gtkicontheme.c:3586
+#: gtk/gtkicontheme.c:3643
msgid "The icon name chosen during lookup"
msgstr "O nome do ícone escolhido durante a procura"
-#: gtk/gtkicontheme.c:3596
+#: gtk/gtkicontheme.c:3654
msgid "Is symbolic"
msgstr "É simbólico"
-#: gtk/gtkicontheme.c:3597
+#: gtk/gtkicontheme.c:3655
msgid "If the icon is symbolic"
msgstr "Se o ícone é simbólico"
@@ -3606,11 +3606,11 @@ msgid ""
msgstr ""
"Como o texto e ícone de cada item estão posicionados um em relação ao outro"
-#: gtk/gtkiconview.c:536 gtk/gtktreeview.c:1024
+#: gtk/gtkiconview.c:536 gtk/gtktreeview.c:1025
msgid "View is reorderable"
msgstr "O visualizador é reordenável"
-#: gtk/gtkiconview.c:543 gtk/gtktreeview.c:1143
+#: gtk/gtkiconview.c:543 gtk/gtktreeview.c:1144
msgid "Tooltip Column"
msgstr "Coluna de dica de ferramenta"
@@ -3627,75 +3627,75 @@ msgstr "Preenchimento do item"
msgid "Padding around icon view items"
msgstr "Preenchimento ao redor de itens de visualização de ícone"
-#: gtk/gtkimage.c:172 gtk/gtkpicture.c:330
+#: gtk/gtkimage.c:178 gtk/gtkpicture.c:331
msgid "Paintable"
msgstr "Pintável"
-#: gtk/gtkimage.c:173
+#: gtk/gtkimage.c:179
msgid "A GdkPaintable to display"
msgstr "Um GdkPaintable a ser exibido"
-#: gtk/gtkimage.c:180
+#: gtk/gtkimage.c:191
msgid "Filename to load and display"
msgstr "Nome de arquivo a ser carregado e exibido"
-#: gtk/gtkimage.c:186
+#: gtk/gtkimage.c:202
msgid "Icon size"
msgstr "Tamanho do ícone"
-#: gtk/gtkimage.c:187
+#: gtk/gtkimage.c:203
msgid "Symbolic size to use for icon set or named icon"
msgstr "Tamanho simbólico usado para conjunto de ícones ou ícone nomeado"
-#: gtk/gtkimage.c:201
+#: gtk/gtkimage.c:219
msgid "Pixel size"
msgstr "Tamanho do pixel"
-#: gtk/gtkimage.c:202
+#: gtk/gtkimage.c:220
msgid "Pixel size to use for named icon"
msgstr "Tamanho do pixel a ser utilizado para ícone nomeado"
-#: gtk/gtkimage.c:242
+#: gtk/gtkimage.c:262
msgid "The resource path being displayed"
msgstr "O caminho do recurso sendo exibido"
-#: gtk/gtkimage.c:248
+#: gtk/gtkimage.c:273
msgid "Storage type"
msgstr "Tipo de armazenamento"
-#: gtk/gtkimage.c:249
+#: gtk/gtkimage.c:274
msgid "The representation being used for image data"
msgstr "A representação usada para os dados da imagem"
-#: gtk/gtkimage.c:264
+#: gtk/gtkimage.c:290
msgid "Use Fallback"
msgstr "Uso alternativo"
-#: gtk/gtkimage.c:265
+#: gtk/gtkimage.c:291
msgid "Whether to use icon names fallback"
msgstr "Se deve usar nomes de ícones alternativos"
-#: gtk/gtkinfobar.c:357 gtk/gtkmessagedialog.c:364
+#: gtk/gtkinfobar.c:356 gtk/gtkmessagedialog.c:365
msgid "Message Type"
msgstr "Tipo de mensagem"
-#: gtk/gtkinfobar.c:358 gtk/gtkmessagedialog.c:365
+#: gtk/gtkinfobar.c:357 gtk/gtkmessagedialog.c:366
msgid "The type of message"
msgstr "O tipo da mensagem"
-#: gtk/gtkinfobar.c:370 gtk/gtksearchbar.c:321
+#: gtk/gtkinfobar.c:369 gtk/gtksearchbar.c:322
msgid "Show Close Button"
msgstr "Mostrar o botão de fechar"
-#: gtk/gtkinfobar.c:371
+#: gtk/gtkinfobar.c:370
msgid "Whether to include a standard close button"
msgstr "Se deve incluir um botão padrão de fechar"
-#: gtk/gtkinfobar.c:378
+#: gtk/gtkinfobar.c:382
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:2191
+#: gtk/gtklabel.c:2186
msgid "The text of the label"
msgstr "O texto do rótulo"
@@ -3703,11 +3703,11 @@ msgstr "O texto do rótulo"
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 do rótulo"
-#: gtk/gtklabel.c:2218 gtk/gtktexttag.c:382 gtk/gtktextview.c:877
+#: gtk/gtklabel.c:2238 gtk/gtktexttag.c:467 gtk/gtktextview.c:914
msgid "Justification"
msgstr "Alinhamento"
-#: gtk/gtklabel.c:2219
+#: gtk/gtklabel.c:2239
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 "
@@ -3717,51 +3717,51 @@ msgstr ""
"NÃO afeta o alinhamento do rótulo dentro de sua alocação. Veja GtkLabel:"
"xalign para tal"
-#: gtk/gtklabel.c:2250
+#: gtk/gtklabel.c:2270
msgid "Y align"
msgstr "Alinhamento y"
-#: gtk/gtklabel.c:2251
+#: gtk/gtklabel.c:2271
msgid "The vertical alignment, from 0 (top) to 1 (bottom)"
msgstr "O alinhamento vertical, de 0 (topo) até 1 (base)"
-#: gtk/gtklabel.c:2258
+#: gtk/gtklabel.c:2283
msgid "Line wrap"
msgstr "Quebra de linha"
-#: gtk/gtklabel.c:2259
+#: gtk/gtklabel.c:2284
msgid "If set, wrap lines if the text becomes too wide"
msgstr "Se definido, quebra linha se o texto se tornar muito longo"
-#: gtk/gtklabel.c:2272
+#: gtk/gtklabel.c:2299
msgid "Line wrap mode"
msgstr "Modo da quebra de linha"
-#: gtk/gtklabel.c:2273
+#: gtk/gtklabel.c:2300
msgid "If wrap is set, controls how linewrapping is done"
msgstr "Controla como a quebra de linha é feita, se estiver ativada"
-#: gtk/gtklabel.c:2281
+#: gtk/gtklabel.c:2313
msgid "Whether the label text can be selected with the mouse"
msgstr "Se o texto do rótulo pode ser selecionado com o mouse"
-#: gtk/gtklabel.c:2287
+#: gtk/gtklabel.c:2324
msgid "Mnemonic key"
msgstr "Chave mnemônica"
-#: gtk/gtklabel.c:2288
+#: gtk/gtklabel.c:2325
msgid "The mnemonic accelerator key for this label"
msgstr "A tecla de atalho mnemônica para este rótulo"
-#: gtk/gtklabel.c:2295
+#: gtk/gtklabel.c:2337
msgid "Mnemonic widget"
msgstr "Componente mnemônico"
-#: gtk/gtklabel.c:2296
+#: gtk/gtklabel.c:2338
msgid "The widget to be activated when the label’s mnemonic key is pressed"
msgstr "O componente ativado quando a tecla mnemônica do rótulo é pressionada"
-#: gtk/gtklabel.c:2318
+#: gtk/gtklabel.c:2359
msgid ""
"The preferred place to ellipsize the string, if the label does not have "
"enough room to display the entire string"
@@ -3769,29 +3769,29 @@ msgstr ""
"O local preferido para se colocar reticências na string, se o rótulo não "
"possuir espaço suficiente para exibir a string inteira"
-#: gtk/gtklabel.c:2352
+#: gtk/gtklabel.c:2395
msgid "Single Line Mode"
msgstr "Modo de linha única"
-#: gtk/gtklabel.c:2353
+#: gtk/gtklabel.c:2396
msgid "Whether the label is in single line mode"
msgstr "Se o rótulo está no modo de linha única"
-#: gtk/gtklabel.c:2370
+#: gtk/gtklabel.c:2414
msgid "The desired maximum width of the label, in characters"
msgstr "A largura máxima desejada do rótulo, em caracteres"
-#: gtk/gtklabel.c:2385
+#: gtk/gtklabel.c:2430
msgid "Number of lines"
msgstr "Número de linhas"
# Quando um rótulo é redu... -- Rafael
-#: gtk/gtklabel.c:2386
+#: gtk/gtklabel.c:2431
msgid "The desired number of lines, when ellipsizing a wrapping label"
msgstr ""
"O número desejado de linhas, ao se colocar reticências em um rótulo abreviado"
-#: gtk/gtklabel.c:2400 gtk/gtktext.c:939 gtk/gtktextview.c:1075
+#: gtk/gtklabel.c:2444 gtk/gtktext.c:990 gtk/gtktextview.c:1151
msgid "Menu model to append to the context menu"
msgstr "O modelo de menu para acrescentar ao menu de contexto"
@@ -3803,19 +3803,19 @@ msgstr "Nível de valor preenchido atualmente"
msgid "Currently filled value level of the level bar"
msgstr "O nível de valor preenchido atualmente da barra de nível"
-#: gtk/gtklevelbar.c:958
+#: gtk/gtklevelbar.c:957
msgid "Minimum value level for the bar"
msgstr "Nível de valor mínimo para a barra"
-#: gtk/gtklevelbar.c:959
+#: gtk/gtklevelbar.c:958
msgid "Minimum value level that can be displayed by the bar"
msgstr "O nível de valor mínimo que pode ser exibido pela barra"
-#: gtk/gtklevelbar.c:971
+#: gtk/gtklevelbar.c:969
msgid "Maximum value level for the bar"
msgstr "Nível de valor máximo para a barra"
-#: gtk/gtklevelbar.c:972
+#: gtk/gtklevelbar.c:970
msgid "Maximum value level that can be displayed by the bar"
msgstr "O nível de valor máximo que pode ser exibido na barra"
@@ -3828,15 +3828,15 @@ msgstr "Modo do indicador de valor"
msgid "The mode of the value indicator displayed by the bar"
msgstr "O modo do indicador de valor exibido pela barra"
-#: gtk/gtklevelbar.c:1005
+#: gtk/gtklevelbar.c:1007
msgid "Invert the direction in which the level bar grows"
msgstr "Inverter a direção de crescimento da barra de progresso"
-#: gtk/gtklinkbutton.c:180
+#: gtk/gtklinkbutton.c:179
msgid "URI"
msgstr "URI"
-#: gtk/gtklinkbutton.c:181
+#: gtk/gtklinkbutton.c:180
msgid "The URI bound to this button"
msgstr "O URI ligado a botão"
@@ -3848,100 +3848,100 @@ msgstr "Visitado"
msgid "Whether this link has been visited."
msgstr "Se este link foi visitado."
-#: gtk/gtklistbase.c:1148 gtk/gtkorientable.c:58
+#: gtk/gtklistbase.c:1147 gtk/gtkorientable.c:57
msgid "The orientation of the orientable"
msgstr "A orientação da orientabilidade"
-#: gtk/gtklistbox.c:515 gtk/gtklistview.c:843
+#: gtk/gtklistbox.c:543 gtk/gtklistview.c:841
msgid "Show separators"
msgstr "Mostrar separadores"
-#: gtk/gtklistbox.c:3480
+#: gtk/gtklistbox.c:3560
msgid "Whether this row can be activated"
msgstr "Se esta linha pode ser ativada"
-#: gtk/gtklistbox.c:3492
+#: gtk/gtklistbox.c:3572
msgid "Whether this row can be selected"
msgstr "Se esta linha pode ser selecionada"
-#: gtk/gtklistitem.c:174
+#: gtk/gtklistitem.c:170
msgid "If the item can be activated by the user"
msgstr "Se o texto pode ser ativado pelo usuário"
-#: gtk/gtklistitem.c:186
+#: gtk/gtklistitem.c:182
msgid "Widget used for display"
msgstr "Componente usado para a exibir"
-#: gtk/gtklistitem.c:197 gtk/gtktreeexpander.c:520 gtk/gtktreelistmodel.c:1102
+#: gtk/gtklistitem.c:193 gtk/gtktreeexpander.c:518 gtk/gtktreelistmodel.c:1107
msgid "Item"
msgstr "Item"
-#: gtk/gtklistitem.c:198
+#: gtk/gtklistitem.c:194
msgid "Displayed item"
msgstr "Item exibido"
-#: gtk/gtklistitem.c:209 gtk/gtknotebook.c:611 gtk/gtkpaned.c:446
-#: gtk/gtkpopover.c:1671
+#: gtk/gtklistitem.c:205 gtk/gtknotebook.c:651 gtk/gtkpaned.c:426
+#: gtk/gtkpopover.c:1766
msgid "Position"
msgstr "Posição"
-#: gtk/gtklistitem.c:210
+#: gtk/gtklistitem.c:206
msgid "Position of the item"
msgstr "A posição do item"
-#: gtk/gtklistitem.c:222
+#: gtk/gtklistitem.c:218
msgid "If the item can be selected by the user"
msgstr "Se o item pode ser selecionado pelo usuário"
-#: gtk/gtklistitem.c:234
+#: gtk/gtklistitem.c:230
msgid "If the item is currently selected"
msgstr "Se o item está atualmente selecionado"
-#: gtk/gtklockbutton.c:264
+#: gtk/gtklockbutton.c:274
msgid "Permission"
msgstr "Permissão"
-#: gtk/gtklockbutton.c:265
+#: gtk/gtklockbutton.c:275
msgid "The GPermission object controlling this button"
msgstr "O objeto GPermission controlando este botão"
-#: gtk/gtklockbutton.c:272
+#: gtk/gtklockbutton.c:287
msgid "Lock Text"
msgstr "Texto de bloqueio"
-#: gtk/gtklockbutton.c:273
+#: gtk/gtklockbutton.c:288
msgid "The text to display when prompting the user to lock"
msgstr "O texto a ser exibido quando avisar o usuário para bloquear"
-#: gtk/gtklockbutton.c:281
+#: gtk/gtklockbutton.c:301
msgid "Unlock Text"
msgstr "Texto de desbloqueio"
-#: gtk/gtklockbutton.c:282
+#: gtk/gtklockbutton.c:302
msgid "The text to display when prompting the user to unlock"
msgstr "O texto a ser exibido quando avisar o usuário para desbloquear"
-#: gtk/gtklockbutton.c:290
+#: gtk/gtklockbutton.c:315
msgid "Lock Tooltip"
msgstr "Dica de bloqueio"
-#: gtk/gtklockbutton.c:291
+#: gtk/gtklockbutton.c:316
msgid "The tooltip to display when prompting the user to lock"
msgstr "A dica para exibir quando avisar o usuário para bloquear"
-#: gtk/gtklockbutton.c:299
+#: gtk/gtklockbutton.c:329
msgid "Unlock Tooltip"
msgstr "Dica de desbloqueio"
-#: gtk/gtklockbutton.c:300
+#: gtk/gtklockbutton.c:330
msgid "The tooltip to display when prompting the user to unlock"
msgstr "A dica para exibir quando avisar o usuário para desbloquear"
-#: gtk/gtklockbutton.c:308
+#: gtk/gtklockbutton.c:343
msgid "Not Authorized Tooltip"
msgstr "Dica de não autorização"
-#: gtk/gtklockbutton.c:309
+#: gtk/gtklockbutton.c:344
msgid ""
"The tooltip to display when prompting the user cannot obtain authorization"
msgstr ""
@@ -3963,15 +3963,15 @@ msgstr "ampliação"
msgid "resize"
msgstr "redimensionar"
-#: gtk/gtkmaplistmodel.c:363
+#: gtk/gtkmaplistmodel.c:361
msgid "has map"
msgstr "tem mapa"
-#: gtk/gtkmaplistmodel.c:364
+#: gtk/gtkmaplistmodel.c:362
msgid "If a map is set for this model"
msgstr "Se um mapa está definido para este modelo"
-#: gtk/gtkmaplistmodel.c:376
+#: gtk/gtkmaplistmodel.c:374
msgid "The model being mapped"
msgstr "O modelo sendo mapeado"
@@ -3983,7 +3983,7 @@ msgstr "Fluxo de mídia"
msgid "The media stream managed"
msgstr "O fluxo de mídia gerenciado"
-#: gtk/gtkmediafile.c:162
+#: gtk/gtkmediafile.c:160
msgid "File being played back"
msgstr "O arquivo sendo reproduzido"
@@ -3995,263 +3995,263 @@ msgstr "Fonte de entrada"
msgid "Input stream being played back"
msgstr "O fluxo de entrada sendo reproduzido"
-#: gtk/gtkmediastream.c:304
+#: gtk/gtkmediastream.c:301
msgid "Prepared"
msgstr "Preparado"
-#: gtk/gtkmediastream.c:305
+#: gtk/gtkmediastream.c:302
msgid "Whether the stream has finished initializing"
msgstr "Se o fluxo concluiu a inicialização"
-#: gtk/gtkmediastream.c:316
+#: gtk/gtkmediastream.c:314
msgid "Error"
msgstr "Erro"
-#: gtk/gtkmediastream.c:317
+#: gtk/gtkmediastream.c:315
msgid "Error the stream is in"
msgstr "O erro no qual o fluxo está"
-#: gtk/gtkmediastream.c:328
+#: gtk/gtkmediastream.c:326
msgid "Has audio"
msgstr "Tem áudio"
-#: gtk/gtkmediastream.c:329
+#: gtk/gtkmediastream.c:327
msgid "Whether the stream contains audio"
msgstr "Se o fluxo contém áudio"
-#: gtk/gtkmediastream.c:340
+#: gtk/gtkmediastream.c:338
msgid "Has video"
msgstr "Tem vídeo"
-#: gtk/gtkmediastream.c:341
+#: gtk/gtkmediastream.c:339
msgid "Whether the stream contains video"
msgstr "Se o fluxo contém vídeo"
-#: gtk/gtkmediastream.c:352
+#: gtk/gtkmediastream.c:350
msgid "Playing"
msgstr "Reproduzindo"
-#: gtk/gtkmediastream.c:353
+#: gtk/gtkmediastream.c:351
msgid "Whether the stream is playing"
msgstr "Se o fluxo está reproduzindo"
-#: gtk/gtkmediastream.c:364
+#: gtk/gtkmediastream.c:362
msgid "Ended"
msgstr "Finalizou"
-#: gtk/gtkmediastream.c:365
+#: gtk/gtkmediastream.c:363
msgid "Set when playback has finished"
msgstr "Define quando a reprodução foi finalizada"
-#: gtk/gtkmediastream.c:376
+#: gtk/gtkmediastream.c:374
msgid "Timestamp"
msgstr "Marca de tempo"
-#: gtk/gtkmediastream.c:377 gtk/gtkmediastream.c:389
+#: gtk/gtkmediastream.c:375 gtk/gtkmediastream.c:387
msgid "Timestamp in microseconds"
msgstr "Marca de data e hora em milissegundos"
-#: gtk/gtkmediastream.c:388
+#: gtk/gtkmediastream.c:386
msgid "Duration"
msgstr "Duração"
-#: gtk/gtkmediastream.c:400
+#: gtk/gtkmediastream.c:398
msgid "Seekable"
msgstr "Buscável"
-#: gtk/gtkmediastream.c:401
+#: gtk/gtkmediastream.c:399
msgid "Set unless seeking is not supported"
msgstr "Define a menos que não haja suporte a busca"
-#: gtk/gtkmediastream.c:412
+#: gtk/gtkmediastream.c:410
msgid "Seeking"
msgstr "Buscando"
-#: gtk/gtkmediastream.c:413
+#: gtk/gtkmediastream.c:411
msgid "Set while a seek is in progress"
msgstr "Define enquanto uma busca está em progresso"
-#: gtk/gtkmediastream.c:424 gtk/gtkvideo.c:330
+#: gtk/gtkmediastream.c:422 gtk/gtkvideo.c:330
msgid "Loop"
msgstr "Loop"
-#: gtk/gtkmediastream.c:425
+#: gtk/gtkmediastream.c:423
msgid "Try to restart the media from the beginning once it ended."
msgstr "Tenta reiniciar a mídia de início quando ela finalizar."
-#: gtk/gtkmediastream.c:436
+#: gtk/gtkmediastream.c:434
msgid "Muted"
msgstr "Mudo"
-#: gtk/gtkmediastream.c:437
+#: gtk/gtkmediastream.c:435
msgid "Whether the audio stream should be muted."
msgstr "Se o fluxo de áudio deve ser silenciado."
-#: gtk/gtkmediastream.c:448
+#: gtk/gtkmediastream.c:446
msgid "Volume"
msgstr "Volume"
-#: gtk/gtkmediastream.c:449
+#: gtk/gtkmediastream.c:447
msgid "Volume of the audio stream."
msgstr "Volume do fluxo de áudio."
-#: gtk/gtkmenubutton.c:377 gtk/gtkpopovermenubar.c:637 gtk/gtkpopovermenu.c:563
+#: gtk/gtkmenubutton.c:356 gtk/gtkpopovermenubar.c:636 gtk/gtkpopovermenu.c:583
msgid "Menu model"
msgstr "Modelo de menu"
-#: gtk/gtkmenubutton.c:378
+#: gtk/gtkmenubutton.c:357
msgid "The model from which the popup is made."
msgstr "O modelo a partir do qual a janela instantânea é feita."
-#: gtk/gtkmenubutton.c:391
+#: gtk/gtkmenubutton.c:370
msgid "The direction the arrow should point."
msgstr "A direção para qual a seta deve apontar."
-#: gtk/gtkmenubutton.c:403 gtk/gtkmodelbutton.c:1244
+#: gtk/gtkmenubutton.c:382 gtk/gtkmodelbutton.c:1242
msgid "Popover"
msgstr "Janela sobreposta"
-#: gtk/gtkmenubutton.c:404
+#: gtk/gtkmenubutton.c:383
msgid "The popover"
msgstr "A janela sobreposta"
-#: gtk/gtkmenubutton.c:418
+#: gtk/gtkmenubutton.c:407
msgid "The label for the button"
msgstr "O rótulo do botão"
-#: gtk/gtkmenubutton.c:431
+#: gtk/gtkmenubutton.c:430
msgid "Has frame"
msgstr "Tem moldura"
-#: gtk/gtkmessagedialog.c:372
+#: gtk/gtkmessagedialog.c:373
msgid "Message Buttons"
msgstr "Botões de mensagem"
-#: gtk/gtkmessagedialog.c:373
+#: gtk/gtkmessagedialog.c:374
msgid "The buttons shown in the message dialog"
msgstr "Os botões mostrados no diálogo de mensagem"
-#: gtk/gtkmessagedialog.c:387
+#: gtk/gtkmessagedialog.c:389
msgid "The primary text of the message dialog"
msgstr "O texto principal do diálogo de mensagem"
-#: gtk/gtkmessagedialog.c:399
+#: gtk/gtkmessagedialog.c:402
msgid "Use Markup"
msgstr "Usar marcação"
-#: gtk/gtkmessagedialog.c:400
+#: gtk/gtkmessagedialog.c:403
msgid "The primary text of the title includes Pango markup."
msgstr "O texto principal inclui marcação Pango."
-#: gtk/gtkmessagedialog.c:411
+#: gtk/gtkmessagedialog.c:414
msgid "Secondary Text"
msgstr "Texto secundário"
-#: gtk/gtkmessagedialog.c:412
+#: gtk/gtkmessagedialog.c:415
msgid "The secondary text of the message dialog"
msgstr "O texto secundário do diálogo de mensagem"
-#: gtk/gtkmessagedialog.c:424
+#: gtk/gtkmessagedialog.c:428
msgid "Use Markup in secondary"
msgstr "Marcação em secundário"
-#: gtk/gtkmessagedialog.c:425
+#: gtk/gtkmessagedialog.c:429
msgid "The secondary text includes Pango markup."
msgstr "O texto secundário inclui marcação Pango."
-#: gtk/gtkmessagedialog.c:438
+#: gtk/gtkmessagedialog.c:443
msgid "Message area"
msgstr "Área de mensagem"
-#: gtk/gtkmessagedialog.c:439
+#: gtk/gtkmessagedialog.c:444
msgid "GtkBox that holds the dialog’s primary and secondary labels"
msgstr "GtkBox que prende os rótulos dos diálogos primários e secundários"
-#: gtk/gtkmodelbutton.c:1172
+#: gtk/gtkmodelbutton.c:1170
msgid "Role"
msgstr "Papel"
-#: gtk/gtkmodelbutton.c:1173
+#: gtk/gtkmodelbutton.c:1171
msgid "The role of this button"
msgstr "O papel deste botão"
-#: gtk/gtkmodelbutton.c:1187
+#: gtk/gtkmodelbutton.c:1185
msgid "The icon"
msgstr "O ícone"
-#: gtk/gtkmodelbutton.c:1199
+#: gtk/gtkmodelbutton.c:1197
msgid "The text"
msgstr "O texto"
-#: gtk/gtkmodelbutton.c:1213
+#: gtk/gtkmodelbutton.c:1211
msgid "The text of the button includes XML markup. See pango_parse_markup()"
msgstr "O texto do botão inclui marcação XML. Veja pango_parse_markup()"
-#: gtk/gtkmodelbutton.c:1237
+#: gtk/gtkmodelbutton.c:1235
msgid "Menu name"
msgstr "Nome do menu"
-#: gtk/gtkmodelbutton.c:1238
+#: gtk/gtkmodelbutton.c:1236
msgid "The name of the menu to open"
msgstr "O nome do menu a ser aberto"
-#: gtk/gtkmodelbutton.c:1245
+#: gtk/gtkmodelbutton.c:1243
msgid "Popover to open"
msgstr "Janela sobreposta para abrir"
-#: gtk/gtkmodelbutton.c:1258
+#: gtk/gtkmodelbutton.c:1256
msgid "Iconic"
msgstr "Icônico"
-#: gtk/gtkmodelbutton.c:1259
+#: gtk/gtkmodelbutton.c:1257
msgid "Whether to prefer the icon over text"
msgstr "Se é preferível usar ícone ao invés de texto"
-#: gtk/gtkmodelbutton.c:1272
+#: gtk/gtkmodelbutton.c:1270
msgid "Size group"
msgstr "Grupo de tamanho"
-#: gtk/gtkmodelbutton.c:1273
+#: gtk/gtkmodelbutton.c:1271
msgid "Size group for checks and radios"
msgstr "Grupo de tamanho para seleções ou de opções"
-#: gtk/gtkmodelbutton.c:1278
+#: gtk/gtkmodelbutton.c:1276
msgid "Accel"
msgstr "Acel."
-#: gtk/gtkmodelbutton.c:1279
+#: gtk/gtkmodelbutton.c:1277
msgid "The accelerator"
msgstr "O acelerador"
-#: gtk/gtkmountoperation.c:176
+#: gtk/gtkmountoperation.c:174
msgid "The parent window"
msgstr "A janela pai"
-#: gtk/gtkmountoperation.c:183
+#: gtk/gtkmountoperation.c:186
msgid "Is Showing"
msgstr "Está mostrando"
-#: gtk/gtkmountoperation.c:184
+#: gtk/gtkmountoperation.c:187
msgid "Are we showing a dialog"
msgstr "Estamos exibindo um diálogo"
-#: gtk/gtkmountoperation.c:192
+#: gtk/gtkmountoperation.c:200
msgid "The display where this window will be displayed."
msgstr "A tela na qual esta janela será exibida."
-#: gtk/gtkmultiselection.c:357
+#: gtk/gtkmultiselection.c:354
msgid "List managed by this selection"
msgstr "Lista gerenciada por esta seleção"
-#: gtk/gtknativedialog.c:213
+#: gtk/gtknativedialog.c:212
msgid "Dialog Title"
msgstr "Título do diálogo"
-#: gtk/gtknativedialog.c:214
+#: gtk/gtknativedialog.c:213
msgid "The title of the file chooser dialog"
msgstr "O título do diálogo de seleção de arquivo"
-#: gtk/gtknativedialog.c:226
+#: gtk/gtknativedialog.c:225
msgid ""
"If TRUE, the dialog is modal (other windows are not usable while this one is "
"up)"
@@ -4259,145 +4259,145 @@ msgstr ""
"Se VERDADEIRO, o diálogo é modal (outras janelas não são usáveis enquanto "
"esta estiver aberta)"
-#: gtk/gtknativedialog.c:238
+#: gtk/gtknativedialog.c:237
msgid "Whether the dialog is currently visible"
msgstr "Se o diálogo está atualmente visível"
-#: gtk/gtknativedialog.c:249 gtk/gtkwindow.c:859
+#: gtk/gtknativedialog.c:248 gtk/gtkwindow.c:946
msgid "Transient for Window"
msgstr "Transitório para Janela"
-#: gtk/gtknativedialog.c:250 gtk/gtkwindow.c:860
+#: gtk/gtknativedialog.c:249 gtk/gtkwindow.c:947
msgid "The transient parent of the dialog"
msgstr "O pai transitório do diálogo"
-#: gtk/gtknoselection.c:204 gtk/gtksingleselection.c:439
+#: gtk/gtknoselection.c:201 gtk/gtksingleselection.c:435
msgid "The model"
msgstr "O modelo"
-#: gtk/gtknoselection.c:205 gtk/gtksingleselection.c:440
+#: gtk/gtknoselection.c:202 gtk/gtksingleselection.c:436
msgid "The model being managed"
msgstr "O modelo sendo gerenciado"
-#: gtk/gtknotebook.c:577
+#: gtk/gtknotebook.c:587
msgid "The child for this page"
msgstr "O filho para esta página"
-#: gtk/gtknotebook.c:583
+#: gtk/gtknotebook.c:599
msgid "Tab"
msgstr "Aba"
-#: gtk/gtknotebook.c:584
+#: gtk/gtknotebook.c:600
msgid "The tab widget for this page"
msgstr "O componente aba para esta página"
-#: gtk/gtknotebook.c:590
+#: gtk/gtknotebook.c:612
msgid "Menu"
msgstr "Menu"
-#: gtk/gtknotebook.c:591
+#: gtk/gtknotebook.c:613
msgid "The label widget displayed in the child’s menu entry"
msgstr "O componente rótulo exibido na entrada do menu do filho"
-#: gtk/gtknotebook.c:597
+#: gtk/gtknotebook.c:625
msgid "Tab label"
msgstr "Rótulo da aba"
-#: gtk/gtknotebook.c:598
+#: gtk/gtknotebook.c:626
msgid "The text of the tab widget"
msgstr "O texto do componente aba"
-#: gtk/gtknotebook.c:604
+#: gtk/gtknotebook.c:638
msgid "Menu label"
msgstr "Rótulo do menu"
-#: gtk/gtknotebook.c:605
+#: gtk/gtknotebook.c:639
msgid "The text of the menu widget"
msgstr "O texto do componente menu"
-#: gtk/gtknotebook.c:612
+#: gtk/gtknotebook.c:652
msgid "The index of the child in the parent"
msgstr "O índice do filho dentro do pai"
-#: gtk/gtknotebook.c:618
+#: gtk/gtknotebook.c:664
msgid "Tab expand"
msgstr "Expandir aba"
-#: gtk/gtknotebook.c:619
+#: gtk/gtknotebook.c:665
msgid "Whether to expand the child’s tab"
msgstr "Se deve expandir a aba do filho"
-#: gtk/gtknotebook.c:625
+#: gtk/gtknotebook.c:677
msgid "Tab fill"
msgstr "Preencher aba"
-#: gtk/gtknotebook.c:626
+#: gtk/gtknotebook.c:678
msgid "Whether the child’s tab should fill the allocated area"
msgstr "Se a aba do filho deve preencher a área alocada"
-#: gtk/gtknotebook.c:632
+#: gtk/gtknotebook.c:690
msgid "Tab reorderable"
msgstr "Aba reordenável"
-#: gtk/gtknotebook.c:633
+#: gtk/gtknotebook.c:691
msgid "Whether the tab is reorderable by user action"
msgstr "Se a aba deve ser reordenável pela ação do usuário"
-#: gtk/gtknotebook.c:639
+#: gtk/gtknotebook.c:703
msgid "Tab detachable"
msgstr "Aba destacável"
-#: gtk/gtknotebook.c:640
+#: gtk/gtknotebook.c:704
msgid "Whether the tab is detachable"
msgstr "Se a aba deve ser destacável"
-#: gtk/gtknotebook.c:1057
+#: gtk/gtknotebook.c:1126
msgid "Page"
msgstr "Página"
-#: gtk/gtknotebook.c:1058
+#: gtk/gtknotebook.c:1127
msgid "The index of the current page"
msgstr "O índice da página atual"
-#: gtk/gtknotebook.c:1065
+#: gtk/gtknotebook.c:1139
msgid "Tab Position"
msgstr "Posição da aba"
-#: gtk/gtknotebook.c:1066
+#: gtk/gtknotebook.c:1140
msgid "Which side of the notebook holds the tabs"
msgstr "Qual lado do “notebook” contém as abas"
-#: gtk/gtknotebook.c:1073
+#: gtk/gtknotebook.c:1152
msgid "Show Tabs"
msgstr "Mostrar abas"
-#: gtk/gtknotebook.c:1074
+#: gtk/gtknotebook.c:1153
msgid "Whether tabs should be shown"
msgstr "Se abas devem ser mostradas"
-#: gtk/gtknotebook.c:1080
+#: gtk/gtknotebook.c:1164
msgid "Show Border"
msgstr "Mostrar borda"
-#: gtk/gtknotebook.c:1081
+#: gtk/gtknotebook.c:1165
msgid "Whether the border should be shown"
msgstr "Se bordas devem ser mostradas"
-#: gtk/gtknotebook.c:1087
+#: gtk/gtknotebook.c:1176
msgid "Scrollable"
msgstr "Com rolagem"
-#: gtk/gtknotebook.c:1088
+#: gtk/gtknotebook.c:1177
msgid "If TRUE, scroll arrows are added if there are too many tabs to fit"
msgstr ""
"Se VERDADEIRO, setas de rolagem são adicionadas se houver abas demais para "
"caber"
-#: gtk/gtknotebook.c:1094
+#: gtk/gtknotebook.c:1188
msgid "Enable Popup"
msgstr "Habilitar menu de contexto"
-#: gtk/gtknotebook.c:1095
+#: gtk/gtknotebook.c:1189
msgid ""
"If TRUE, pressing the right mouse button on the notebook pops up a menu that "
"you can use to go to a page"
@@ -4405,209 +4405,209 @@ msgstr ""
"Se VERDADEIRO, pressionar o botão direito do mouse no “notebook” faz surgir "
"um menu que você pode usar para ir para uma página"
-#: gtk/gtknotebook.c:1106
+#: gtk/gtknotebook.c:1200
msgid "Group Name"
msgstr "Nome do grupo"
-#: gtk/gtknotebook.c:1107
+#: gtk/gtknotebook.c:1201
msgid "Group name for tab drag and drop"
msgstr "Nome do grupo para o arrastar e soltar"
-#: gtk/gtknotebook.c:1114
+#: gtk/gtknotebook.c:1213
msgid "The pages of the notebook."
msgstr "As páginas do “notebook”."
-#: gtk/gtknumericsorter.c:551 gtk/gtkstringfilter.c:253
-#: gtk/gtkstringsorter.c:297
+#: gtk/gtknumericsorter.c:549 gtk/gtkstringfilter.c:258
+#: gtk/gtkstringsorter.c:296
msgid "Expression to compare with"
msgstr "Expressão para comparar com"
-#: gtk/gtknumericsorter.c:561 gtk/gtktreeviewcolumn.c:397
+#: gtk/gtknumericsorter.c:559 gtk/gtktreeviewcolumn.c:395
msgid "Sort order"
msgstr "Tipo de ordenação"
-#: gtk/gtknumericsorter.c:562
+#: gtk/gtknumericsorter.c:560
msgid "Whether to sort smaller numbers first"
msgstr "Se deve ordenar números menores primeiro"
-#: gtk/gtkoverlaylayout.c:136
+#: gtk/gtkoverlaylayout.c:141
msgid "Measure"
msgstr "Medição"
-#: gtk/gtkoverlaylayout.c:137
+#: gtk/gtkoverlaylayout.c:142
msgid "Include in size measurement"
msgstr "Inclui a medição de tamanho"
-#: gtk/gtkoverlaylayout.c:147
+#: gtk/gtkoverlaylayout.c:153
msgid "Clip Overlay"
msgstr "Recortar sobreposição"
-#: gtk/gtkoverlaylayout.c:148
+#: gtk/gtkoverlaylayout.c:154
msgid "Clip the overlay child widget so as to fit the parent"
msgstr "Recorta o componente de sobreposição filho para se ajustar ao pai"
-#: gtk/gtkpadcontroller.c:370
+#: gtk/gtkpadcontroller.c:372
msgid "Action group"
msgstr "Grupo de ação"
-#: gtk/gtkpadcontroller.c:371
+#: gtk/gtkpadcontroller.c:373
msgid "Action group to launch actions from"
msgstr "Grupo de ação do qual deve-se executar ações"
-#: gtk/gtkpadcontroller.c:376
+#: gtk/gtkpadcontroller.c:378
msgid "Pad device"
msgstr "Dispositivo pad"
-#: gtk/gtkpadcontroller.c:377
+#: gtk/gtkpadcontroller.c:379
msgid "Pad device to control"
msgstr "Dispositivo pad a ser controlado"
-#: gtk/gtkpaned.c:447
+#: gtk/gtkpaned.c:427
msgid ""
"Position of paned separator in pixels (0 means all the way to the left/top)"
msgstr ""
"Posição do separador de painel em pixels (0 significa tudo até à esquerda/"
"topo)"
-#: gtk/gtkpaned.c:453
+#: gtk/gtkpaned.c:438
msgid "Position Set"
msgstr "Posição definida"
-#: gtk/gtkpaned.c:454
+#: gtk/gtkpaned.c:439
msgid "TRUE if the Position property should be used"
msgstr "VERDADEIRO se a propriedade de “position” deve ser usada"
-#: gtk/gtkpaned.c:467
+#: gtk/gtkpaned.c:453
msgid "Minimal Position"
msgstr "Posição mínima"
-#: gtk/gtkpaned.c:468
+#: gtk/gtkpaned.c:454
msgid "Smallest possible value for the “position” property"
msgstr "Menor valor possível para a propriedade “position”"
-#: gtk/gtkpaned.c:481
+#: gtk/gtkpaned.c:468
msgid "Maximal Position"
msgstr "Posição máxima"
-#: gtk/gtkpaned.c:482
+#: gtk/gtkpaned.c:469
msgid "Largest possible value for the “position” property"
msgstr "Maior valor possível para a propriedade “position”"
-#: gtk/gtkpaned.c:495
+#: gtk/gtkpaned.c:483
msgid "Wide Handle"
msgstr "Alça larga"
-#: gtk/gtkpaned.c:496
+#: gtk/gtkpaned.c:484
msgid "Whether the paned should have a prominent handle"
msgstr "Se o painel deve ter uma alça proeminente"
-#: gtk/gtkpaned.c:508
+#: gtk/gtkpaned.c:496
msgid "Resize first child"
msgstr "Redimensionar primeiro filho"
-#: gtk/gtkpaned.c:509
+#: gtk/gtkpaned.c:497
msgid ""
"If TRUE, the first child expands and shrinks along with the paned widget"
msgstr ""
"Se VERDADEIRO, o primeiro filho expande e encolhe junto com o componente de "
"painel"
-#: gtk/gtkpaned.c:521
+#: gtk/gtkpaned.c:509
msgid "Resize second child"
msgstr "Redimensionar segundo filho"
-#: gtk/gtkpaned.c:522
+#: gtk/gtkpaned.c:510
msgid ""
"If TRUE, the second child expands and shrinks along with the paned widget"
msgstr ""
"Se VERDADEIRO, o segundo filho expande e encolhe junto com o componente de "
"painel"
-#: gtk/gtkpaned.c:534
+#: gtk/gtkpaned.c:522
msgid "Shrink first child"
msgstr "Encolher primeiro filho"
-#: gtk/gtkpaned.c:535
+#: gtk/gtkpaned.c:523
msgid "If TRUE, the first child can be made smaller than its requisition"
msgstr "Se VERDADEIRO, o primeiro filho pode ser menor do que sua requisição"
-#: gtk/gtkpaned.c:547
+#: gtk/gtkpaned.c:535
msgid "Shrink second child"
msgstr "Encolher segundo filho"
-#: gtk/gtkpaned.c:548
+#: gtk/gtkpaned.c:536
msgid "If TRUE, the second child can be made smaller than its requisition"
msgstr "Se VERDADEIRO, o segundo filho pode ser menor do que sua requisição"
-#: gtk/gtkpaned.c:554
+#: gtk/gtkpaned.c:547
msgid "First child"
msgstr "Primeiro filho"
-#: gtk/gtkpaned.c:555
+#: gtk/gtkpaned.c:548
msgid "The first child"
msgstr "O primeiro filho"
-#: gtk/gtkpaned.c:561
+#: gtk/gtkpaned.c:559
msgid "Second child"
msgstr "Segundo filho"
-#: gtk/gtkpaned.c:562
+#: gtk/gtkpaned.c:560
msgid "The second child"
msgstr "O segundo filho"
-#: gtk/gtkpasswordentry.c:450
+#: gtk/gtkpasswordentry.c:467
msgid "Show Peek Icon"
msgstr "Mostra ícone de espiar"
-#: gtk/gtkpasswordentry.c:451
+#: gtk/gtkpasswordentry.c:468
msgid "Whether to show an icon for revealing the content"
msgstr "Se deve mostrar um ícone para revelar o conteúdo"
-#: gtk/gtkpicture.c:331
+#: gtk/gtkpicture.c:332
msgid "The GdkPaintable to display"
msgstr "O GdkPaintable para exibir"
-#: gtk/gtkpicture.c:343
+#: gtk/gtkpicture.c:344
msgid "File to load and display"
msgstr "O arquivo para carregar e exibir"
-#: gtk/gtkpicture.c:354
+#: gtk/gtkpicture.c:355
msgid "Alternative text"
msgstr "Texto alternativo"
-#: gtk/gtkpicture.c:355
+#: gtk/gtkpicture.c:356
msgid "The alternative textual description"
msgstr "A descrição textual alternativa"
-#: gtk/gtkpicture.c:367
+#: gtk/gtkpicture.c:368
msgid "Keep aspect ratio"
msgstr "Manter taxa de proporção"
-#: gtk/gtkpicture.c:368
+#: gtk/gtkpicture.c:369
msgid "Render contents respecting the aspect ratio"
msgstr "Renderiza o conteúdo respeitando a taxa de proporção"
-#: gtk/gtkpicture.c:379
+#: gtk/gtkpicture.c:380
msgid "Can shrink"
msgstr "Pode encolher"
-#: gtk/gtkpicture.c:380
+#: gtk/gtkpicture.c:381
msgid "Allow self to be smaller than contents"
msgstr "Permite a si próprio ser menor do que sua requisição"
-#: gtk/gtkplacessidebar.c:4326
+#: gtk/gtkplacessidebar.c:4327
msgid "Location to Select"
msgstr "Localização para selecionar"
-#: gtk/gtkplacessidebar.c:4327
+#: gtk/gtkplacessidebar.c:4328
msgid "The location to highlight in the sidebar"
msgstr "A localização para destacar na barra lateral"
-#: gtk/gtkplacessidebar.c:4332 gtk/gtkplacesview.c:2254
+#: gtk/gtkplacessidebar.c:4333 gtk/gtkplacesview.c:2262
msgid "Open Flags"
msgstr "Sinalizadores de abertura"
-#: gtk/gtkplacessidebar.c:4333 gtk/gtkplacesview.c:2255
+#: gtk/gtkplacessidebar.c:4334 gtk/gtkplacesview.c:2263
msgid ""
"Modes in which the calling application can open locations selected in the "
"sidebar"
@@ -4615,71 +4615,71 @@ msgstr ""
"Modos nos quais o aplicativo chamador pode abrir localizações selecionadas "
"na barra lateral"
-#: gtk/gtkplacessidebar.c:4339
+#: gtk/gtkplacessidebar.c:4340
msgid "Show recent files"
msgstr "Mostrar arquivos recentes"
-#: gtk/gtkplacessidebar.c:4340
+#: gtk/gtkplacessidebar.c:4341
msgid "Whether the sidebar includes a builtin shortcut for recent files"
msgstr "Se a barra lateral inclui um atalho embutido para arquivos recentes"
-#: gtk/gtkplacessidebar.c:4345
+#: gtk/gtkplacessidebar.c:4346
msgid "Show “Desktop”"
msgstr "Mostrar a “Área de trabalho”"
-#: gtk/gtkplacessidebar.c:4346
+#: gtk/gtkplacessidebar.c:4347
msgid "Whether the sidebar includes a builtin shortcut to the Desktop folder"
msgstr "Se a barra lateral inclui um atalho embutido na pasta Área de trabalho"
-#: gtk/gtkplacessidebar.c:4351
+#: gtk/gtkplacessidebar.c:4352
msgid "Show “Enter Location”"
msgstr "Mostrar “Informe localização”"
-#: gtk/gtkplacessidebar.c:4352
+#: gtk/gtkplacessidebar.c:4353
msgid ""
"Whether the sidebar includes a builtin shortcut to manually enter a location"
msgstr ""
"Se a barra lateral inclui um atalho embutido para informar manualmente uma "
"localização"
-#: gtk/gtkplacessidebar.c:4357
+#: gtk/gtkplacessidebar.c:4358
msgid "Show “Trash”"
msgstr "Mostrar “Lixeira”"
-#: gtk/gtkplacessidebar.c:4358
+#: gtk/gtkplacessidebar.c:4359
msgid "Whether the sidebar includes a builtin shortcut to the Trash location"
msgstr ""
"Se a barra lateral inclui um atalho embutido para a localização da Lixeira"
-#: gtk/gtkplacessidebar.c:4363
+#: gtk/gtkplacessidebar.c:4364
msgid "Show “Other locations”"
msgstr "Mostrar “Outras localizações”"
-#: gtk/gtkplacessidebar.c:4364
+#: gtk/gtkplacessidebar.c:4365
msgid "Whether the sidebar includes an item to show external locations"
msgstr "Se a barra lateral inclui um item para mostrar localizações externas"
-#: gtk/gtkplacessidebar.c:4369
+#: gtk/gtkplacessidebar.c:4370
msgid "Show “Starred Location”"
msgstr "Mostrar “Localização favorita”"
-#: gtk/gtkplacessidebar.c:4370
+#: gtk/gtkplacessidebar.c:4371
msgid "Whether the sidebar includes an item to show starred files"
msgstr "Se a barra lateral inclui um item para mostrar arquivos favoritos"
-#: gtk/gtkplacesview.c:2240
+#: gtk/gtkplacesview.c:2248
msgid "Loading"
msgstr "Carregando"
-#: gtk/gtkplacesview.c:2241
+#: gtk/gtkplacesview.c:2249
msgid "Whether the view is loading locations"
msgstr "Se a visão é de carregando localizações"
-#: gtk/gtkplacesview.c:2247
+#: gtk/gtkplacesview.c:2255
msgid "Fetching networks"
msgstr "Buscando redes"
-#: gtk/gtkplacesview.c:2248
+#: gtk/gtkplacesview.c:2256
msgid "Whether the view is fetching networks"
msgstr "Se a visão é de obtendo rede"
@@ -4735,147 +4735,147 @@ msgstr "O arquivo representado pela linha, se houver"
msgid "Whether the row represents a network location"
msgstr "Se a linha representa uma localização de rede"
-#: gtk/gtkpopover.c:1664
+#: gtk/gtkpopover.c:1754
msgid "Pointing to"
msgstr "Apontando para"
-#: gtk/gtkpopover.c:1665
+#: gtk/gtkpopover.c:1755
msgid "Rectangle the bubble window points to"
msgstr "Retângulo para o qual a janela em formato de balão aponta"
-#: gtk/gtkpopover.c:1672
+#: gtk/gtkpopover.c:1767
msgid "Position to place the bubble window"
msgstr "Posição para colocar a janela em formato de balão"
-#: gtk/gtkpopover.c:1679
+#: gtk/gtkpopover.c:1779
msgid "Whether to dismiss the popover on outside clicks"
msgstr "Se deve dispensar a janela sobreposta em cliques fora"
-#: gtk/gtkpopover.c:1685 gtk/gtkwindow.c:920
+#: gtk/gtkpopover.c:1790 gtk/gtkwindow.c:1014
msgid "Default widget"
msgstr "Componente padrão"
-#: gtk/gtkpopover.c:1686 gtk/gtkwindow.c:921
+#: gtk/gtkpopover.c:1791 gtk/gtkwindow.c:1015
msgid "The default widget"
msgstr "O componente padrão"
-#: gtk/gtkpopover.c:1692
+#: gtk/gtkpopover.c:1802
msgid "Has Arrow"
msgstr "Tem seta"
-#: gtk/gtkpopover.c:1693
+#: gtk/gtkpopover.c:1803
msgid "Whether to draw an arrow"
msgstr "Se deve desenhar uma seta"
-#: gtk/gtkpopover.c:1699
+#: gtk/gtkpopover.c:1814
msgid "Mnemonics visible"
msgstr "Mnemônicos visíveis"
-#: gtk/gtkpopover.c:1700
+#: gtk/gtkpopover.c:1815
msgid "Whether mnemonics are currently visible in this popover"
msgstr "Se os mnemônicos estão atualmente visíveis nesta janela sobreposta"
-#: gtk/gtkpopover.c:1713
+#: gtk/gtkpopover.c:1840
msgid "Cascade popdown"
msgstr "Surgir em cascata"
-#: gtk/gtkpopover.c:1714
+#: gtk/gtkpopover.c:1841
msgid "Whether the popover pops down after a child popover"
msgstr "Se a a janela sobreposta surge logo após uma janela sobreposta filha"
-#: gtk/gtkpopovermenubar.c:638
+#: gtk/gtkpopovermenubar.c:637
msgid "The model from which the bar is made."
msgstr "O modelo a partir do qual a barra é feita."
-#: gtk/gtkpopovermenu.c:555
+#: gtk/gtkpopovermenu.c:570
msgid "Visible submenu"
msgstr "Submenu visível"
-#: gtk/gtkpopovermenu.c:556
+#: gtk/gtkpopovermenu.c:571
msgid "The name of the visible submenu"
msgstr "O nome do submenu visível"
-#: gtk/gtkpopovermenu.c:564
+#: gtk/gtkpopovermenu.c:584
msgid "The model from which the menu is made."
msgstr "O modelo a partir do qual o menu é feito."
-#: gtk/gtkprinter.c:120
+#: gtk/gtkprinter.c:124
msgid "Name of the printer"
msgstr "Nome da impressora"
-#: gtk/gtkprinter.c:126
+#: gtk/gtkprinter.c:136
msgid "Backend"
msgstr "Backend"
-#: gtk/gtkprinter.c:127
+#: gtk/gtkprinter.c:137
msgid "Backend for the printer"
msgstr "Backend para a impressora"
-#: gtk/gtkprinter.c:133
+#: gtk/gtkprinter.c:149
msgid "Is Virtual"
msgstr "É virtual"
-#: gtk/gtkprinter.c:134
+#: gtk/gtkprinter.c:150
msgid "FALSE if this represents a real hardware printer"
msgstr "FALSO se representar uma impressora física"
-#: gtk/gtkprinter.c:140
+#: gtk/gtkprinter.c:162
msgid "Accepts PDF"
msgstr "Aceita PDF"
-#: gtk/gtkprinter.c:141
+#: gtk/gtkprinter.c:163
msgid "TRUE if this printer can accept PDF"
msgstr "VERDADEIRO se esta impressora puder aceitar PDF"
-#: gtk/gtkprinter.c:147
+#: gtk/gtkprinter.c:175
msgid "Accepts PostScript"
msgstr "Aceita PostScript"
-#: gtk/gtkprinter.c:148
+#: gtk/gtkprinter.c:176
msgid "TRUE if this printer can accept PostScript"
msgstr "VERDADEIRO se esta impressora puder aceitar PostScript"
-#: gtk/gtkprinter.c:154
+#: gtk/gtkprinter.c:188
msgid "State Message"
msgstr "Mensagem de estado"
-#: gtk/gtkprinter.c:155
+#: gtk/gtkprinter.c:189
msgid "String giving the current state of the printer"
msgstr "String informando o estado atual da impressora"
-#: gtk/gtkprinter.c:161
+#: gtk/gtkprinter.c:201
msgid "Location"
msgstr "Localização"
-#: gtk/gtkprinter.c:162
+#: gtk/gtkprinter.c:202
msgid "The location of the printer"
msgstr "A localização da impressora"
-#: gtk/gtkprinter.c:169
+#: gtk/gtkprinter.c:215
msgid "The icon name to use for the printer"
msgstr "O nome do ícone a usar para a impressora"
-#: gtk/gtkprinter.c:175
+#: gtk/gtkprinter.c:227
msgid "Job Count"
msgstr "Contagem de trabalhos"
-#: gtk/gtkprinter.c:176
+#: gtk/gtkprinter.c:228
msgid "Number of jobs queued in the printer"
msgstr "O número de trabalhos de impressão na impressora"
-#: gtk/gtkprinter.c:192
+#: gtk/gtkprinter.c:245
msgid "Paused Printer"
msgstr "Impressora pausada"
-#: gtk/gtkprinter.c:193
+#: gtk/gtkprinter.c:246
msgid "TRUE if this printer is paused"
msgstr "VERDADEIRO se esta impressora está pausada"
-#: gtk/gtkprinter.c:204
+#: gtk/gtkprinter.c:258
msgid "Accepting Jobs"
msgstr "Aceitando trabalhos"
-#: gtk/gtkprinter.c:205
+#: gtk/gtkprinter.c:259
msgid "TRUE if this printer is accepting new jobs"
msgstr "VERDADEIRO se esta impressora está aceitando novos trabalhos"
@@ -4895,35 +4895,35 @@ msgstr "Opção de origem"
msgid "The PrinterOption backing this widget"
msgstr "A PrinterOption dando suporte a este componente"
-#: gtk/gtkprintjob.c:145
+#: gtk/gtkprintjob.c:148
msgid "Title of the print job"
msgstr "Título do trabalho de impressão"
-#: gtk/gtkprintjob.c:153
+#: gtk/gtkprintjob.c:161
msgid "Printer"
msgstr "Impressora"
-#: gtk/gtkprintjob.c:154
+#: gtk/gtkprintjob.c:162
msgid "Printer to print the job to"
msgstr "Impressora na qual imprimir o trabalho"
-#: gtk/gtkprintjob.c:162
+#: gtk/gtkprintjob.c:175
msgid "Settings"
msgstr "Configurações"
-#: gtk/gtkprintjob.c:163
+#: gtk/gtkprintjob.c:176
msgid "Printer settings"
msgstr "Configurações da impressora"
-#: gtk/gtkprintjob.c:171 gtk/gtkprintjob.c:172 gtk/gtkprintunixdialog.c:381
+#: gtk/gtkprintjob.c:189 gtk/gtkprintjob.c:190 gtk/gtkprintunixdialog.c:387
msgid "Page Setup"
msgstr "Configurações de página"
-#: gtk/gtkprintjob.c:180 gtk/gtkprintoperation.c:1192
+#: gtk/gtkprintjob.c:204 gtk/gtkprintoperation.c:1204
msgid "Track Print Status"
msgstr "Acompanhar estado da impressão"
-#: gtk/gtkprintjob.c:181
+#: gtk/gtkprintjob.c:205
msgid ""
"TRUE if the print job will continue to emit status-changed signals after the "
"print data has been sent to the printer or print server."
@@ -4932,51 +4932,51 @@ msgstr ""
"changed” após os dados de impressão terem sido enviados à impressora ou "
"servidor de impressão."
-#: gtk/gtkprintoperation.c:1076
+#: gtk/gtkprintoperation.c:1086
msgid "Default Page Setup"
msgstr "Configuração padrão de impressão"
-#: gtk/gtkprintoperation.c:1077
+#: gtk/gtkprintoperation.c:1087
msgid "The GtkPageSetup used by default"
msgstr "O GtkPageSetup usado por padrão"
-#: gtk/gtkprintoperation.c:1093 gtk/gtkprintunixdialog.c:399
+#: gtk/gtkprintoperation.c:1103 gtk/gtkprintunixdialog.c:415
msgid "Print Settings"
msgstr "Configurações de impressão"
-#: gtk/gtkprintoperation.c:1094 gtk/gtkprintunixdialog.c:400
+#: gtk/gtkprintoperation.c:1104 gtk/gtkprintunixdialog.c:416
msgid "The GtkPrintSettings used for initializing the dialog"
msgstr "As GtkPrintSettings usadas para iniciar o diálogo"
-#: gtk/gtkprintoperation.c:1110
+#: gtk/gtkprintoperation.c:1120
msgid "Job Name"
msgstr "Nome do trabalho"
-#: gtk/gtkprintoperation.c:1111
+#: gtk/gtkprintoperation.c:1121
msgid "A string used for identifying the print job."
msgstr "Uma string usada para identificar o trabalho de impressão."
-#: gtk/gtkprintoperation.c:1133
+#: gtk/gtkprintoperation.c:1143
msgid "Number of Pages"
msgstr "Número de páginas"
-#: gtk/gtkprintoperation.c:1134
+#: gtk/gtkprintoperation.c:1144
msgid "The number of pages in the document."
msgstr "O número de páginas no documento."
-#: gtk/gtkprintoperation.c:1153 gtk/gtkprintunixdialog.c:389
+#: gtk/gtkprintoperation.c:1163 gtk/gtkprintunixdialog.c:400
msgid "Current Page"
msgstr "Página atual"
-#: gtk/gtkprintoperation.c:1154 gtk/gtkprintunixdialog.c:390
+#: gtk/gtkprintoperation.c:1164 gtk/gtkprintunixdialog.c:401
msgid "The current page in the document"
msgstr "A página atual no documento"
-#: gtk/gtkprintoperation.c:1173
+#: gtk/gtkprintoperation.c:1185
msgid "Use full page"
msgstr "Usar página inteira"
-#: gtk/gtkprintoperation.c:1174
+#: gtk/gtkprintoperation.c:1186
msgid ""
"TRUE if the origin of the context should be at the corner of the page and "
"not the corner of the imageable area"
@@ -4984,7 +4984,7 @@ msgstr ""
"VERDADEIRO se a origem do contexto deveria ser no canto da página e não o "
"canto da área onde pode haver uma imagem"
-#: gtk/gtkprintoperation.c:1193
+#: gtk/gtkprintoperation.c:1205
msgid ""
"TRUE if the print operation will continue to report on the print job status "
"after the print data has been sent to the printer or print server."
@@ -4993,152 +4993,152 @@ msgstr ""
"trabalho de impressão após os dados da impressão terem sido enviados à "
"impressora ou ao servidor de impressão."
-#: gtk/gtkprintoperation.c:1208
+#: gtk/gtkprintoperation.c:1219
msgid "Unit"
msgstr "Unidade"
-#: gtk/gtkprintoperation.c:1209
+#: gtk/gtkprintoperation.c:1220
msgid "The unit in which distances can be measured in the context"
msgstr "A unidade na qual as distâncias podem ser medidas no contexto"
-#: gtk/gtkprintoperation.c:1224
+#: gtk/gtkprintoperation.c:1234
msgid "Show Dialog"
msgstr "Mostrar diálogo"
-#: gtk/gtkprintoperation.c:1225
+#: gtk/gtkprintoperation.c:1235
msgid "TRUE if a progress dialog is shown while printing."
msgstr ""
"VERDADEIRO se um diálogo de progresso for mostrado durante a impressão."
-#: gtk/gtkprintoperation.c:1246
+#: gtk/gtkprintoperation.c:1256
msgid "Allow Async"
msgstr "Permitir assíncrono"
-#: gtk/gtkprintoperation.c:1247
+#: gtk/gtkprintoperation.c:1257
msgid "TRUE if print process may run asynchronous."
msgstr ""
"VERDADEIRO se o processo de impressão puder ser executado assincronamente."
-#: gtk/gtkprintoperation.c:1267 gtk/gtkprintoperation.c:1268
+#: gtk/gtkprintoperation.c:1278 gtk/gtkprintoperation.c:1279
msgid "Export filename"
msgstr "Exportar nome do arquivo"
-#: gtk/gtkprintoperation.c:1280
+#: gtk/gtkprintoperation.c:1291
msgid "Status"
msgstr "Estado"
-#: gtk/gtkprintoperation.c:1281
+#: gtk/gtkprintoperation.c:1292
msgid "The status of the print operation"
msgstr "O estado da operação de impressão"
-#: gtk/gtkprintoperation.c:1299
+#: gtk/gtkprintoperation.c:1311
msgid "Status String"
msgstr "“String” de estado"
-#: gtk/gtkprintoperation.c:1300
+#: gtk/gtkprintoperation.c:1312
msgid "A human-readable description of the status"
msgstr "Uma descrição do estado legível"
-#: gtk/gtkprintoperation.c:1316
+#: gtk/gtkprintoperation.c:1329
msgid "Custom tab label"
msgstr "Rótulo de aba personalizada"
-#: gtk/gtkprintoperation.c:1317
+#: gtk/gtkprintoperation.c:1330
msgid "Label for the tab containing custom widgets."
msgstr "Rótulo para a aba contendo componentes personalizados."
-#: gtk/gtkprintoperation.c:1330 gtk/gtkprintunixdialog.c:424
+#: gtk/gtkprintoperation.c:1344 gtk/gtkprintunixdialog.c:455
msgid "Support Selection"
msgstr "Suporte a seleção"
-#: gtk/gtkprintoperation.c:1331
+#: gtk/gtkprintoperation.c:1345
msgid "TRUE if the print operation will support print of selection."
msgstr "VERDADEIRO se a operação de impressão terá suporte a imprimir seleção."
-#: gtk/gtkprintoperation.c:1345 gtk/gtkprintunixdialog.c:432
+#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:468
msgid "Has Selection"
msgstr "Tem seleção"
-#: gtk/gtkprintoperation.c:1346
+#: gtk/gtkprintoperation.c:1361
msgid "TRUE if a selection exists."
msgstr "VERDADEIRO se uma seleção existe."
-#: gtk/gtkprintoperation.c:1359 gtk/gtkprintunixdialog.c:440
+#: gtk/gtkprintoperation.c:1375 gtk/gtkprintunixdialog.c:481
msgid "Embed Page Setup"
msgstr "Incorporar configurações de página"
-#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:441
+#: gtk/gtkprintoperation.c:1376 gtk/gtkprintunixdialog.c:482
msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog"
msgstr ""
"VERDADEIRO se caixas de combinação de configuração de página foram "
"incorporadas ao GtkPrintUnixDialog"
-#: gtk/gtkprintoperation.c:1379
+#: gtk/gtkprintoperation.c:1397
msgid "Number of Pages To Print"
msgstr "Número de páginas a imprimir"
-#: gtk/gtkprintoperation.c:1380
+#: gtk/gtkprintoperation.c:1398
msgid "The number of pages that will be printed."
msgstr "O número de páginas que serão impressas."
-#: gtk/gtkprintunixdialog.c:382
+#: gtk/gtkprintunixdialog.c:388
msgid "The GtkPageSetup to use"
msgstr "A GtkPageSetup usada"
-#: gtk/gtkprintunixdialog.c:407
+#: gtk/gtkprintunixdialog.c:428
msgid "Selected Printer"
msgstr "Impressora selecionada"
-#: gtk/gtkprintunixdialog.c:408
+#: gtk/gtkprintunixdialog.c:429
msgid "The GtkPrinter which is selected"
msgstr "A GtkPrinter que está selecionada"
-#: gtk/gtkprintunixdialog.c:415
+#: gtk/gtkprintunixdialog.c:441
msgid "Manual Capabilities"
msgstr "Capacidades manuais"
-#: gtk/gtkprintunixdialog.c:416
+#: gtk/gtkprintunixdialog.c:442
msgid "Capabilities the application can handle"
msgstr "Capacidades com as quais o aplicativo pode lidar"
-#: gtk/gtkprintunixdialog.c:425
+#: gtk/gtkprintunixdialog.c:456
msgid "Whether the dialog supports selection"
msgstr "Se o diálogo tem suporte a seleção"
-#: gtk/gtkprintunixdialog.c:433
+#: gtk/gtkprintunixdialog.c:469
msgid "Whether the application has a selection"
msgstr "Se o aplicativo tem uma seleção"
-#: gtk/gtkprogressbar.c:192
+#: gtk/gtkprogressbar.c:200
msgid "Fraction"
msgstr "Fração"
-#: gtk/gtkprogressbar.c:193
+#: gtk/gtkprogressbar.c:201
msgid "The fraction of total work that has been completed"
msgstr "A fração do trabalho total que já foi terminada"
-#: gtk/gtkprogressbar.c:200
+#: gtk/gtkprogressbar.c:213
msgid "Pulse Step"
msgstr "Incremento do impulso"
-#: gtk/gtkprogressbar.c:201
+#: gtk/gtkprogressbar.c:214
msgid "The fraction of total progress to move the bouncing block when pulsed"
msgstr ""
"A fração de progresso total a mover o bloco deslizante quando atualizada"
-#: gtk/gtkprogressbar.c:209
+#: gtk/gtkprogressbar.c:227
msgid "Text to be displayed in the progress bar"
msgstr "Texto para exibir na barra de progresso"
-#: gtk/gtkprogressbar.c:228
+#: gtk/gtkprogressbar.c:247
msgid "Show text"
msgstr "Mostrar texto"
-#: gtk/gtkprogressbar.c:229
+#: gtk/gtkprogressbar.c:248
msgid "Whether the progress is shown as text."
msgstr "Se o progresso é mostrado como texto."
-#: gtk/gtkprogressbar.c:248
+#: gtk/gtkprogressbar.c:268
msgid ""
"The preferred place to ellipsize the string, if the progress bar does not "
"have enough room to display the entire string, if at all."
@@ -5147,162 +5147,162 @@ msgstr ""
"progresso não tem espaço suficiente para exibir a string inteira, ou mesmo "
"alguma parte."
-#: gtk/gtkpropertylookuplistmodel.c:376
+#: gtk/gtkpropertylookuplistmodel.c:373
msgid "Item type"
msgstr "Tipo de item"
-#: gtk/gtkpropertylookuplistmodel.c:377
+#: gtk/gtkpropertylookuplistmodel.c:374
msgid "The type of elements of this object"
msgstr "O tipo de elementos deste objeto"
-#: gtk/gtkpropertylookuplistmodel.c:388
+#: gtk/gtkpropertylookuplistmodel.c:385
msgid "type"
msgstr "tipo"
-#: gtk/gtkpropertylookuplistmodel.c:389
+#: gtk/gtkpropertylookuplistmodel.c:386
msgid "Name of the property used for lookups"
msgstr "O nome da propriedade usada para procuras"
-#: gtk/gtkpropertylookuplistmodel.c:400
+#: gtk/gtkpropertylookuplistmodel.c:397
msgid "Object"
msgstr "Objeto"
-#: gtk/gtkpropertylookuplistmodel.c:401
+#: gtk/gtkpropertylookuplistmodel.c:398
msgid "The root object"
msgstr "O objeto raiz"
-#: gtk/gtkrange.c:365
+#: gtk/gtkrange.c:373
msgid "The GtkAdjustment that contains the current value of this range object"
msgstr "O GtkAdjustment que contém o valor atual deste objeto “range”"
-#: gtk/gtkrange.c:372
+#: gtk/gtkrange.c:385
msgid "Invert direction slider moves to increase range value"
msgstr ""
"Inverter direção em que o deslizador se move para aumentar o valor de “range”"
-#: gtk/gtkrange.c:385
+#: gtk/gtkrange.c:397
msgid "Show Fill Level"
msgstr "Mostrar nível de preenchimento"
-#: gtk/gtkrange.c:386
+#: gtk/gtkrange.c:398
msgid "Whether to display a fill level indicator graphics on trough."
msgstr "Exibir ou não um indicador de nível de preenchimento na calha."
-#: gtk/gtkrange.c:399
+#: gtk/gtkrange.c:410
msgid "Restrict to Fill Level"
msgstr "Restringir ao nível de preenchimento"
-#: gtk/gtkrange.c:400
+#: gtk/gtkrange.c:411
msgid "Whether to restrict the upper boundary to the fill level."
msgstr "Restringir ou não o limite superior ou nível de preenchimento."
-#: gtk/gtkrange.c:412
+#: gtk/gtkrange.c:422
msgid "Fill Level"
msgstr "Nível de preenchimento"
-#: gtk/gtkrange.c:413
+#: gtk/gtkrange.c:423
msgid "The fill level."
msgstr "O nível de preenchimento."
-#: gtk/gtkrange.c:426
+#: gtk/gtkrange.c:438
msgid "Round Digits"
msgstr "Arredondar dígitos"
-#: gtk/gtkrange.c:427
+#: gtk/gtkrange.c:439
msgid "The number of digits to round the value to."
msgstr "O número de dígitos para arredondar em um valor."
-#: gtk/gtkrecentmanager.c:280
+#: gtk/gtkrecentmanager.c:272
msgid "The full path to the file to be used to store and read the list"
msgstr "O caminho completo do arquivo usado para armazenar e ler a lista"
-#: gtk/gtkrecentmanager.c:293
+#: gtk/gtkrecentmanager.c:285
msgid "The size of the recently used resources list"
msgstr "O tamanho da lista de recursos recentemente usados"
-#: gtk/gtkrevealer.c:318 gtk/gtkstack.c:805
+#: gtk/gtkrevealer.c:319 gtk/gtkstack.c:870
msgid "Transition type"
msgstr "Tipo de transição"
-#: gtk/gtkrevealer.c:319 gtk/gtkstack.c:805
+#: gtk/gtkrevealer.c:320 gtk/gtkstack.c:870
msgid "The type of animation used to transition"
msgstr "O tipo de animação usada para a transição"
-#: gtk/gtkrevealer.c:326 gtk/gtkstack.c:801
+#: gtk/gtkrevealer.c:332 gtk/gtkstack.c:860
msgid "Transition duration"
msgstr "Duração de transição"
-#: gtk/gtkrevealer.c:327 gtk/gtkstack.c:801
+#: gtk/gtkrevealer.c:333 gtk/gtkstack.c:860
msgid "The animation duration, in milliseconds"
msgstr "A duração da animação, em milissegundos"
-#: gtk/gtkrevealer.c:333
+#: gtk/gtkrevealer.c:344
msgid "Reveal Child"
msgstr "Revelar filho"
-#: gtk/gtkrevealer.c:334
+#: gtk/gtkrevealer.c:345
msgid "Whether the container should reveal the child"
msgstr "Se o contêiner deve revelar o filho"
-#: gtk/gtkrevealer.c:340
+#: gtk/gtkrevealer.c:356
msgid "Child Revealed"
msgstr "Filho revelado"
-#: gtk/gtkrevealer.c:341
+#: gtk/gtkrevealer.c:357
msgid "Whether the child is revealed and the animation target reached"
msgstr "Se o filho foi revelado ou a animação alvo foi alcançada"
-#: gtk/gtkscalebutton.c:205
+#: gtk/gtkscalebutton.c:198
msgid "The value of the scale"
msgstr "O valor da escala"
-#: gtk/gtkscalebutton.c:215
+#: gtk/gtkscalebutton.c:213
msgid ""
"The GtkAdjustment that contains the current value of this scale button object"
msgstr "O GtkAdjustment que contém o valor atual deste objeto botão de escala"
-#: gtk/gtkscalebutton.c:241
+#: gtk/gtkscalebutton.c:240
msgid "Icons"
msgstr "Ícones"
-#: gtk/gtkscalebutton.c:242
+#: gtk/gtkscalebutton.c:241
msgid "List of icon names"
msgstr "Lista de nomes de ícones"
-#: gtk/gtkscale.c:678
+#: gtk/gtkscale.c:682
msgid "The number of decimal places that are displayed in the value"
msgstr "O número de casas decimais que são exibidas no valor"
-#: gtk/gtkscale.c:685
+#: gtk/gtkscale.c:694
msgid "Draw Value"
msgstr "Mostrar valor"
-#: gtk/gtkscale.c:686
+#: gtk/gtkscale.c:695
msgid "Whether the current value is displayed as a string next to the slider"
msgstr ""
"Se o valor atual é exibido como uma “string” próxima à barra de deslizar"
-#: gtk/gtkscale.c:692
+#: gtk/gtkscale.c:706
msgid "Has Origin"
msgstr "Tem origem"
-#: gtk/gtkscale.c:693
+#: gtk/gtkscale.c:707
msgid "Whether the scale has an origin"
msgstr "Se o a escala tem uma origem"
-#: gtk/gtkscale.c:699
+#: gtk/gtkscale.c:718
msgid "Value Position"
msgstr "Posição do valor"
-#: gtk/gtkscale.c:700
+#: gtk/gtkscale.c:719
msgid "The position in which the current value is displayed"
msgstr "A posição onde o valor atual é exibido"
-#: gtk/gtkscrollable.c:75
+#: gtk/gtkscrollable.c:76
msgid "Horizontal adjustment"
msgstr "Ajustamento horizontal"
-#: gtk/gtkscrollable.c:76
+#: gtk/gtkscrollable.c:77
msgid ""
"Horizontal adjustment that is shared between the scrollable widget and its "
"controller"
@@ -5310,11 +5310,11 @@ msgstr ""
"Ajuste horizontal que está compartilhado entre o componente rodável e seu "
"controlador"
-#: gtk/gtkscrollable.c:90
+#: gtk/gtkscrollable.c:92
msgid "Vertical adjustment"
msgstr "Ajustamento vertical"
-#: gtk/gtkscrollable.c:91
+#: gtk/gtkscrollable.c:93
msgid ""
"Vertical adjustment that is shared between the scrollable widget and its "
"controller"
@@ -5322,11 +5322,11 @@ msgstr ""
"Ajuste vertical que está compartilhado entre o componente rolável e seu "
"controlador"
-#: gtk/gtkscrollable.c:105
+#: gtk/gtkscrollable.c:106
msgid "Horizontal Scrollable Policy"
msgstr "Política de rolagem horizontal"
-#: gtk/gtkscrollable.c:106 gtk/gtkscrollable.c:120
+#: gtk/gtkscrollable.c:107 gtk/gtkscrollable.c:120
msgid "How the size of the content should be determined"
msgstr "Como o tamanho do conteúdo deve ser determinado"
@@ -5334,133 +5334,133 @@ msgstr "Como o tamanho do conteúdo deve ser determinado"
msgid "Vertical Scrollable Policy"
msgstr "Política de rolagem vertical"
-#: gtk/gtkscrollbar.c:214
+#: gtk/gtkscrollbar.c:222
msgid "The GtkAdjustment that contains the current value of this scrollbar"
msgstr "O GtkAdjustment que contém o valor atual desta barra de rolagem"
-#: gtk/gtkscrolledwindow.c:606
+#: gtk/gtkscrolledwindow.c:604
msgid "Horizontal Adjustment"
msgstr "Ajustamento horizontal"
-#: gtk/gtkscrolledwindow.c:607
+#: gtk/gtkscrolledwindow.c:605
msgid "The GtkAdjustment for the horizontal position"
msgstr "O GtkAdjustment para a posição horizontal"
-#: gtk/gtkscrolledwindow.c:613
+#: gtk/gtkscrolledwindow.c:616
msgid "Vertical Adjustment"
msgstr "Ajustamento vertical"
-#: gtk/gtkscrolledwindow.c:614
+#: gtk/gtkscrolledwindow.c:617
msgid "The GtkAdjustment for the vertical position"
msgstr "O GtkAdjustment para a posição vertical"
-#: gtk/gtkscrolledwindow.c:620
+#: gtk/gtkscrolledwindow.c:631
msgid "Horizontal Scrollbar Policy"
msgstr "Política da barra de rolagem horizontal"
-#: gtk/gtkscrolledwindow.c:621
+#: gtk/gtkscrolledwindow.c:632
msgid "When the horizontal scrollbar is displayed"
msgstr "Quando exibir a barra de rolagem horizontal"
-#: gtk/gtkscrolledwindow.c:628
+#: gtk/gtkscrolledwindow.c:647
msgid "Vertical Scrollbar Policy"
msgstr "Política da barra de rolagem vertical"
-#: gtk/gtkscrolledwindow.c:629
+#: gtk/gtkscrolledwindow.c:648
msgid "When the vertical scrollbar is displayed"
msgstr "Quando exibir a barra de rolagem vertical"
-#: gtk/gtkscrolledwindow.c:636
+#: gtk/gtkscrolledwindow.c:660
msgid "Window Placement"
msgstr "Posicionamento de Janela"
-#: gtk/gtkscrolledwindow.c:637
+#: gtk/gtkscrolledwindow.c:661
msgid "Where the contents are located with respect to the scrollbars."
msgstr "Onde o conteúdo está localizado em relação às barras de rolagem."
-#: gtk/gtkscrolledwindow.c:645
+#: gtk/gtkscrolledwindow.c:674
msgid "Whether to draw a frame around the contents"
msgstr "Se deve desenhar uma moldura ao redor do conteúdo"
-#: gtk/gtkscrolledwindow.c:656
+#: gtk/gtkscrolledwindow.c:685
msgid "Minimum Content Width"
msgstr "Largura mínima de conteúdo"
-#: gtk/gtkscrolledwindow.c:657
+#: gtk/gtkscrolledwindow.c:686
msgid "The minimum width that the scrolled window will allocate to its content"
msgstr "A largura mínima que a janela rodável irá alocar para seu conteúdo"
-#: gtk/gtkscrolledwindow.c:668
+#: gtk/gtkscrolledwindow.c:697
msgid "Minimum Content Height"
msgstr "Altura mínima do conteúdo"
-#: gtk/gtkscrolledwindow.c:669
+#: gtk/gtkscrolledwindow.c:698
msgid ""
"The minimum height that the scrolled window will allocate to its content"
msgstr "A altura mínima que a janela rodável irá alocar para seu conteúdo"
-#: gtk/gtkscrolledwindow.c:681
+#: gtk/gtkscrolledwindow.c:711
msgid "Kinetic Scrolling"
msgstr "Rolagem cinética"
-#: gtk/gtkscrolledwindow.c:682
+#: gtk/gtkscrolledwindow.c:712
msgid "Kinetic scrolling mode."
msgstr "Modo de rolagem cinética."
-#: gtk/gtkscrolledwindow.c:699
+#: gtk/gtkscrolledwindow.c:730
msgid "Overlay Scrolling"
msgstr "Rolagem de sobreposição"
-#: gtk/gtkscrolledwindow.c:700
+#: gtk/gtkscrolledwindow.c:731
msgid "Overlay scrolling mode"
msgstr "Modo de rolagem de sobreposição"
-#: gtk/gtkscrolledwindow.c:711
+#: gtk/gtkscrolledwindow.c:742
msgid "Maximum Content Width"
msgstr "Largura máxima de conteúdo"
-#: gtk/gtkscrolledwindow.c:712
+#: gtk/gtkscrolledwindow.c:743
msgid "The maximum width that the scrolled window will allocate to its content"
msgstr "A largura máxima que a janela rodável irá alocar para seu conteúdo"
-#: gtk/gtkscrolledwindow.c:723
+#: gtk/gtkscrolledwindow.c:754
msgid "Maximum Content Height"
msgstr "Altura máxima do conteúdo"
-#: gtk/gtkscrolledwindow.c:724
+#: gtk/gtkscrolledwindow.c:755
msgid ""
"The maximum height that the scrolled window will allocate to its content"
msgstr "A altura máxima que a janela rodável irá alocar para seu conteúdo"
-#: gtk/gtkscrolledwindow.c:739 gtk/gtkscrolledwindow.c:740
+#: gtk/gtkscrolledwindow.c:770 gtk/gtkscrolledwindow.c:771
msgid "Propagate Natural Width"
msgstr "Propagar largura natural"
-#: gtk/gtkscrolledwindow.c:755 gtk/gtkscrolledwindow.c:756
+#: gtk/gtkscrolledwindow.c:786 gtk/gtkscrolledwindow.c:787
msgid "Propagate Natural Height"
msgstr "Propagar altura natural"
-#: gtk/gtksearchbar.c:310
+#: gtk/gtksearchbar.c:311
msgid "Search Mode Enabled"
msgstr "Modo de pesquisa habilitado"
-#: gtk/gtksearchbar.c:311
+#: gtk/gtksearchbar.c:312
msgid "Whether the search mode is on and the search bar shown"
msgstr "Se o modo de pesquisa está habilitado e a barra de pesquisa mostrada"
-#: gtk/gtksearchbar.c:322
+#: gtk/gtksearchbar.c:323
msgid "Whether to show the close button in the toolbar"
msgstr "Se deve ser mostrado o botão de fechar na barra de ferramentas"
-#: gtk/gtksearchbar.c:334 gtk/gtksearchbar.c:335
+#: gtk/gtksearchbar.c:345 gtk/gtksearchbar.c:346
msgid "Key Capture Widget"
msgstr "Componente de captura de chave"
-#: gtk/gtksettings.c:317
+#: gtk/gtksettings.c:340
msgid "Double Click Time"
msgstr "Tempo de clique duplo"
-#: gtk/gtksettings.c:318
+#: gtk/gtksettings.c:341
msgid ""
"Maximum time allowed between two clicks for them to be considered a double "
"click (in milliseconds)"
@@ -5468,11 +5468,11 @@ msgstr ""
"Tempo máximo permitido entre dois cliques para que eles possam ser "
"considerados um clique duplo (em milissegundos)"
-#: gtk/gtksettings.c:324
+#: gtk/gtksettings.c:354
msgid "Double Click Distance"
msgstr "Distância de clique duplo"
-#: gtk/gtksettings.c:325
+#: gtk/gtksettings.c:355
msgid ""
"Maximum distance allowed between two clicks for them to be considered a "
"double click (in pixels)"
@@ -5480,35 +5480,35 @@ msgstr ""
"Distância máxima permitida entre dois cliques para que eles possam ser "
"considerados um clique duplo (em pixels)"
-#: gtk/gtksettings.c:340
+#: gtk/gtksettings.c:370
msgid "Cursor Blink"
msgstr "Piscar cursor"
-#: gtk/gtksettings.c:341
+#: gtk/gtksettings.c:371
msgid "Whether the cursor should blink"
msgstr "Se o cursor deve piscar"
-#: gtk/gtksettings.c:347
+#: gtk/gtksettings.c:383
msgid "Cursor Blink Time"
msgstr "Intervalo do cursor piscar"
-#: gtk/gtksettings.c:348
+#: gtk/gtksettings.c:384
msgid "Length of the cursor blink cycle, in milliseconds"
msgstr "Tempo entre as piscadas do cursor, em milissegundos"
-#: gtk/gtksettings.c:364
+#: gtk/gtksettings.c:401
msgid "Cursor Blink Timeout"
msgstr "Tempo limite do cursor piscar"
-#: gtk/gtksettings.c:365
+#: gtk/gtksettings.c:402
msgid "Time after which the cursor stops blinking, in seconds"
msgstr "Tempo após o qual o cursor pára de piscar, em segundos"
-#: gtk/gtksettings.c:371
+#: gtk/gtksettings.c:415
msgid "Split Cursor"
msgstr "Dividir cursor"
-#: gtk/gtksettings.c:372
+#: gtk/gtksettings.c:416
msgid ""
"Whether two cursors should be displayed for mixed left-to-right and right-to-"
"left text"
@@ -5516,120 +5516,120 @@ msgstr ""
"Se dois cursores devem ser exibidos para texto misturando esquerda-para-"
"direita e direita-para-esquerda"
-#: gtk/gtksettings.c:379
+#: gtk/gtksettings.c:428
msgid "Cursor Aspect Ratio"
msgstr "Taxa de proporção do cursor"
-#: gtk/gtksettings.c:380
+#: gtk/gtksettings.c:429
msgid "The aspect ratio of the text caret"
msgstr "A taxa de proporção do acento circunflexo do texto"
-#: gtk/gtksettings.c:387
+#: gtk/gtksettings.c:444
msgid "Theme Name"
msgstr "Nome do tema"
-#: gtk/gtksettings.c:388
+#: gtk/gtksettings.c:445
msgid "Name of theme to load"
msgstr "Nome do tema para carregar"
-#: gtk/gtksettings.c:395
+#: gtk/gtksettings.c:460
msgid "Icon Theme Name"
msgstr "Nome do tema de ícones"
-#: gtk/gtksettings.c:396
+#: gtk/gtksettings.c:461
msgid "Name of icon theme to use"
msgstr "Nome do tema de ícones para usar"
-#: gtk/gtksettings.c:403
+#: gtk/gtksettings.c:473
msgid "Drag threshold"
msgstr "Limite para arrasto"
-#: gtk/gtksettings.c:404
+#: gtk/gtksettings.c:474
msgid "Number of pixels the cursor can move before dragging"
msgstr ""
"Número de pixels que o cursor pode se mover antes de começar a arrastar"
-#: gtk/gtksettings.c:416
+#: gtk/gtksettings.c:488
msgid "Font Name"
msgstr "Nome da fonte"
-#: gtk/gtksettings.c:417
+#: gtk/gtksettings.c:489
msgid "The default font family and size to use"
msgstr "A família de fontes padrão e o tamanho para usar"
-#: gtk/gtksettings.c:424
+#: gtk/gtksettings.c:503
msgid "Xft Antialias"
msgstr "Suavização do Xft"
-#: gtk/gtksettings.c:425
+#: gtk/gtksettings.c:504
msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default"
msgstr "Suavizar ou não fontes do Xft; 0=não, 1=sim, -1=padrão"
-#: gtk/gtksettings.c:433
+#: gtk/gtksettings.c:519
msgid "Xft Hinting"
msgstr "Hinting do Xft"
-#: gtk/gtksettings.c:434
+#: gtk/gtksettings.c:520
msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default"
msgstr "Ativar ou não hinting das fontes do Xft; 0=não, 1=sim, -1=padrão"
-#: gtk/gtksettings.c:442
+#: gtk/gtksettings.c:536
msgid "Xft Hint Style"
msgstr "Estilo de hinting do Xft"
-#: gtk/gtksettings.c:443
+#: gtk/gtksettings.c:537
msgid ""
"What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull"
msgstr ""
"Qual grau de dicas para usar: “hintnone”, “hintslight”, “hintmedium” ou "
"“hintfull”"
-#: gtk/gtksettings.c:451
+#: gtk/gtksettings.c:552
msgid "Xft RGBA"
msgstr "RGBA do Xft"
-#: gtk/gtksettings.c:452
+#: gtk/gtksettings.c:553
msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr"
msgstr "Tipo de suavização subpixel: “none”, “rgb”, “bgr”, “vrgb”, “vbgr”"
-#: gtk/gtksettings.c:460
+#: gtk/gtksettings.c:568
msgid "Xft DPI"
msgstr "DPI do Xft"
-#: gtk/gtksettings.c:461
+#: gtk/gtksettings.c:569
msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value"
msgstr ""
"Resolução para o Xft, em 1024 * pontos/polegada. -1 para usar valores padrão"
-#: gtk/gtksettings.c:469
+#: gtk/gtksettings.c:584
msgid "Cursor theme name"
msgstr "Nome do tema de cursor"
-#: gtk/gtksettings.c:470
+#: gtk/gtksettings.c:585
msgid "Name of the cursor theme to use, or NULL to use the default theme"
msgstr "Nome do tema de cursor a usar, ou NULL para usar o tema padrão"
-#: gtk/gtksettings.c:477
+#: gtk/gtksettings.c:599
msgid "Cursor theme size"
msgstr "Tamanho do tema de cursor"
-#: gtk/gtksettings.c:478
+#: gtk/gtksettings.c:600
msgid "Size to use for cursors, or 0 to use the default size"
msgstr "Tamanho a ser usado para cursores, ou 0 para usar o tamanho padrão"
-#: gtk/gtksettings.c:486
+#: gtk/gtksettings.c:613
msgid "Alternative button order"
msgstr "Ordem de botões alternativa"
-#: gtk/gtksettings.c:487
+#: gtk/gtksettings.c:614
msgid "Whether buttons in dialogs should use the alternative button order"
msgstr "Se botões nos diálogos devem usar a ordem alternativa"
-#: gtk/gtksettings.c:501
+#: gtk/gtksettings.c:630
msgid "Alternative sort indicator direction"
msgstr "Direção alternativa do indicador de ordenação"
-#: gtk/gtksettings.c:502
+#: gtk/gtksettings.c:631
msgid ""
"Whether the direction of the sort indicators in list and tree views is "
"inverted compared to the default (where down means ascending)"
@@ -5637,143 +5637,143 @@ msgstr ""
"Se a direção do indicador de ordenação em listas ou em visões em árvore está "
"invertida se comparada ao padrão (no qual para baixo significa “crescendo”)"
-#: gtk/gtksettings.c:509
+#: gtk/gtksettings.c:643
msgid "Enable Animations"
msgstr "Habilitar animações"
-#: gtk/gtksettings.c:510
+#: gtk/gtksettings.c:644
msgid "Whether to enable toolkit-wide animations."
msgstr "Habilitar ou não animações em todo as dicas de ferramentas."
-#: gtk/gtksettings.c:527
+#: gtk/gtksettings.c:662
msgid "Error Bell"
msgstr "Campainha de erro"
-#: gtk/gtksettings.c:528
+#: gtk/gtksettings.c:663
msgid "When TRUE, keyboard navigation and other errors will cause a beep"
msgstr ""
"Quando VERDADEIRO, navegação por teclado e outros erros causam aviso sonoro"
-#: gtk/gtksettings.c:543
+#: gtk/gtksettings.c:680
msgid "Default print backend"
msgstr "Backend padrão de impressão"
-#: gtk/gtksettings.c:544
+#: gtk/gtksettings.c:681
msgid "List of the GtkPrintBackend backends to use by default"
msgstr "Lista dos backends GtkPrintBackend para usar por padrão"
-#: gtk/gtksettings.c:564
+#: gtk/gtksettings.c:702
msgid "Default command to run when displaying a print preview"
msgstr ""
"Comando a executar por padrão quando exibir uma visualização de impressão"
-#: gtk/gtksettings.c:565
+#: gtk/gtksettings.c:703
msgid "Command to run when displaying a print preview"
msgstr "Comando a executar quando exibindo uma impressão"
-#: gtk/gtksettings.c:578
+#: gtk/gtksettings.c:716
msgid "Enable Accelerators"
msgstr "Habilitar aceleradores"
-#: gtk/gtksettings.c:579
+#: gtk/gtksettings.c:717
msgid "Whether menu items should have accelerators"
msgstr "Se itens de menu devem ter aceleradores"
-#: gtk/gtksettings.c:597
+#: gtk/gtksettings.c:736
msgid "Default IM module"
msgstr "Módulo ME padrão"
-#: gtk/gtksettings.c:598
+#: gtk/gtksettings.c:737
msgid "Which IM module should be used by default"
msgstr "Qual módulo de método de entrada deve ser usado como padrão"
-#: gtk/gtksettings.c:613
+#: gtk/gtksettings.c:754
msgid "Recent Files Max Age"
msgstr "Tempo máximo de arquivos recentes"
-#: gtk/gtksettings.c:614
+#: gtk/gtksettings.c:755
msgid "Maximum age of recently used files, in days"
msgstr "Tempo máximo dos arquivos usados recentemente, em dias"
-#: gtk/gtksettings.c:622
+#: gtk/gtksettings.c:768
msgid "Fontconfig configuration timestamp"
msgstr "Configuração do carimbo de hora do Fontconfig"
-#: gtk/gtksettings.c:623
+#: gtk/gtksettings.c:769
msgid "Timestamp of current fontconfig configuration"
msgstr "Carimbo de hora da configuração atual do Fontconfig"
-#: gtk/gtksettings.c:642
+#: gtk/gtksettings.c:788
msgid "Sound Theme Name"
msgstr "Nome do tema de som"
-#: gtk/gtksettings.c:643
+#: gtk/gtksettings.c:789
msgid "XDG sound theme name"
msgstr "Nome do tema de som XDG"
#. Translators: this means sounds that are played as feedback to user input
-#: gtk/gtksettings.c:662
+#: gtk/gtksettings.c:808
msgid "Audible Input Feedback"
msgstr "Retorno de entrada audível"
-#: gtk/gtksettings.c:663
+#: gtk/gtksettings.c:809
msgid "Whether to play event sounds as feedback to user input"
msgstr "Tocar eventos de som em resposta às entradas do usuário"
-#: gtk/gtksettings.c:681
+#: gtk/gtksettings.c:827
msgid "Enable Event Sounds"
msgstr "Habilitar sons de eventos"
-#: gtk/gtksettings.c:682
+#: gtk/gtksettings.c:828
msgid "Whether to play any event sounds at all"
msgstr "Se deve tocar qualquer evento de som"
-#: gtk/gtksettings.c:701
+#: gtk/gtksettings.c:849
msgid "Primary button warps slider"
msgstr "Botão primário move deslizador"
-#: gtk/gtksettings.c:702
+#: gtk/gtksettings.c:850
msgid ""
"Whether a primary click on the trough should warp the slider into position"
msgstr ""
"Se o clique primário na calha deveria mover o deslizador para esta posição"
-#: gtk/gtksettings.c:724
+#: gtk/gtksettings.c:875
msgid "Application prefers a dark theme"
msgstr "Aplicativo prefere um tema escuro"
-#: gtk/gtksettings.c:725
+#: gtk/gtksettings.c:876
msgid "Whether the application prefers to have a dark theme."
msgstr "Se o aplicativo tem preferência por tema escuro."
-#: gtk/gtksettings.c:732 gtk/gtksettings.c:756
+#: gtk/gtksettings.c:888 gtk/gtksettings.c:920
msgid "Select on focus"
msgstr "Selecionar ao focar"
-#: gtk/gtksettings.c:733
+#: gtk/gtksettings.c:889
msgid "Whether to select the contents of an entry when it is focused"
msgstr "Selecionar ou não o conteúdo de uma entrada quando ela obtém o foco"
-#: gtk/gtksettings.c:747
+#: gtk/gtksettings.c:905
msgid "Password Hint Timeout"
msgstr "Tempo limite da dica de senha"
-#: gtk/gtksettings.c:748
+#: gtk/gtksettings.c:906
msgid "How long to show the last input character in hidden entries"
msgstr ""
"Por quanto tempo mostrar o último caractere digitado em entradas ocultas"
-#: gtk/gtksettings.c:757
+#: gtk/gtksettings.c:921
msgid "Whether to select the contents of a selectable label when it is focused"
msgstr ""
"Selecionar ou não o conteúdo de um rótulo selecionável quando este obtém o "
"foco"
-#: gtk/gtksettings.c:764
+#: gtk/gtksettings.c:934
msgid "Desktop shell shows app menu"
msgstr "O shell mostra o menu de aplicativo"
-#: gtk/gtksettings.c:765
+#: gtk/gtksettings.c:935
msgid ""
"Set to TRUE if the desktop environment is displaying the app menu, FALSE if "
"the app should display it itself."
@@ -5781,11 +5781,11 @@ msgstr ""
"Verdadeiro se o ambiente desktop deve mostrar o menu do aplicativo, Falso se "
"o aplicativo deve se encarregar de fazer isso."
-#: gtk/gtksettings.c:773
+#: gtk/gtksettings.c:949
msgid "Desktop shell shows the menubar"
msgstr "O shell mostra a barra de menu"
-#: gtk/gtksettings.c:774
+#: gtk/gtksettings.c:950
msgid ""
"Set to TRUE if the desktop environment is displaying the menubar, FALSE if "
"the app should display it itself."
@@ -5793,11 +5793,11 @@ msgstr ""
"Verdadeiro se o ambiente desktop deve mostrar a barra de menu, Falso se o "
"aplicativo deve se encarregar de fazer isso."
-#: gtk/gtksettings.c:782
+#: gtk/gtksettings.c:964
msgid "Desktop environment shows the desktop folder"
msgstr "Ambiente desktop mostra a pasta área de trabalho"
-#: gtk/gtksettings.c:783
+#: gtk/gtksettings.c:965
msgid ""
"Set to TRUE if the desktop environment is displaying the desktop folder, "
"FALSE if not."
@@ -5805,35 +5805,35 @@ msgstr ""
"Verdadeiro se o ambiente desktop deve mostrar a pasta de área do trabalho, "
"Falso se não."
-#: gtk/gtksettings.c:831
+#: gtk/gtksettings.c:1013
msgid "Titlebar double-click action"
msgstr "Ação de clique duplo na barra de título"
-#: gtk/gtksettings.c:832
+#: gtk/gtksettings.c:1014
msgid "The action to take on titlebar double-click"
msgstr "A ação a ser tomada no clique duplo na barra de título"
-#: gtk/gtksettings.c:847
+#: gtk/gtksettings.c:1029
msgid "Titlebar middle-click action"
msgstr "Ação de clique do botão do meio na barra de título"
-#: gtk/gtksettings.c:848
+#: gtk/gtksettings.c:1030
msgid "The action to take on titlebar middle-click"
msgstr "A ação a ser tomada no clique do botão do meio na barra de título"
-#: gtk/gtksettings.c:863
+#: gtk/gtksettings.c:1045
msgid "Titlebar right-click action"
msgstr "Ação de clique do botão direito na barra de título"
-#: gtk/gtksettings.c:864
+#: gtk/gtksettings.c:1046
msgid "The action to take on titlebar right-click"
msgstr "A ação a ser tomada no clique no botão direito na barra de título"
-#: gtk/gtksettings.c:880
+#: gtk/gtksettings.c:1062
msgid "Dialogs use header bar"
msgstr "Diálogos usam barra de cabeçalho"
-#: gtk/gtksettings.c:881
+#: gtk/gtksettings.c:1063
msgid ""
"Whether builtin GTK dialogs should use a header bar instead of an action "
"area."
@@ -5841,11 +5841,11 @@ msgstr ""
"Se diálogos GTK embutidos devem usar uma barra de cabeçalho em vez de uma "
"área de ação."
-#: gtk/gtksettings.c:894
+#: gtk/gtksettings.c:1076
msgid "Enable primary paste"
msgstr "Habilitar colagem do primário"
-#: gtk/gtksettings.c:895
+#: gtk/gtksettings.c:1077
msgid ""
"Whether a middle click on a mouse should paste the “PRIMARY” clipboard "
"content at the cursor location."
@@ -5853,66 +5853,66 @@ msgstr ""
"Se o botão do meio no mouse deveria colar o conteúdo da área de "
"transferência “PRIMÁRIO” na localização do cursor."
-#: gtk/gtksettings.c:908
+#: gtk/gtksettings.c:1092
msgid "Recent Files Enabled"
msgstr "Habilitado arquivos recentes"
-#: gtk/gtksettings.c:909
+#: gtk/gtksettings.c:1093
msgid "Whether GTK remembers recent files"
msgstr "Se o GTK deve lembrar-se dos arquivos recentes"
-#: gtk/gtksettings.c:921
+#: gtk/gtksettings.c:1107
msgid "Long press time"
msgstr "Tempo pressionada longa"
-#: gtk/gtksettings.c:922
+#: gtk/gtksettings.c:1108
msgid ""
"Time for a button/touch press to be considered a long press (in milliseconds)"
msgstr ""
"Tempo para um toque ou pressionada de botão seja considerado uma pressionada "
"longa (em milissegundos)"
-#: gtk/gtksettings.c:936 gtk/gtksettings.c:937
+#: gtk/gtksettings.c:1123 gtk/gtksettings.c:1124
msgid "Whether to show cursor in text"
msgstr "Se deve-se mostrar o cursor no texto"
-#: gtk/gtksettings.c:951 gtk/gtksettings.c:952
+#: gtk/gtksettings.c:1139 gtk/gtksettings.c:1140
msgid "Whether to use overlay scrollbars"
msgstr "Se deve usar barras de rolagem de sobreposição"
-#: gtk/gtkshortcutaction.c:942
+#: gtk/gtkshortcutaction.c:951
msgid "Signal Name"
msgstr "Nome do sinal"
-#: gtk/gtkshortcutaction.c:943
+#: gtk/gtkshortcutaction.c:952
msgid "The name of the signal to emit"
msgstr "O nome do sinal para emitir"
-#: gtk/gtkshortcutaction.c:1183 gtk/gtkshortcutsshortcut.c:717
+#: gtk/gtkshortcutaction.c:1193 gtk/gtkshortcutsshortcut.c:730
msgid "Action Name"
msgstr "Nome da ação"
-#: gtk/gtkshortcutaction.c:1184
+#: gtk/gtkshortcutaction.c:1194
msgid "The name of the action to activate"
msgstr "O nome da ação para ativar"
-#: gtk/gtkshortcut.c:162
+#: gtk/gtkshortcut.c:157
msgid "The action activated by this shortcut"
msgstr "A ação ativada por este atalho"
-#: gtk/gtkshortcut.c:175
+#: gtk/gtkshortcut.c:170
msgid "Arguments"
msgstr "Argumentos"
-#: gtk/gtkshortcut.c:176
+#: gtk/gtkshortcut.c:171
msgid "Arguments passed to activation"
msgstr "Os argumentos passados para ativação"
-#: gtk/gtkshortcut.c:188
+#: gtk/gtkshortcut.c:183
msgid "Trigger"
msgstr "Gatilho"
-#: gtk/gtkshortcut.c:189
+#: gtk/gtkshortcut.c:184
msgid "The trigger for this shortcut"
msgstr "O acionador para este atalho"
@@ -5933,7 +5933,7 @@ msgstr "Um modelo de lista para usar atalhos"
msgid "What scope the shortcuts will be handled in"
msgstr "Em que escopo os atalhos serão tratados"
-#: gtk/gtkshortcutlabel.c:485 gtk/gtkshortcutsshortcut.c:578
+#: gtk/gtkshortcutlabel.c:485 gtk/gtkshortcutsshortcut.c:584
msgid "Accelerator"
msgstr "Acelerador"
@@ -5941,133 +5941,133 @@ msgstr "Acelerador"
msgid "Disabled text"
msgstr "Texto desabilitado"
-#: gtk/gtkshortcutsgroup.c:293
+#: gtk/gtkshortcutsgroup.c:294
msgid "View"
msgstr "Ver"
-#: gtk/gtkshortcutsgroup.c:306 gtk/gtkshortcutsgroup.c:307
-#: gtk/gtkshortcutsshortcut.c:659 gtk/gtkshortcutsshortcut.c:660
+#: gtk/gtkshortcutsgroup.c:307 gtk/gtkshortcutsgroup.c:308
+#: gtk/gtkshortcutsshortcut.c:670 gtk/gtkshortcutsshortcut.c:671
msgid "Accelerator Size Group"
msgstr "Grupo de tamanho de acelerador"
-#: gtk/gtkshortcutsgroup.c:320 gtk/gtkshortcutsgroup.c:321
-#: gtk/gtkshortcutsshortcut.c:673 gtk/gtkshortcutsshortcut.c:674
+#: gtk/gtkshortcutsgroup.c:321 gtk/gtkshortcutsgroup.c:322
+#: gtk/gtkshortcutsshortcut.c:684 gtk/gtkshortcutsshortcut.c:685
msgid "Title Size Group"
msgstr "Grupo de tamanho de título"
-#: gtk/gtkshortcutssection.c:294 gtk/gtkshortcutswindow.c:753
+#: gtk/gtkshortcutssection.c:296 gtk/gtkshortcutswindow.c:752
msgid "Section Name"
msgstr "Nome de seção"
-#: gtk/gtkshortcutssection.c:308 gtk/gtkshortcutswindow.c:768
+#: gtk/gtkshortcutssection.c:312 gtk/gtkshortcutswindow.c:768
msgid "View Name"
msgstr "Nome da visão"
-#: gtk/gtkshortcutssection.c:333
+#: gtk/gtkshortcutssection.c:340
msgid "Maximum Height"
msgstr "Altura máxima"
-#: gtk/gtkshortcutsshortcut.c:579
+#: gtk/gtkshortcutsshortcut.c:585
msgid "The accelerator keys for shortcuts of type “Accelerator”"
msgstr "As teclas aceleradoras para atalhos do tipo “Acelerador”"
-#: gtk/gtkshortcutsshortcut.c:593
+#: gtk/gtkshortcutsshortcut.c:602
msgid "The icon to show for shortcuts of type “Other Gesture”"
msgstr "O ícone a ser mostrado para atalhos do tipo “Outros gestos”"
-#: gtk/gtkshortcutsshortcut.c:604
+#: gtk/gtkshortcutsshortcut.c:613
msgid "Icon Set"
msgstr "Conjunto de ícones"
-#: gtk/gtkshortcutsshortcut.c:605
+#: gtk/gtkshortcutsshortcut.c:614
msgid "Whether an icon has been set"
msgstr "Se um ícone foi definido"
-#: gtk/gtkshortcutsshortcut.c:618
+#: gtk/gtkshortcutsshortcut.c:629
msgid "A short description for the shortcut"
msgstr "Uma breve descrição para o atalho"
-#: gtk/gtkshortcutsshortcut.c:634
+#: gtk/gtkshortcutsshortcut.c:645
msgid "A short description for the gesture"
msgstr "Uma breve descrição para o gesto"
-#: gtk/gtkshortcutsshortcut.c:645
+#: gtk/gtkshortcutsshortcut.c:656
msgid "Subtitle Set"
msgstr "Subtítulo definido"
-#: gtk/gtkshortcutsshortcut.c:646
+#: gtk/gtkshortcutsshortcut.c:657
msgid "Whether a subtitle has been set"
msgstr "Se um subtítulo foi definido"
-#: gtk/gtkshortcutsshortcut.c:688
+#: gtk/gtkshortcutsshortcut.c:700
msgid "Text direction for which this shortcut is active"
msgstr "Direção do texto para a qual este atalho está ativo"
-#: gtk/gtkshortcutsshortcut.c:700
+#: gtk/gtkshortcutsshortcut.c:712
msgid "Shortcut Type"
msgstr "Tipo de atalho"
-#: gtk/gtkshortcutsshortcut.c:701
+#: gtk/gtkshortcutsshortcut.c:713
msgid "The type of shortcut that is represented"
msgstr "O tipo de atalho que é representado"
-#: gtk/gtkshortcutsshortcut.c:718
+#: gtk/gtkshortcutsshortcut.c:731
msgid "The name of the action"
msgstr "O nome da ação"
-#: gtk/gtkshortcuttrigger.c:656 gtk/gtkshortcuttrigger.c:912
+#: gtk/gtkshortcuttrigger.c:662 gtk/gtkshortcuttrigger.c:918
msgid "Key value"
msgstr "Valor de chave"
-#: gtk/gtkshortcuttrigger.c:657 gtk/gtkshortcuttrigger.c:913
+#: gtk/gtkshortcuttrigger.c:663 gtk/gtkshortcuttrigger.c:919
msgid "The key value for the trigger"
msgstr "O valor de chave para o acionamento"
-#: gtk/gtkshortcuttrigger.c:671
+#: gtk/gtkshortcuttrigger.c:677
msgid "Modifiers"
msgstr "Modificadores"
-#: gtk/gtkshortcuttrigger.c:672
+#: gtk/gtkshortcuttrigger.c:678
msgid "The key modifiers for the trigger"
msgstr "Os modificadores de chave para o acionamento"
-#: gtk/gtkshortcuttrigger.c:1158
+#: gtk/gtkshortcuttrigger.c:1164
msgid "First"
msgstr "Primeiro"
-#: gtk/gtkshortcuttrigger.c:1159
+#: gtk/gtkshortcuttrigger.c:1165
msgid "The first trigger to check"
msgstr "O primeiro acionador para verificar"
-#: gtk/gtkshortcuttrigger.c:1171
+#: gtk/gtkshortcuttrigger.c:1178
msgid "Second"
msgstr "Segundo"
-#: gtk/gtkshortcuttrigger.c:1172
+#: gtk/gtkshortcuttrigger.c:1179
msgid "The second trigger to check"
msgstr "O segundo acionador para verificar"
-#: gtk/gtksingleselection.c:391
+#: gtk/gtksingleselection.c:387
msgid "Autoselect"
msgstr "Autosselecionar"
-#: gtk/gtksingleselection.c:392
+#: gtk/gtksingleselection.c:388
msgid "If the selection will always select an item"
msgstr "Se a seleção vai sempre selecionar um item"
-#: gtk/gtksingleselection.c:403
+#: gtk/gtksingleselection.c:399
msgid "Can unselect"
msgstr "Pode desmarcar"
-#: gtk/gtksingleselection.c:404
+#: gtk/gtksingleselection.c:400
msgid "If unselecting the selected item is allowed"
msgstr "Se desmarcação do item selecionado é permitida"
-#: gtk/gtksizegroup.c:226 gtk/gtktreeselection.c:138
+#: gtk/gtksizegroup.c:228 gtk/gtktreeselection.c:134
msgid "Mode"
msgstr "Modo"
-#: gtk/gtksizegroup.c:227
+#: gtk/gtksizegroup.c:229
msgid ""
"The directions in which the size group affects the requested sizes of its "
"component widgets"
@@ -6075,52 +6075,52 @@ msgstr ""
"As direções em que o grupo de tamanho afeta os tamanhos pedidos pelos seus "
"componentes"
-#: gtk/gtkslicelistmodel.c:265
+#: gtk/gtkslicelistmodel.c:261
msgid "Child model to take slice from"
msgstr "Modelo filho de onde deve tirar uma fatia"
-#: gtk/gtkslicelistmodel.c:276
+#: gtk/gtkslicelistmodel.c:272
msgid "Offset"
msgstr "Tamanho"
-#: gtk/gtkslicelistmodel.c:277
+#: gtk/gtkslicelistmodel.c:273
msgid "Offset of slice"
msgstr "Tamanho da fatia"
-#: gtk/gtkslicelistmodel.c:289
+#: gtk/gtkslicelistmodel.c:285
msgid "Maximum size of slice"
msgstr "Tamanho máximo da fatia"
-#: gtk/gtksortlistmodel.c:785
+#: gtk/gtksortlistmodel.c:782
msgid "Sort items incrementally"
msgstr "Ordena itens de forma incremental"
-#: gtk/gtksortlistmodel.c:797
+#: gtk/gtksortlistmodel.c:794
msgid "The model being sorted"
msgstr "O modelo sendo ordenado"
-#: gtk/gtksortlistmodel.c:809
+#: gtk/gtksortlistmodel.c:806
msgid "Estimate of unsorted items remaining"
msgstr "Estimativa de itens não ordenados restantes"
-#: gtk/gtksortlistmodel.c:821
+#: gtk/gtksortlistmodel.c:818
msgid "The sorter for this model"
msgstr "O ordenador para este modelo"
-#: gtk/gtkspinbutton.c:378
+#: gtk/gtkspinbutton.c:387
msgid "Climb Rate"
msgstr "Taxa de aumento"
-#: gtk/gtkspinbutton.c:379
+#: gtk/gtkspinbutton.c:388
msgid "The acceleration rate when you hold down a button or key"
msgstr ""
"A taxa de aceleração quando você mantém pressionado um botão ou uma tecla"
-#: gtk/gtkspinbutton.c:392
+#: gtk/gtkspinbutton.c:412
msgid "Snap to Ticks"
msgstr "Ajustar para incrementos"
-#: gtk/gtkspinbutton.c:393
+#: gtk/gtkspinbutton.c:413
msgid ""
"Whether erroneous values are automatically changed to a spin button’s "
"nearest step increment"
@@ -6128,75 +6128,75 @@ msgstr ""
"Se valores errôneos são automaticamente alterados para o incremento mais "
"próximo do botão de opção"
-#: gtk/gtkspinbutton.c:399
+#: gtk/gtkspinbutton.c:424
msgid "Numeric"
msgstr "Numérico"
-#: gtk/gtkspinbutton.c:400
+#: gtk/gtkspinbutton.c:425
msgid "Whether non-numeric characters should be ignored"
msgstr "Se caracteres não numéricos devem ser ignorados"
-#: gtk/gtkspinbutton.c:406
+#: gtk/gtkspinbutton.c:436
msgid "Wrap"
msgstr "Dar a volta"
-#: gtk/gtkspinbutton.c:407
+#: gtk/gtkspinbutton.c:437
msgid "Whether a spin button should wrap upon reaching its limits"
msgstr ""
"Se um botão de seletor numérico deve dar a volta ao atingir seus limites"
-#: gtk/gtkspinbutton.c:413
+#: gtk/gtkspinbutton.c:449
msgid "Update Policy"
msgstr "Política de atualização"
-#: gtk/gtkspinbutton.c:414
+#: gtk/gtkspinbutton.c:450
msgid ""
"Whether the spin button should update always, or only when the value is legal"
msgstr ""
"Se o botão do seletor numérico deve se atualizar sempre ou apenas quando o "
"valor é legal"
-#: gtk/gtkspinbutton.c:422
+#: gtk/gtkspinbutton.c:463
msgid "Reads the current value, or sets a new value"
msgstr "Lê o valor atual ou define um novo valor"
-#: gtk/gtkspinner.c:238
+#: gtk/gtkspinner.c:239
msgid "Spinning"
msgstr "Girando"
-#: gtk/gtkspinner.c:239
+#: gtk/gtkspinner.c:240
msgid "Whether the spinner is spinning"
msgstr "Se o spinner está girando"
-#: gtk/gtkstack.c:405
+#: gtk/gtkstack.c:417
msgid "The child of the page"
msgstr "O filho da página"
-#: gtk/gtkstack.c:412
+#: gtk/gtkstack.c:429
msgid "The name of the child page"
msgstr "O nome da página filha"
-#: gtk/gtkstack.c:419
+#: gtk/gtkstack.c:441
msgid "The title of the child page"
msgstr "O título da página filha"
-#: gtk/gtkstack.c:426
+#: gtk/gtkstack.c:453
msgid "The icon name of the child page"
msgstr "O nome do ícone da página filha"
-#: gtk/gtkstack.c:440
+#: gtk/gtkstack.c:468
msgid "Needs Attention"
msgstr "Precisa de atenção"
-#: gtk/gtkstack.c:441
+#: gtk/gtkstack.c:469
msgid "Whether this page needs attention"
msgstr "Se esta página precisa de atenção"
-#: gtk/gtkstack.c:448
+#: gtk/gtkstack.c:481
msgid "Whether this page is visible"
msgstr "Se esta página é visível"
-#: gtk/gtkstack.c:455
+#: gtk/gtkstack.c:493
msgid ""
"If set, an underline in the title indicates the next character should be "
"used for the mnemonic accelerator key"
@@ -6204,51 +6204,51 @@ msgstr ""
"Se definido, um sublinhado no título indica que o caractere seguinte deve "
"ser usado como a tecla de atalho mnemônico"
-#: gtk/gtkstack.c:779
+#: gtk/gtkstack.c:820
msgid "Horizontally homogeneous"
msgstr "Horizontalmente homogêneo"
-#: gtk/gtkstack.c:779
+#: gtk/gtkstack.c:820
msgid "Horizontally homogeneous sizing"
msgstr "Dimensionamento horizontalmente homogêneo"
-#: gtk/gtkstack.c:789
+#: gtk/gtkstack.c:830
msgid "Vertically homogeneous"
msgstr "Verticalmente homogêneo"
-#: gtk/gtkstack.c:789
+#: gtk/gtkstack.c:830
msgid "Vertically homogeneous sizing"
msgstr "Dimensionamento verticalmente homogêneo"
-#: gtk/gtkstack.c:793
+#: gtk/gtkstack.c:840
msgid "Visible child"
msgstr "Filho visível"
-#: gtk/gtkstack.c:793
+#: gtk/gtkstack.c:840
msgid "The widget currently visible in the stack"
msgstr "O componente atualmente visível na pilha"
-#: gtk/gtkstack.c:797
+#: gtk/gtkstack.c:850
msgid "Name of visible child"
msgstr "Nome do filho visível"
-#: gtk/gtkstack.c:797
+#: gtk/gtkstack.c:850
msgid "The name of the widget currently visible in the stack"
msgstr "O nome do componente atualmente visível na pilha"
-#: gtk/gtkstack.c:809
+#: gtk/gtkstack.c:880
msgid "Transition running"
msgstr "Execução de transição"
-#: gtk/gtkstack.c:809
+#: gtk/gtkstack.c:880
msgid "Whether or not the transition is currently running"
msgstr "Se a transição está em execução no momento"
-#: gtk/gtkstack.c:813
+#: gtk/gtkstack.c:890
msgid "Interpolate size"
msgstr "Tamanho da interpolação"
-#: gtk/gtkstack.c:813
+#: gtk/gtkstack.c:890
msgid ""
"Whether or not the size should smoothly change when changing between "
"differently sized children"
@@ -6256,45 +6256,45 @@ msgstr ""
"Se o tamanho deve ou não ser suavemente alterado ao alterar entre filhos de "
"tamanhos diferente"
-#: gtk/gtkstack.c:818
+#: gtk/gtkstack.c:900
msgid "A selection model with the stacks pages"
msgstr "Um modelo de seleção com as páginas de pilhas"
-#: gtk/gtkstacksidebar.c:367 gtk/gtkstackswitcher.c:511
-#: gtk/gtkstackswitcher.c:512
+#: gtk/gtkstacksidebar.c:369 gtk/gtkstackswitcher.c:518
+#: gtk/gtkstackswitcher.c:519
msgid "Stack"
msgstr "Pilha"
-#: gtk/gtkstacksidebar.c:368
+#: gtk/gtkstacksidebar.c:370
msgid "Associated stack for this GtkStackSidebar"
msgstr "Pilha associada para este GtkStackSidebar"
-#: gtk/gtkstringfilter.c:263 gtk/gtkstringsorter.c:307
+#: gtk/gtkstringfilter.c:268 gtk/gtkstringsorter.c:306
msgid "Ignore case"
msgstr "Ignorar diferença maiúsculo/minúsculo"
-#: gtk/gtkstringfilter.c:264 gtk/gtkstringsorter.c:308
+#: gtk/gtkstringfilter.c:269 gtk/gtkstringsorter.c:307
msgid "If matching is case sensitive"
msgstr "Se a correspondência deve diferenciar minúsculo de minúsculo"
-#: gtk/gtkstringfilter.c:275
+#: gtk/gtkstringfilter.c:280
msgid "Match mode"
msgstr "Modo de correspondência"
-#: gtk/gtkstringfilter.c:276
+#: gtk/gtkstringfilter.c:281
msgid "If exact matches are necessary or if substrings are allowed"
msgstr ""
"Se correspondências exatas são necessárias ou se substrings são permitidas"
-#: gtk/gtkstringfilter.c:288
+#: gtk/gtkstringfilter.c:293
msgid "Search"
msgstr "Pesquisa"
-#: gtk/gtkstringfilter.c:289
+#: gtk/gtkstringfilter.c:294
msgid "The search term"
msgstr "O termo de pesquisa"
-#: gtk/gtkstylecontext.c:145
+#: gtk/gtkstylecontext.c:140
msgid "The associated GdkDisplay"
msgstr "O GdkDisplay associado"
@@ -6306,31 +6306,31 @@ msgstr "Nome da propriedade"
msgid "The name of the property"
msgstr "O nome da propriedade"
-#: gtk/gtkswitch.c:529
+#: gtk/gtkswitch.c:523
msgid "Whether the switch is on or off"
msgstr "Se a alternação está ativa ou inativa"
-#: gtk/gtkswitch.c:542
+#: gtk/gtkswitch.c:537
msgid "The backend state"
msgstr "O estado do backend"
-#: gtk/gtktextbuffer.c:453
+#: gtk/gtktextbuffer.c:452
msgid "Tag Table"
msgstr "Tabela de marcações"
-#: gtk/gtktextbuffer.c:454
+#: gtk/gtktextbuffer.c:453
msgid "Text Tag Table"
msgstr "Tabela de marcações de texto"
-#: gtk/gtktextbuffer.c:469
+#: gtk/gtktextbuffer.c:470
msgid "Current text of the buffer"
msgstr "Texto atual do buffer"
-#: gtk/gtktextbuffer.c:480
+#: gtk/gtktextbuffer.c:481
msgid "Has selection"
msgstr "Tem seleção"
-#: gtk/gtktextbuffer.c:481
+#: gtk/gtktextbuffer.c:482
msgid "Whether the buffer has some text currently selected"
msgstr "Se um buffer tem atualmente algum texto selecionado"
@@ -6342,92 +6342,96 @@ msgstr "Pode desfazer"
msgid "If the buffer can have the last action undone"
msgstr "Se o buffer pode ter a última ação desfeita"
-#: gtk/gtktextbuffer.c:506
+#: gtk/gtktextbuffer.c:505
msgid "Can Redo"
msgstr "Pode refazer"
-#: gtk/gtktextbuffer.c:507
+#: gtk/gtktextbuffer.c:506
msgid "If the buffer can have the last undone action reapplied"
msgstr "Se o buffer pode ter a última ação desfeita reaplicada"
-#: gtk/gtktextbuffer.c:533
+#: gtk/gtktextbuffer.c:532
msgid "Cursor position"
msgstr "Posição do cursor"
-#: gtk/gtktextbuffer.c:534
+#: gtk/gtktextbuffer.c:533
msgid ""
"The position of the insert mark (as offset from the beginning of the buffer)"
msgstr ""
"A posição da marca de inserção (na forma de deslocamento em relação ao "
"início do buffer)"
-#: gtk/gtktext.c:746
+#: gtk/gtktext.c:759
msgid "Text buffer object which actually stores self text"
msgstr "Objeto de buffer de texto que efetivamente armazena o texto de self"
-#: gtk/gtktext.c:753
+#: gtk/gtktext.c:773
msgid "Maximum number of characters for this self. Zero if no maximum"
msgstr "Número máximo de caracteres para este self. Zero se não houver máximo"
-#: gtk/gtktext.c:761
+#: gtk/gtktext.c:786
msgid "The character to use when masking self contents (in “password mode”)"
msgstr "O caractere para usar ao mascarar o conteúdo de self (em “modo senha”)"
-#: gtk/gtktext.c:775
-msgid "Number of pixels of the self scrolled off the screen to the left"
-msgstr "Número de pixels de self rolados para fora da tela à esquerda"
+#: gtk/gtktext.c:810
+#| msgid "Number of pixels of the entry scrolled off the screen to the left"
+msgid "Number of pixels of the text scrolled off the screen to the left"
+msgstr "Número de pixels do texto rolados para fora da tela à esquerda"
-#: gtk/gtktext.c:825
-msgid "Show text in the self when it’s empty and unfocused"
-msgstr "Mostra texto no self quando ele está vazio e sem foco"
+#: gtk/gtktext.c:860
+#| msgid "Show text in the entry when it’s empty and unfocused"
+msgid "Show text in the GtkText when it’s empty and unfocused"
+msgstr "Mostrar texto no GtkText quando ele está vazio e sem foco"
-#: gtk/gtktext.c:893
-msgid "A list of style attributes to apply to the text of the self"
-msgstr "Uma lista de atributos de estilo para aplicar ao texto do self"
+#: gtk/gtktext.c:929
+#| msgid "A list of style attributes to apply to the text of the entry"
+msgid "A list of style attributes to apply to the text of the GtkText"
+msgstr "Uma lista de atributos de estilo para aplicar ao texto do GtkText"
-#: gtk/gtktext.c:905
-msgid "A list of tabstop locations to apply to the text of the self"
+#: gtk/gtktext.c:941
+#| msgid "A list of tabstop locations to apply to the text of the entry"
+msgid "A list of tabstop locations to apply to the text of the GtkText"
msgstr ""
"Uma lista de localizações de paradas de tabulação para aplicar ao texto do "
-"self"
+"GtkText"
-#: gtk/gtktext.c:925
+#: gtk/gtktext.c:976
msgid "Propagate text width"
msgstr "Propagar largura de texto"
-#: gtk/gtktext.c:926
+#: gtk/gtktext.c:977
msgid "Whether the entry should grow and shrink with the content"
msgstr "Se a entrada deve aumentar e diminuir com o conteúdo"
-#: gtk/gtktextmark.c:136
+#: gtk/gtktextmark.c:138
msgid "Mark name"
msgstr "Nome do marcador"
-#: gtk/gtktextmark.c:150
+#: gtk/gtktextmark.c:154
msgid "Left gravity"
msgstr "Gravidade à esquerda"
-#: gtk/gtktextmark.c:151
+#: gtk/gtktextmark.c:155
msgid "Whether the mark has left gravity"
msgstr "Se o marcador tem gravidade à esquerda"
-#: gtk/gtktexttag.c:205
+#: gtk/gtktexttag.c:213
msgid "Tag name"
msgstr "Nome da marca"
-#: gtk/gtktexttag.c:206
+#: gtk/gtktexttag.c:214
msgid "Name used to refer to the text tag. NULL for anonymous tags"
msgstr "Nome usado para se referir à marca de texto. NULL para marca anônimas"
-#: gtk/gtktexttag.c:228
+#: gtk/gtktexttag.c:241
msgid "Background RGBA"
msgstr "RGBA de fundo"
-#: gtk/gtktexttag.c:236
+#: gtk/gtktexttag.c:255
msgid "Background full height"
msgstr "Altura completa do plano de fundo"
-#: gtk/gtktexttag.c:237
+#: gtk/gtktexttag.c:256
msgid ""
"Whether the background color fills the entire line height or only the height "
"of the tagged characters"
@@ -6435,28 +6439,28 @@ msgstr ""
"Se a cor de fundo deverá ou não cobrir toda a altura da linha ou apenas a "
"altura dos caracteres marcados"
-#: gtk/gtktexttag.c:257
+#: gtk/gtktexttag.c:281
msgid "Foreground RGBA"
msgstr "RGBA de primeiro plano"
-#: gtk/gtktexttag.c:265
+#: gtk/gtktexttag.c:294
msgid "Text direction"
msgstr "Direção do texto"
-#: gtk/gtktexttag.c:266
+#: gtk/gtktexttag.c:295
msgid "Text direction, e.g. right-to-left or left-to-right"
msgstr ""
"Direção do texto, por ex., direita-para-esquerda ou esquerda-para-direita"
-#: gtk/gtktexttag.c:315
+#: gtk/gtktexttag.c:364
msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC"
msgstr "Estilo da fonte como um PangoStyle, ex. PANGO_STYLE_ITALIC"
-#: gtk/gtktexttag.c:324
+#: gtk/gtktexttag.c:378
msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS"
msgstr "Variante da fonte como um PangoVariant, ex. PANGO_VARIANT_SMALL_CAPS"
-#: gtk/gtktexttag.c:333
+#: gtk/gtktexttag.c:391
msgid ""
"Font weight as an integer, see predefined values in PangoWeight; for "
"example, PANGO_WEIGHT_BOLD"
@@ -6464,15 +6468,15 @@ msgstr ""
"Peso da fonte como um inteiro, veja os valores pré-definidos em PangoWeight; "
"por exemplo, PANGO_WEIGHT_BOLD"
-#: gtk/gtktexttag.c:344
+#: gtk/gtktexttag.c:406
msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED"
msgstr "Comprimento da fonte como um PangoStretch, ex. PANGO_STRETCH_CONDENSED"
-#: gtk/gtktexttag.c:353
+#: gtk/gtktexttag.c:420
msgid "Font size in Pango units"
msgstr "Tamanho da fonte em unidades Pango"
-#: gtk/gtktexttag.c:363
+#: gtk/gtktexttag.c:438
msgid ""
"Font size as a scale factor relative to the default font size. This properly "
"adapts to theme changes etc. so is recommended. Pango predefines some scales "
@@ -6482,11 +6486,11 @@ msgstr ""
"fonte. Esta propriedade se adapta a mudanças de temas, etc., então é "
"recomendada. O Pango predefine algumas escalas como PANGO_SCALE_X_LARGE"
-#: gtk/gtktexttag.c:383 gtk/gtktextview.c:878
+#: gtk/gtktexttag.c:468 gtk/gtktextview.c:915
msgid "Left, right, or center justification"
msgstr "Alinhamento à esquerda, direita ou centrado"
-#: gtk/gtktexttag.c:402
+#: gtk/gtktexttag.c:488
msgid ""
"The language this text is in, as an ISO code. Pango can use this as a hint "
"when rendering the text. If not set, an appropriate default will be used."
@@ -6495,31 +6499,31 @@ msgstr ""
"isso como uma dica quando for renderizar o texto. Se não definido, um valor "
"padrão apropriado será utilizado."
-#: gtk/gtktexttag.c:409
+#: gtk/gtktexttag.c:500
msgid "Left margin"
msgstr "Margem esquerda"
-#: gtk/gtktexttag.c:410 gtk/gtktextview.c:897
+#: gtk/gtktexttag.c:501 gtk/gtktextview.c:935
msgid "Width of the left margin in pixels"
msgstr "Largura da margem esquerda em pixels"
-#: gtk/gtktexttag.c:419
+#: gtk/gtktexttag.c:515
msgid "Right margin"
msgstr "Margem direita"
-#: gtk/gtktexttag.c:420 gtk/gtktextview.c:915
+#: gtk/gtktexttag.c:516 gtk/gtktextview.c:954
msgid "Width of the right margin in pixels"
msgstr "Largura da margem direita em pixels"
-#: gtk/gtktexttag.c:430 gtk/gtktextview.c:960
+#: gtk/gtktexttag.c:530 gtk/gtktextview.c:1004
msgid "Indent"
msgstr "Recuo"
-#: gtk/gtktexttag.c:431 gtk/gtktextview.c:961
+#: gtk/gtktexttag.c:531 gtk/gtktextview.c:1005
msgid "Amount to indent the paragraph, in pixels"
msgstr "Tamanho do recuo do parágrafo, em pixels"
-#: gtk/gtktexttag.c:442
+#: gtk/gtktexttag.c:548
msgid ""
"Offset of text above the baseline (below the baseline if rise is negative) "
"in Pango units"
@@ -6527,393 +6531,393 @@ msgstr ""
"Deslocamento do texto acima da linha de base (ou abaixo da linha de base, se "
"a elevação for negativa) em unidades Pango"
-#: gtk/gtktexttag.c:451
+#: gtk/gtktexttag.c:562
msgid "Pixels above lines"
msgstr "Pixels acima das linhas"
-#: gtk/gtktexttag.c:452 gtk/gtktextview.c:837
+#: gtk/gtktexttag.c:563 gtk/gtktextview.c:849
msgid "Pixels of blank space above paragraphs"
msgstr "Pixels de espaço em branco acima dos parágrafos"
-#: gtk/gtktexttag.c:461
+#: gtk/gtktexttag.c:577
msgid "Pixels below lines"
msgstr "Pixels abaixo das linhas"
-#: gtk/gtktexttag.c:462 gtk/gtktextview.c:845
+#: gtk/gtktexttag.c:578 gtk/gtktextview.c:862
msgid "Pixels of blank space below paragraphs"
msgstr "Pixels de espaço em branco abaixo dos parágrafos"
-#: gtk/gtktexttag.c:471
+#: gtk/gtktexttag.c:592
msgid "Pixels inside wrap"
msgstr "Pixels dentro da quebra"
-#: gtk/gtktexttag.c:472 gtk/gtktextview.c:853
+#: gtk/gtktexttag.c:593 gtk/gtktextview.c:875
msgid "Pixels of blank space between wrapped lines in a paragraph"
msgstr "Pixels de espaço em branco entre linhas quebradas num parágrafo"
-#: gtk/gtktexttag.c:508
+#: gtk/gtktexttag.c:640
msgid "Underline RGBA"
msgstr "Sublinhado RGBA"
-#: gtk/gtktexttag.c:509
+#: gtk/gtktexttag.c:641
msgid "Color of underline for this text"
msgstr "Cor do sublinhado para este texto"
-#: gtk/gtktexttag.c:516
+#: gtk/gtktexttag.c:653
msgid "Overline"
msgstr "Sobrelinha"
-#: gtk/gtktexttag.c:517
+#: gtk/gtktexttag.c:654
msgid "Style of overline for this text"
msgstr "Estilo de sobrelinha para este texto"
-#: gtk/gtktexttag.c:525
+#: gtk/gtktexttag.c:669
msgid "Overline RGBA"
msgstr "Sobrelinha RGBA"
-#: gtk/gtktexttag.c:526
+#: gtk/gtktexttag.c:670
msgid "Color of overline for this text"
msgstr "Cor de sobrelinha para este texto"
-#: gtk/gtktexttag.c:539
+#: gtk/gtktexttag.c:684
msgid "Strikethrough RGBA"
msgstr "Riscado RGBA"
-#: gtk/gtktexttag.c:540
+#: gtk/gtktexttag.c:685
msgid "Color of strikethrough for this text"
msgstr "Cor do riscado para este texto"
-#: gtk/gtktexttag.c:548 gtk/gtktextview.c:869
+#: gtk/gtktexttag.c:699 gtk/gtktextview.c:901
msgid ""
"Whether to wrap lines never, at word boundaries, or at character boundaries"
msgstr ""
"Quebrar linhas: nunca, nos limites de palavras, ou nos limites dos caracteres"
-#: gtk/gtktexttag.c:558 gtk/gtktextview.c:969
+#: gtk/gtktexttag.c:713 gtk/gtktextview.c:1018
msgid "Custom tabs for this text"
msgstr "Tabulações personalizadas para este texto"
-#: gtk/gtktexttag.c:574
+#: gtk/gtktexttag.c:729
msgid "Invisible"
msgstr "Invisível"
-#: gtk/gtktexttag.c:575
+#: gtk/gtktexttag.c:730
msgid "Whether this text is hidden."
msgstr "Se este texto está oculto."
-#: gtk/gtktexttag.c:587
+#: gtk/gtktexttag.c:742
msgid "Paragraph background color name"
msgstr "Nome da cor de fundo do parágrafo"
-#: gtk/gtktexttag.c:588
+#: gtk/gtktexttag.c:743
msgid "Paragraph background color as a string"
msgstr "Cor de fundo do parágrafo como uma string"
-#: gtk/gtktexttag.c:600
+#: gtk/gtktexttag.c:755
msgid "Paragraph background RGBA"
msgstr "RGBA de fundo do parágrafo"
-#: gtk/gtktexttag.c:601
+#: gtk/gtktexttag.c:756
msgid "Paragraph background RGBA as a GdkRGBA"
msgstr "RGBA de fundo do parágrafo como um GdkRGBA"
-#: gtk/gtktexttag.c:617
+#: gtk/gtktexttag.c:772
msgid "Whether font fallback is enabled."
msgstr "Se fonte alternativa está habilitada."
-#: gtk/gtktexttag.c:629
+#: gtk/gtktexttag.c:784
msgid "Letter Spacing"
msgstr "Espaçamento entre letras"
-#: gtk/gtktexttag.c:630
+#: gtk/gtktexttag.c:785
msgid "Extra spacing between graphemes"
msgstr "Quebrar linhas entre palavras ou grafemas"
-#: gtk/gtktexttag.c:642
+#: gtk/gtktexttag.c:797
msgid "Font Features"
msgstr "Recursos da fonte"
-#: gtk/gtktexttag.c:643
+#: gtk/gtktexttag.c:798
msgid "OpenType Font Features to use"
msgstr "Recursos de fonte OpenType para usar"
-#: gtk/gtktexttag.c:650
+#: gtk/gtktexttag.c:810
msgid "Allow Breaks"
msgstr "Permitir quebras"
-#: gtk/gtktexttag.c:651
+#: gtk/gtktexttag.c:811
msgid "Whether breaks are allowed."
msgstr "Se quebras são seguidas."
-#: gtk/gtktexttag.c:658
+#: gtk/gtktexttag.c:823
msgid "Show spaces"
msgstr "Mostrar espaços"
-#: gtk/gtktexttag.c:659
+#: gtk/gtktexttag.c:824
msgid "How to render invisible characters."
msgstr "Como renderizar caracteres invisíveis."
-#: gtk/gtktexttag.c:667
+#: gtk/gtktexttag.c:837
msgid "Insert hyphens"
msgstr "Inserir hífenes"
-#: gtk/gtktexttag.c:668
+#: gtk/gtktexttag.c:838
msgid "Whether to insert hyphens at breaks."
msgstr "Se deve inserir hífenes nas quebras."
-#: gtk/gtktexttag.c:684
+#: gtk/gtktexttag.c:854
msgid "Margin Accumulates"
msgstr "Margem acumula"
-#: gtk/gtktexttag.c:685
+#: gtk/gtktexttag.c:855
msgid "Whether left and right margins accumulate."
msgstr "Se margens esquerda e direita acumulam."
-#: gtk/gtktexttag.c:698
+#: gtk/gtktexttag.c:868
msgid "Background full height set"
msgstr "Altura do plano de fundo definida"
-#: gtk/gtktexttag.c:699
+#: gtk/gtktexttag.c:869
msgid "Whether this tag affects background height"
msgstr "Se esta marca afeta a altura do plano de fundo"
-#: gtk/gtktexttag.c:738
+#: gtk/gtktexttag.c:908
msgid "Justification set"
msgstr "Justificação definida"
-#: gtk/gtktexttag.c:739
+#: gtk/gtktexttag.c:909
msgid "Whether this tag affects paragraph justification"
msgstr "Se esta marca afeta a justificação do parágrafo"
-#: gtk/gtktexttag.c:746
+#: gtk/gtktexttag.c:916
msgid "Left margin set"
msgstr "Margem esquerda definida"
-#: gtk/gtktexttag.c:747
+#: gtk/gtktexttag.c:917
msgid "Whether this tag affects the left margin"
msgstr "Se esta marca afeta a margem esquerda"
-#: gtk/gtktexttag.c:750
+#: gtk/gtktexttag.c:920
msgid "Indent set"
msgstr "Recuo definido"
-#: gtk/gtktexttag.c:751
+#: gtk/gtktexttag.c:921
msgid "Whether this tag affects indentation"
msgstr "Se esta marca afeta o recuo"
-#: gtk/gtktexttag.c:758
+#: gtk/gtktexttag.c:928
msgid "Pixels above lines set"
msgstr "Pixels acima da linha definido"
-#: gtk/gtktexttag.c:759 gtk/gtktexttag.c:763
+#: gtk/gtktexttag.c:929 gtk/gtktexttag.c:933
msgid "Whether this tag affects the number of pixels above lines"
msgstr "Se esta marca afeta o número de pixels acima das linhas"
-#: gtk/gtktexttag.c:762
+#: gtk/gtktexttag.c:932
msgid "Pixels below lines set"
msgstr "Pixels abaixo da linha definido"
-#: gtk/gtktexttag.c:766
+#: gtk/gtktexttag.c:936
msgid "Pixels inside wrap set"
msgstr "Pixels dentro da quebra definido"
-#: gtk/gtktexttag.c:767
+#: gtk/gtktexttag.c:937
msgid "Whether this tag affects the number of pixels between wrapped lines"
msgstr "Se esta marca afeta o número de pixels entre linhas quebradas"
-#: gtk/gtktexttag.c:774
+#: gtk/gtktexttag.c:944
msgid "Right margin set"
msgstr "Margem direita definida"
-#: gtk/gtktexttag.c:775
+#: gtk/gtktexttag.c:945
msgid "Whether this tag affects the right margin"
msgstr "Se esta marca afeta a margem direita"
-#: gtk/gtktexttag.c:787
+#: gtk/gtktexttag.c:957
msgid "Underline RGBA set"
msgstr "Sublinhado RGBA definido"
-#: gtk/gtktexttag.c:788
+#: gtk/gtktexttag.c:958
msgid "Whether this tag affects underlining color"
msgstr "Se esta marca afeta a cor de sublinhado"
-#: gtk/gtktexttag.c:791
+#: gtk/gtktexttag.c:961
msgid "Overline set"
msgstr "Sobrelinha definida"
-#: gtk/gtktexttag.c:792
+#: gtk/gtktexttag.c:962
msgid "Whether this tag affects overlining"
msgstr "Se esta marca afeta o sobrelinhado"
-#: gtk/gtktexttag.c:795
+#: gtk/gtktexttag.c:965
msgid "Overline RGBA set"
msgstr "Sobrelinha RGBA definido"
-#: gtk/gtktexttag.c:796
+#: gtk/gtktexttag.c:966
msgid "Whether this tag affects overlining color"
msgstr "Se esta marca afeta a cor da sobrelinha"
-#: gtk/gtktexttag.c:804
+#: gtk/gtktexttag.c:974
msgid "Strikethrough RGBA set"
msgstr "Riscado RGBA definido"
-#: gtk/gtktexttag.c:805
+#: gtk/gtktexttag.c:975
msgid "Whether this tag affects strikethrough color"
msgstr "Se esta marca afeta a cor do riscado"
-#: gtk/gtktexttag.c:808
+#: gtk/gtktexttag.c:978
msgid "Wrap mode set"
msgstr "Modo de quebra definido"
-#: gtk/gtktexttag.c:809
+#: gtk/gtktexttag.c:979
msgid "Whether this tag affects line wrap mode"
msgstr "Se esta marca afeta o modo de quebra de linha"
-#: gtk/gtktexttag.c:812
+#: gtk/gtktexttag.c:982
msgid "Tabs set"
msgstr "Tabulações definidas"
-#: gtk/gtktexttag.c:813
+#: gtk/gtktexttag.c:983
msgid "Whether this tag affects tabs"
msgstr "Se esta marca afeta tabulações"
-#: gtk/gtktexttag.c:816
+#: gtk/gtktexttag.c:986
msgid "Invisible set"
msgstr "Invisibilidade definido"
-#: gtk/gtktexttag.c:817
+#: gtk/gtktexttag.c:987
msgid "Whether this tag affects text visibility"
msgstr "Se esta marca afeta a visibilidade do texto"
-#: gtk/gtktexttag.c:820
+#: gtk/gtktexttag.c:990
msgid "Paragraph background set"
msgstr "Plano de fundo do parágrafo definido"
-#: gtk/gtktexttag.c:821
+#: gtk/gtktexttag.c:991
msgid "Whether this tag affects the paragraph background color"
msgstr "Se esta marca afeta a cor do plano de fundo do parágrafo"
-#: gtk/gtktexttag.c:824
+#: gtk/gtktexttag.c:994
msgid "Fallback set"
msgstr "Alternativa definida"
-#: gtk/gtktexttag.c:825
+#: gtk/gtktexttag.c:995
msgid "Whether this tag affects font fallback"
msgstr "Se esta marca afeta a fonte alternativa"
-#: gtk/gtktexttag.c:828
+#: gtk/gtktexttag.c:998
msgid "Letter spacing set"
msgstr "Espaçamento de entre letras definido"
-#: gtk/gtktexttag.c:829
+#: gtk/gtktexttag.c:999
msgid "Whether this tag affects letter spacing"
msgstr "Se esta marca afeta o espaçamento das letras"
-#: gtk/gtktexttag.c:832
+#: gtk/gtktexttag.c:1002
msgid "Font features set"
msgstr "Recursos da fonte definido"
-#: gtk/gtktexttag.c:833
+#: gtk/gtktexttag.c:1003
msgid "Whether this tag affects font features"
msgstr "Se esta marca afeta os recursos da fonte"
-#: gtk/gtktexttag.c:836
+#: gtk/gtktexttag.c:1006
msgid "Allow breaks set"
msgstr "Permitir quebras definido"
-#: gtk/gtktexttag.c:837
+#: gtk/gtktexttag.c:1007
msgid "Whether this tag affects line breaks"
msgstr "Se esta marca afeta quebras de linha"
-#: gtk/gtktexttag.c:840
+#: gtk/gtktexttag.c:1010
msgid "Show spaces set"
msgstr "Mostrar espaços definido"
-#: gtk/gtktexttag.c:841
+#: gtk/gtktexttag.c:1011
msgid "Whether this tag affects rendering of invisible characters"
msgstr "Se esta marca afeta a renderização de caracteres invisíveis"
-#: gtk/gtktexttag.c:844
+#: gtk/gtktexttag.c:1014
msgid "Insert hyphens set"
msgstr "Inserir hífenes definido"
-#: gtk/gtktexttag.c:845
+#: gtk/gtktexttag.c:1015
msgid "Whether this tag affects insertion of hyphens"
msgstr "Se esta marca afeta a inserção de hífenes"
-#: gtk/gtktextview.c:836
+#: gtk/gtktextview.c:848
msgid "Pixels Above Lines"
msgstr "Pixels acima das linhas"
-#: gtk/gtktextview.c:844
+#: gtk/gtktextview.c:861
msgid "Pixels Below Lines"
msgstr "Pixels abaixo das linhas"
-#: gtk/gtktextview.c:852
+#: gtk/gtktextview.c:874
msgid "Pixels Inside Wrap"
msgstr "Pixels dentro da quebra"
-#: gtk/gtktextview.c:868
+#: gtk/gtktextview.c:900
msgid "Wrap Mode"
msgstr "Modo de quebra"
-#: gtk/gtktextview.c:896
+#: gtk/gtktextview.c:934
msgid "Left Margin"
msgstr "Margem esquerda"
-#: gtk/gtktextview.c:914
+#: gtk/gtktextview.c:953
msgid "Right Margin"
msgstr "Margem direita"
-#: gtk/gtktextview.c:933
+#: gtk/gtktextview.c:972
msgid "Top Margin"
msgstr "Margem superior"
-#: gtk/gtktextview.c:934
+#: gtk/gtktextview.c:973
msgid "Height of the top margin in pixels"
msgstr "Altura da margem superior em pixels"
-#: gtk/gtktextview.c:952
+#: gtk/gtktextview.c:991
msgid "Bottom Margin"
msgstr "Margem inferior"
-#: gtk/gtktextview.c:953
+#: gtk/gtktextview.c:992
msgid "Height of the bottom margin in pixels"
msgstr "Altura da margem inferior em pixels"
-#: gtk/gtktextview.c:976
+#: gtk/gtktextview.c:1030
msgid "Cursor Visible"
msgstr "Cursor visível"
-#: gtk/gtktextview.c:977
+#: gtk/gtktextview.c:1031
msgid "If the insertion cursor is shown"
msgstr "Mostrar ou não o cursor"
-#: gtk/gtktextview.c:984
+#: gtk/gtktextview.c:1043
msgid "Buffer"
msgstr "Buffer"
-#: gtk/gtktextview.c:985
+#: gtk/gtktextview.c:1044
msgid "The buffer which is displayed"
msgstr "O buffer exibido"
-#: gtk/gtktextview.c:993
+#: gtk/gtktextview.c:1057
msgid "Whether entered text overwrites existing contents"
msgstr "Se texto digitado sobrescreve o conteúdo existente"
-#: gtk/gtktextview.c:1000
+#: gtk/gtktextview.c:1069
msgid "Accepts tab"
msgstr "Aceita tab"
-#: gtk/gtktextview.c:1001
+#: gtk/gtktextview.c:1070
msgid "Whether Tab will result in a tab character being entered"
msgstr "Se Tab resultará na inserção do caractere de tabulação"
-#: gtk/gtktextview.c:1066
+#: gtk/gtktextview.c:1137
msgid "Monospace"
msgstr "Mono-espaçada"
-#: gtk/gtktextview.c:1067
+#: gtk/gtktextview.c:1138
msgid "Whether to use a monospace font"
msgstr "Se deve usar fonte monoespaçada"
@@ -6925,105 +6929,105 @@ msgstr "Tipo de janela"
msgid "The GtkTextWindowType"
msgstr "O GtkTextWindowType"
-#: gtk/gtktogglebutton.c:267
+#: gtk/gtktogglebutton.c:289
msgid "The toggle button whose group this widget belongs to."
msgstr "O botão de alternância a cujo grupo este componente pertence."
-#: gtk/gtktreeexpander.c:509
+#: gtk/gtktreeexpander.c:507
msgid "The child widget with the actual contents"
msgstr "O componente filho com o conteúdo real"
-#: gtk/gtktreeexpander.c:521
+#: gtk/gtktreeexpander.c:519
msgid "The item held by this expander's row"
msgstr "O item mantido pela linha deste expansor"
-#: gtk/gtktreeexpander.c:532
+#: gtk/gtktreeexpander.c:530
msgid "List row"
msgstr "Linha da lista"
-#: gtk/gtktreeexpander.c:533
+#: gtk/gtktreeexpander.c:531
msgid "The list row to track for expander state"
msgstr "A linha da lista para rastrear o estado do expansor"
-#: gtk/gtktreelistmodel.c:694
+#: gtk/gtktreelistmodel.c:690
msgid "autoexpand"
msgstr "autoexpandir"
-#: gtk/gtktreelistmodel.c:695
+#: gtk/gtktreelistmodel.c:691
msgid "If all rows should be expanded by default"
msgstr "Se todas as linhas devem ser autoexpandidas por padrão"
-#: gtk/gtktreelistmodel.c:707
+#: gtk/gtktreelistmodel.c:703
msgid "The root model displayed"
msgstr "O modelo raiz exibido"
# Eventos afetam a janela abaixo, e não a janela atravessável.
# https://bugzilla.gnome.org/show_bug.cgi?id=750568#c11
-#: gtk/gtktreelistmodel.c:720
+#: gtk/gtktreelistmodel.c:718
msgid "passthrough"
msgstr "atravessável"
-#: gtk/gtktreelistmodel.c:721
+#: gtk/gtktreelistmodel.c:719
msgid "If child model values are passed through"
msgstr "Se valores de modelo filho são atravessáveis"
-#: gtk/gtktreelistmodel.c:1054
+#: gtk/gtktreelistmodel.c:1059
msgid "Children"
msgstr "Filhos"
-#: gtk/gtktreelistmodel.c:1055
+#: gtk/gtktreelistmodel.c:1060
msgid "Model holding the row’s children"
msgstr "Modelo mantendo os filhos da linha"
-#: gtk/gtktreelistmodel.c:1066
+#: gtk/gtktreelistmodel.c:1071
msgid "Depth"
msgstr "Profundidade"
-#: gtk/gtktreelistmodel.c:1067
+#: gtk/gtktreelistmodel.c:1072
msgid "Depth in the tree"
msgstr "Profundidade na árvore"
-#: gtk/gtktreelistmodel.c:1078
+#: gtk/gtktreelistmodel.c:1083
msgid "Expandable"
msgstr "Expandível"
-#: gtk/gtktreelistmodel.c:1079
+#: gtk/gtktreelistmodel.c:1084
msgid "If this row can ever be expanded"
msgstr "Se esta linha pode ser expandida"
-#: gtk/gtktreelistmodel.c:1091
+#: gtk/gtktreelistmodel.c:1096
msgid "If this row is currently expanded"
msgstr "Se esta linha estiver atualmente expandida"
-#: gtk/gtktreelistmodel.c:1103
+#: gtk/gtktreelistmodel.c:1108
msgid "The item held in this row"
msgstr "O item mantido nesta linha"
-#: gtk/gtktreelistrowsorter.c:548
+#: gtk/gtktreelistrowsorter.c:545
msgid "The underlying sorter"
msgstr "O ordenador subjacente"
-#: gtk/gtktreemodelfilter.c:532
+#: gtk/gtktreemodelfilter.c:531
msgid "The child model"
msgstr "O filho modelo"
-#: gtk/gtktreemodelfilter.c:533
+#: gtk/gtktreemodelfilter.c:532
msgid "The model for the filtermodel to filter"
msgstr "O modelo para o filtermodel filtrar"
-#: gtk/gtktreemodelfilter.c:540
+#: gtk/gtktreemodelfilter.c:539
msgid "The virtual root"
msgstr "A raiz virtual"
-#: gtk/gtktreemodelfilter.c:541
+#: gtk/gtktreemodelfilter.c:540
msgid "The virtual root (relative to the child model) for this filtermodel"
msgstr "A raiz virtual (relativo ao filho modelo) para este filtermodel"
-#: gtk/gtktreemodelsort.c:484
+#: gtk/gtktreemodelsort.c:483
msgid "TreeModelSort Model"
msgstr "Modelo de TreeModelSort"
-#: gtk/gtktreemodelsort.c:485
+#: gtk/gtktreemodelsort.c:484
msgid "The model for the TreeModelSort to sort"
msgstr "O modelo para a ordenação do TreeModelSort"
@@ -7035,223 +7039,223 @@ msgstr "modelo"
msgid "The model for the popover"
msgstr "O modelo para a janela sobreposta"
-#: gtk/gtktreeview.c:995
+#: gtk/gtktreeview.c:996
msgid "TreeView Model"
msgstr "Modelo de TreeView"
-#: gtk/gtktreeview.c:996
+#: gtk/gtktreeview.c:997
msgid "The model for the tree view"
msgstr "O modelo para a visão em árvore"
-#: gtk/gtktreeview.c:1002
+#: gtk/gtktreeview.c:1003
msgid "Headers Visible"
msgstr "Cabeçalhos visíveis"
-#: gtk/gtktreeview.c:1003
+#: gtk/gtktreeview.c:1004
msgid "Show the column header buttons"
msgstr "Mostrar os botões de cabeçalho de coluna"
-#: gtk/gtktreeview.c:1009
+#: gtk/gtktreeview.c:1010
msgid "Headers Clickable"
msgstr "Cabeçalhos clicáveis"
-#: gtk/gtktreeview.c:1010
+#: gtk/gtktreeview.c:1011
msgid "Column headers respond to click events"
msgstr "Os cabeçalhos de coluna respondem a eventos de clique"
-#: gtk/gtktreeview.c:1016
+#: gtk/gtktreeview.c:1017
msgid "Expander Column"
msgstr "Coluna de expansão"
-#: gtk/gtktreeview.c:1017
+#: gtk/gtktreeview.c:1018
msgid "Set the column for the expander column"
msgstr "Definir a coluna para a coluna de expansão"
-#: gtk/gtktreeview.c:1030
+#: gtk/gtktreeview.c:1031
msgid "Enable Search"
msgstr "Habilitar pesquisa"
-#: gtk/gtktreeview.c:1031
+#: gtk/gtktreeview.c:1032
msgid "View allows user to search through columns interactively"
msgstr ""
"O visualizador permite ao usuário pesquisar pelas colunas interativamente"
-#: gtk/gtktreeview.c:1037
+#: gtk/gtktreeview.c:1038
msgid "Search Column"
msgstr "Pesquisar coluna"
-#: gtk/gtktreeview.c:1038
+#: gtk/gtktreeview.c:1039
msgid "Model column to search through during interactive search"
msgstr "Coluna modelo para pesquisar durante um pesquisa interativa"
-#: gtk/gtktreeview.c:1054
+#: gtk/gtktreeview.c:1055
msgid "Fixed Height Mode"
msgstr "Modo de altura fixa"
-#: gtk/gtktreeview.c:1055
+#: gtk/gtktreeview.c:1056
msgid "Speeds up GtkTreeView by assuming that all rows have the same height"
msgstr ""
"Aumenta a velocidade da GtkTreeView assumindo que todas as linhas têm a "
"mesma altura"
-#: gtk/gtktreeview.c:1072
+#: gtk/gtktreeview.c:1073
msgid "Hover Selection"
msgstr "Seleção flutuante"
-#: gtk/gtktreeview.c:1073
+#: gtk/gtktreeview.c:1074
msgid "Whether the selection should follow the pointer"
msgstr "Se a seleção deve seguir o mouse"
-#: gtk/gtktreeview.c:1089
+#: gtk/gtktreeview.c:1090
msgid "Hover Expand"
msgstr "Expandir flutuante"
-#: gtk/gtktreeview.c:1090
+#: gtk/gtktreeview.c:1091
msgid ""
"Whether rows should be expanded/collapsed when the pointer moves over them"
msgstr ""
"Se as linhas devem expandir/colapsar quando o mouse se move sobre as mesmas"
-#: gtk/gtktreeview.c:1101
+#: gtk/gtktreeview.c:1102
msgid "Show Expanders"
msgstr "Mostrar expansores"
-#: gtk/gtktreeview.c:1102
+#: gtk/gtktreeview.c:1103
msgid "View has expanders"
msgstr "Visualizador tem expansores"
-#: gtk/gtktreeview.c:1113
+#: gtk/gtktreeview.c:1114
msgid "Level Indentation"
msgstr "Recuo de nível"
-#: gtk/gtktreeview.c:1114
+#: gtk/gtktreeview.c:1115
msgid "Extra indentation for each level"
msgstr "Recuo extra para cada nível"
-#: gtk/gtktreeview.c:1121
+#: gtk/gtktreeview.c:1122
msgid "Rubber Banding"
msgstr "Seleção elástica"
-#: gtk/gtktreeview.c:1122
+#: gtk/gtktreeview.c:1123
msgid ""
"Whether to enable selection of multiple items by dragging the mouse pointer"
msgstr ""
"Habilitar ou não seleção de múltiplos itens ao arrastar o ponteiro do mouse"
-#: gtk/gtktreeview.c:1128
+#: gtk/gtktreeview.c:1129
msgid "Enable Grid Lines"
msgstr "Habilitar linhas de grade"
-#: gtk/gtktreeview.c:1129
+#: gtk/gtktreeview.c:1130
msgid "Whether grid lines should be drawn in the tree view"
msgstr "Se as linhas de grade devem ser desenhadas na visão em árvore"
-#: gtk/gtktreeview.c:1136
+#: gtk/gtktreeview.c:1137
msgid "Enable Tree Lines"
msgstr "Habilitar linhas de árvore"
-#: gtk/gtktreeview.c:1137
+#: gtk/gtktreeview.c:1138
msgid "Whether tree lines should be drawn in the tree view"
msgstr "Se linhas de árvores devem ser desenhadas na visão em árvore"
-#: gtk/gtktreeview.c:1144
+#: gtk/gtktreeview.c:1145
msgid "The column in the model containing the tooltip texts for the rows"
msgstr ""
"A coluna no modelo contendo os textos das dicas de ferramentas para as linhas"
-#: gtk/gtktreeviewcolumn.c:279
+#: gtk/gtktreeviewcolumn.c:277
msgid "Whether to display the column"
msgstr "Exibir ou não a coluna"
-#: gtk/gtktreeviewcolumn.c:286
+#: gtk/gtktreeviewcolumn.c:284
msgid "Column is user-resizable"
msgstr "Coluna é redimensionável pelo usuário"
-#: gtk/gtktreeviewcolumn.c:292
+#: gtk/gtktreeviewcolumn.c:290
msgid "X position"
msgstr "Posição x"
-#: gtk/gtktreeviewcolumn.c:293
+#: gtk/gtktreeviewcolumn.c:291
msgid "Current X position of the column"
msgstr "Posição X atual da coluna"
-#: gtk/gtktreeviewcolumn.c:301
+#: gtk/gtktreeviewcolumn.c:299
msgid "Current width of the column"
msgstr "Largura atual da coluna"
-#: gtk/gtktreeviewcolumn.c:316
+#: gtk/gtktreeviewcolumn.c:314
msgid "Sizing"
msgstr "Dimensão"
-#: gtk/gtktreeviewcolumn.c:317
+#: gtk/gtktreeviewcolumn.c:315
msgid "Resize mode of the column"
msgstr "Modo de redimensionamento da coluna"
-#: gtk/gtktreeviewcolumn.c:324
+#: gtk/gtktreeviewcolumn.c:322
msgid "Fixed Width"
msgstr "Largura fixa"
-#: gtk/gtktreeviewcolumn.c:325
+#: gtk/gtktreeviewcolumn.c:323
msgid "Current fixed width of the column"
msgstr "Largura fixa atual da coluna"
-#: gtk/gtktreeviewcolumn.c:333
+#: gtk/gtktreeviewcolumn.c:331
msgid "Minimum allowed width of the column"
msgstr "Largura mínima permitida da coluna"
-#: gtk/gtktreeviewcolumn.c:340
+#: gtk/gtktreeviewcolumn.c:338
msgid "Maximum Width"
msgstr "Largura máxima"
-#: gtk/gtktreeviewcolumn.c:341
+#: gtk/gtktreeviewcolumn.c:339
msgid "Maximum allowed width of the column"
msgstr "Largura máxima permitida da coluna"
-#: gtk/gtktreeviewcolumn.c:349
+#: gtk/gtktreeviewcolumn.c:347
msgid "Title to appear in column header"
msgstr "Título que aparece no cabeçalho da coluna"
-#: gtk/gtktreeviewcolumn.c:356
+#: gtk/gtktreeviewcolumn.c:354
msgid "Column gets share of extra width allocated to the widget"
msgstr "As colunas compartilham a largura extra alocada para o componente"
-#: gtk/gtktreeviewcolumn.c:362
+#: gtk/gtktreeviewcolumn.c:360
msgid "Clickable"
msgstr "Clicável"
-#: gtk/gtktreeviewcolumn.c:363
+#: gtk/gtktreeviewcolumn.c:361
msgid "Whether the header can be clicked"
msgstr "Se o cabeçalho pode ser clicado"
-#: gtk/gtktreeviewcolumn.c:370
+#: gtk/gtktreeviewcolumn.c:368
msgid "Widget to put in column header button instead of column title"
msgstr "Componente a colocar no botão do cabeçalho da coluna em vez do título"
-#: gtk/gtktreeviewcolumn.c:377
+#: gtk/gtktreeviewcolumn.c:375
msgid "X Alignment of the column header text or widget"
msgstr "Alinhamento X do texto ou componente do cabeçalho da coluna"
-#: gtk/gtktreeviewcolumn.c:384
+#: gtk/gtktreeviewcolumn.c:382
msgid "Whether the column can be reordered around the headers"
msgstr "Se a coluna pode ser reordenada ao redor dos cabeçalhos"
-#: gtk/gtktreeviewcolumn.c:390
+#: gtk/gtktreeviewcolumn.c:388
msgid "Sort indicator"
msgstr "Indicador de ordenação"
-#: gtk/gtktreeviewcolumn.c:391
+#: gtk/gtktreeviewcolumn.c:389
msgid "Whether to show a sort indicator"
msgstr "Mostrar ou não indicador de ordenação"
-#: gtk/gtktreeviewcolumn.c:398
+#: gtk/gtktreeviewcolumn.c:396
msgid "Sort direction the sort indicator should indicate"
msgstr "Direção de ordenação que o indicador de ordenação deve indicar"
-#: gtk/gtktreeviewcolumn.c:411
+#: gtk/gtktreeviewcolumn.c:409
msgid "Sort column ID"
msgstr "ID da coluna de ordenação"
-#: gtk/gtktreeviewcolumn.c:412
+#: gtk/gtktreeviewcolumn.c:410
msgid "Logical sort column ID this column sorts on when selected for sorting"
msgstr ""
"ID lógico da coluna de ordenação que esta coluna é ordenada quando "
@@ -7277,51 +7281,51 @@ msgstr "Se novos fluxos de mídia devem ser configurados para repetir"
msgid "The media stream played"
msgstr "O fluxo de mídia reproduzido"
-#: gtk/gtkviewport.c:372
+#: gtk/gtkviewport.c:375
msgid "Scroll to focus"
msgstr "Rolar para focar"
-#: gtk/gtkviewport.c:373
+#: gtk/gtkviewport.c:376
msgid "Whether to scroll when the focus changes"
msgstr "Se deve rolar quando o foco muda"
-#: gtk/gtkvolumebutton.c:174
+#: gtk/gtkvolumebutton.c:173
msgid "Use symbolic icons"
msgstr "Usar ícones simbólicos"
-#: gtk/gtkvolumebutton.c:175
+#: gtk/gtkvolumebutton.c:174
msgid "Whether to use symbolic icons"
msgstr "Se deve usar ícones simbólicos"
-#: gtk/gtkwidget.c:1207
+#: gtk/gtkwidget.c:1220
msgid "Widget name"
msgstr "Nome do componente"
-#: gtk/gtkwidget.c:1208
+#: gtk/gtkwidget.c:1221
msgid "The name of the widget"
msgstr "O nome do componente"
-#: gtk/gtkwidget.c:1214
+#: gtk/gtkwidget.c:1232
msgid "Parent widget"
msgstr "Componente pai"
-#: gtk/gtkwidget.c:1215
+#: gtk/gtkwidget.c:1233
msgid "The parent widget of this widget."
msgstr "O componente pai deste componente."
-#: gtk/gtkwidget.c:1227
+#: gtk/gtkwidget.c:1246
msgid "Root widget"
msgstr "Componente raiz"
-#: gtk/gtkwidget.c:1228
+#: gtk/gtkwidget.c:1247
msgid "The root widget in the widget tree."
msgstr "O componente raiz na árvore de componentes."
-#: gtk/gtkwidget.c:1234
+#: gtk/gtkwidget.c:1260
msgid "Width request"
msgstr "Solicitação de largura"
-#: gtk/gtkwidget.c:1235
+#: gtk/gtkwidget.c:1261
msgid ""
"Override for width request of the widget, or -1 if natural request should be "
"used"
@@ -7329,245 +7333,245 @@ msgstr ""
"Ignorar pedido de largura do componente, ou -1 se pedido natural deve ser "
"usado"
-#: gtk/gtkwidget.c:1242
+#: gtk/gtkwidget.c:1275
msgid "Height request"
msgstr "Solicitação de altura"
-#: gtk/gtkwidget.c:1243
+#: gtk/gtkwidget.c:1276
msgid ""
"Override for height request of the widget, or -1 if natural request should "
"be used"
msgstr ""
"Ignorar pedido de altura do componente ou -1 se pedido natural deve ser usado"
-#: gtk/gtkwidget.c:1251
+#: gtk/gtkwidget.c:1289
msgid "Whether the widget is visible"
msgstr "Se o componente é visível"
-#: gtk/gtkwidget.c:1258
+#: gtk/gtkwidget.c:1301
msgid "Whether the widget responds to input"
msgstr "Se o componente responde a entradas"
-#: gtk/gtkwidget.c:1273
+#: gtk/gtkwidget.c:1316
msgid "Can focus"
msgstr "Pode ter foco"
-#: gtk/gtkwidget.c:1274 gtk/gtkwidget.c:1286
+#: gtk/gtkwidget.c:1317 gtk/gtkwidget.c:1329
msgid "Whether the widget can accept the input focus"
msgstr "Se o componente pode aceitar o foco de entrada"
-#: gtk/gtkwidget.c:1285
+#: gtk/gtkwidget.c:1328
msgid "Focusable"
msgstr "Focalizável"
-#: gtk/gtkwidget.c:1292
+#: gtk/gtkwidget.c:1340
msgid "Has focus"
msgstr "Tem foco"
-#: gtk/gtkwidget.c:1293
+#: gtk/gtkwidget.c:1341
msgid "Whether the widget has the input focus"
msgstr "Se o componente tem ou não o foco de entrada"
-#: gtk/gtkwidget.c:1299
+#: gtk/gtkwidget.c:1352
msgid "Can target"
msgstr "Pode ser alvo"
-#: gtk/gtkwidget.c:1300
+#: gtk/gtkwidget.c:1353
msgid "Whether the widget can receive pointer events"
msgstr "Se o componente pode receber eventos de cursor"
-#: gtk/gtkwidget.c:1313
+#: gtk/gtkwidget.c:1366
msgid "Focus on click"
msgstr "Focar ao clicar"
-#: gtk/gtkwidget.c:1314
+#: gtk/gtkwidget.c:1367
msgid "Whether the widget should grab focus when it is clicked with the mouse"
msgstr "Se o componente deve obter o foco quando é clicado com o mouse"
-#: gtk/gtkwidget.c:1320
+#: gtk/gtkwidget.c:1378
msgid "Has default"
msgstr "Tem padrão"
-#: gtk/gtkwidget.c:1321
+#: gtk/gtkwidget.c:1379
msgid "Whether the widget is the default widget"
msgstr "Se o componente é o componente padrão"
-#: gtk/gtkwidget.c:1327
+#: gtk/gtkwidget.c:1390
msgid "Receives default"
msgstr "Recebe padrão"
-#: gtk/gtkwidget.c:1328
+#: gtk/gtkwidget.c:1391
msgid "If TRUE, the widget will receive the default action when it is focused"
msgstr "Se VERDADEIRO, o componente receberá a ação padrão quando tiver o foco"
-#: gtk/gtkwidget.c:1340
+#: gtk/gtkwidget.c:1403
msgid "The cursor to show when hovering above widget"
msgstr "O cursor para mostrar ao passar o mouse sobre o componente"
-#: gtk/gtkwidget.c:1354
+#: gtk/gtkwidget.c:1418
msgid "Has tooltip"
msgstr "Tem dica de ferramenta"
-#: gtk/gtkwidget.c:1355
+#: gtk/gtkwidget.c:1419
msgid "Whether this widget has a tooltip"
msgstr "Se o componente tem dica de ferramenta"
-#: gtk/gtkwidget.c:1376
+#: gtk/gtkwidget.c:1441
msgid "Tooltip Text"
msgstr "Dica de ferramenta"
-#: gtk/gtkwidget.c:1377 gtk/gtkwidget.c:1399
+#: gtk/gtkwidget.c:1442 gtk/gtkwidget.c:1466
msgid "The contents of the tooltip for this widget"
msgstr "O conteúdo da dica de ferramenta deste componente"
-#: gtk/gtkwidget.c:1398
+#: gtk/gtkwidget.c:1465
msgid "Tooltip markup"
msgstr "Marcação da dica de ferramenta"
-#: gtk/gtkwidget.c:1411
+#: gtk/gtkwidget.c:1478
msgid "How to position in extra horizontal space"
msgstr "Como posicionar o espaço horizontal extra"
-#: gtk/gtkwidget.c:1424
+#: gtk/gtkwidget.c:1491
msgid "How to position in extra vertical space"
msgstr "Como posicionar o espaço vertical extra"
-#: gtk/gtkwidget.c:1441
+#: gtk/gtkwidget.c:1510
msgid "Margin on Start"
msgstr "Margem no início"
-#: gtk/gtkwidget.c:1442
+#: gtk/gtkwidget.c:1511
msgid "Pixels of extra space on the start"
msgstr "Pixels de espaço extra no início"
-#: gtk/gtkwidget.c:1459
+#: gtk/gtkwidget.c:1530
msgid "Margin on End"
msgstr "Margem ao final"
-#: gtk/gtkwidget.c:1460
+#: gtk/gtkwidget.c:1531
msgid "Pixels of extra space on the end"
msgstr "Pixels de espaço extra ao final"
-#: gtk/gtkwidget.c:1476
+#: gtk/gtkwidget.c:1547
msgid "Margin on Top"
msgstr "Margem no topo"
-#: gtk/gtkwidget.c:1477
+#: gtk/gtkwidget.c:1548
msgid "Pixels of extra space on the top side"
msgstr "Pixels de espaço extra no topo"
-#: gtk/gtkwidget.c:1493
+#: gtk/gtkwidget.c:1564
msgid "Margin on Bottom"
msgstr "Margem abaixo"
-#: gtk/gtkwidget.c:1494
+#: gtk/gtkwidget.c:1565
msgid "Pixels of extra space on the bottom side"
msgstr "Pixels de espaço extra abaixo"
-#: gtk/gtkwidget.c:1506
+#: gtk/gtkwidget.c:1577
msgid "Horizontal Expand"
msgstr "Expandir horizontal"
-#: gtk/gtkwidget.c:1507
+#: gtk/gtkwidget.c:1578
msgid "Whether widget wants more horizontal space"
msgstr "Se o componente deseja mais espaço horizontal"
-#: gtk/gtkwidget.c:1518
+#: gtk/gtkwidget.c:1589
msgid "Horizontal Expand Set"
msgstr "Expansão horizontal definida"
-#: gtk/gtkwidget.c:1519
+#: gtk/gtkwidget.c:1590
msgid "Whether to use the hexpand property"
msgstr "Se deve usar a propriedade “hexpand”"
-#: gtk/gtkwidget.c:1530
+#: gtk/gtkwidget.c:1601
msgid "Vertical Expand"
msgstr "Expandir vertical"
-#: gtk/gtkwidget.c:1531
+#: gtk/gtkwidget.c:1602
msgid "Whether widget wants more vertical space"
msgstr "Se o componente deseja mais espaço vertical"
-#: gtk/gtkwidget.c:1542
+#: gtk/gtkwidget.c:1613
msgid "Vertical Expand Set"
msgstr "Expansão vertical definida"
-#: gtk/gtkwidget.c:1543
+#: gtk/gtkwidget.c:1614
msgid "Whether to use the vexpand property"
msgstr "Se deve usar a propriedade “vexpand”"
-#: gtk/gtkwidget.c:1555
+#: gtk/gtkwidget.c:1625
msgid "Opacity for Widget"
msgstr "Opacidade para o componente"
-#: gtk/gtkwidget.c:1556
+#: gtk/gtkwidget.c:1626
msgid "The opacity of the widget, from 0 to 1"
msgstr "A opacidade do componente, de 0 a 1"
-#: gtk/gtkwidget.c:1571
+#: gtk/gtkwidget.c:1641
msgid "Overflow"
msgstr "Transbordamento"
-#: gtk/gtkwidget.c:1572
+#: gtk/gtkwidget.c:1642
msgid "How content outside the widget’s content area is treated"
msgstr "Como o conteúdo fora da área de conteúdo do componente é tratado"
-#: gtk/gtkwidget.c:1586
+#: gtk/gtkwidget.c:1655
msgid "The scaling factor of the window"
msgstr "O fator de escala da janela"
-#: gtk/gtkwidget.c:1601
+#: gtk/gtkwidget.c:1670
msgid "CSS Name"
msgstr "Nome CSS"
-#: gtk/gtkwidget.c:1602
+#: gtk/gtkwidget.c:1671
msgid "The name of this widget in the CSS tree"
msgstr "O nome deste componente na árvore CSS"
-#: gtk/gtkwidget.c:1613
+#: gtk/gtkwidget.c:1682
msgid "CSS Style Classes"
msgstr "Classes de estilo CSS"
-#: gtk/gtkwidget.c:1614
+#: gtk/gtkwidget.c:1683
msgid "List of CSS classes"
msgstr "Lista de classes CSS"
-#: gtk/gtkwidget.c:1629
+#: gtk/gtkwidget.c:1698
msgid "Layout Manager"
msgstr "Gerenciador de layout"
-#: gtk/gtkwidget.c:1630
+#: gtk/gtkwidget.c:1699
msgid "The layout manager used to layout children of the widget"
msgstr ""
"O gerenciador de layout usado para definir layout de filhos do componente"
-#: gtk/gtkwidgetpaintable.c:251
+#: gtk/gtkwidgetpaintable.c:248
msgid "Observed widget"
msgstr "Componente observado"
-#: gtk/gtkwindow.c:708
+#: gtk/gtkwindow.c:756
msgid "Window Title"
msgstr "Título da janela"
-#: gtk/gtkwindow.c:709
+#: gtk/gtkwindow.c:757
msgid "The title of the window"
msgstr "O título da janela"
-#: gtk/gtkwindow.c:722
+#: gtk/gtkwindow.c:768
msgid "Startup ID"
msgstr "ID de inicialização"
-#: gtk/gtkwindow.c:723
+#: gtk/gtkwindow.c:769
msgid "Unique startup identifier for the window used by startup-notification"
msgstr ""
"Identificador único de inicialização da janela usado por “startup-"
"notification”"
-#: gtk/gtkwindow.c:730
+#: gtk/gtkwindow.c:781
msgid "If TRUE, users can resize the window"
msgstr "Se VERDADEIRO, os usuários podem redimensionar a janela"
-#: gtk/gtkwindow.c:737
+#: gtk/gtkwindow.c:793
msgid ""
"If TRUE, the window is modal (other windows are not usable while this one is "
"up)"
@@ -7575,150 +7579,158 @@ msgstr ""
"Se VERDADEIRO, a janela é modal (outras janelas não são usáveis enquanto "
"esta estiver aberta)"
-#: gtk/gtkwindow.c:743
+#: gtk/gtkwindow.c:804
msgid "Default Width"
msgstr "Largura padrão"
-#: gtk/gtkwindow.c:744
+#: gtk/gtkwindow.c:805
msgid "The default width of the window"
msgstr "A largura padrão da janela"
-#: gtk/gtkwindow.c:751
+#: gtk/gtkwindow.c:817
msgid "Default Height"
msgstr "Altura padrão"
-#: gtk/gtkwindow.c:752
+#: gtk/gtkwindow.c:818
msgid "The default height of the window"
msgstr "A altura padrão da janela"
-#: gtk/gtkwindow.c:759
+#: gtk/gtkwindow.c:830
msgid "Destroy with Parent"
msgstr "Destruir com pai"
-#: gtk/gtkwindow.c:760
+#: gtk/gtkwindow.c:831
msgid "If this window should be destroyed when the parent is destroyed"
msgstr "Se esta janela deve ser destruída quando o pai também for"
-#: gtk/gtkwindow.c:766
+#: gtk/gtkwindow.c:842
msgid "Hide on close"
msgstr "Ocultar ao fechar"
-#: gtk/gtkwindow.c:767
+#: gtk/gtkwindow.c:843
msgid "If this window should be hidden when the user clicks the close button"
msgstr ""
"Se esta janela deve ser ocultada quando o usuário clica no botão de fechar"
-#: gtk/gtkwindow.c:780
+#: gtk/gtkwindow.c:857
msgid "Mnemonics Visible"
msgstr "Mnemônicos visíveis"
-#: gtk/gtkwindow.c:781
+#: gtk/gtkwindow.c:858
msgid "Whether mnemonics are currently visible in this window"
msgstr "Se os mnemônicos estão atualmente visíveis nesta janela"
-#: gtk/gtkwindow.c:795
+#: gtk/gtkwindow.c:872
msgid "Focus Visible"
msgstr "Foco visível"
-#: gtk/gtkwindow.c:796
+#: gtk/gtkwindow.c:873
msgid "Whether focus rectangles are currently visible in this window"
msgstr "Se retângulos de foco estão atualmente visíveis nesta janela"
-#: gtk/gtkwindow.c:809
+#: gtk/gtkwindow.c:887
msgid "Name of the themed icon for this window"
msgstr "Nome do ícone do tema para esta janela"
-#: gtk/gtkwindow.c:816
+#: gtk/gtkwindow.c:899
msgid "The display that will display this window"
msgstr "A exibição que vai exibir esta janela"
-#: gtk/gtkwindow.c:822
+#: gtk/gtkwindow.c:910
msgid "Is Active"
msgstr "Está ativo"
-#: gtk/gtkwindow.c:823
+#: gtk/gtkwindow.c:911
msgid "Whether the toplevel is the current active window"
msgstr "Se a janela principal é a janela atualmente ativa"
-#: gtk/gtkwindow.c:834
+#: gtk/gtkwindow.c:922
msgid "Decorated"
msgstr "Decorada"
-#: gtk/gtkwindow.c:835
+#: gtk/gtkwindow.c:923
msgid "Whether the window should be decorated by the window manager"
msgstr "Se a janela deve ser decorada pelo gerenciador de janelas"
-#: gtk/gtkwindow.c:846
+#: gtk/gtkwindow.c:934
msgid "Deletable"
msgstr "Apagável"
-#: gtk/gtkwindow.c:847
+#: gtk/gtkwindow.c:935
msgid "Whether the window frame should have a close button"
msgstr "Se o quadro da janela deve ter um botão de fechar"
-#: gtk/gtkwindow.c:876
+#: gtk/gtkwindow.c:964
msgid "Is Maximized"
msgstr "Está maximizada"
-#: gtk/gtkwindow.c:877
+#: gtk/gtkwindow.c:965
msgid "Whether the window is maximized"
msgstr "Se a janela está maximizada"
-#: gtk/gtkwindow.c:893
+#: gtk/gtkwindow.c:982
msgid "Is fullscreen"
msgstr "Está em tela cheia"
-#: gtk/gtkwindow.c:894
+#: gtk/gtkwindow.c:983
msgid "Whether the window is fullscreen"
msgstr "Se a janela está em tela cheia"
-#: gtk/gtkwindow.c:913
+#: gtk/gtkwindow.c:1002
msgid "GtkApplication"
msgstr "GtkApplication"
-#: gtk/gtkwindow.c:914
+#: gtk/gtkwindow.c:1003
msgid "The GtkApplication for the window"
msgstr "O GtkApplication para a janela"
-#: gtk/gtkwindow.c:927
+#: gtk/gtkwindow.c:1026
msgid "Focus widget"
msgstr "Componente com foco"
-#: gtk/gtkwindow.c:928
+#: gtk/gtkwindow.c:1027
msgid "The focus widget"
msgstr "O componente com foco"
-#: gtk/gtkwindowcontrols.c:517
+#: gtk/gtkwindow.c:1053
+#| msgid "Menu bar accelerator"
+msgid "Handle Menubar accels"
+msgstr "Lidar com aceleradores da barra de menu"
+
+#: gtk/gtkwindow.c:1054
+#| msgid "Whether the window frame should have a close button"
+msgid "Whether the window should handle F10"
+msgstr "Se a janela deve lidar com F10"
+
+#: gtk/gtkwindowcontrols.c:519
msgid "Side"
msgstr "Lado"
-#: gtk/gtkwindowcontrols.c:518
+#: gtk/gtkwindowcontrols.c:520
msgid "Whether the widget shows start or end portion of the decoration layout"
msgstr "Se o componente mostra porção de início ou fim do layout de decoração"
-#: gtk/gtkwindowcontrols.c:546
+#: gtk/gtkwindowcontrols.c:547
msgid "Empty"
msgstr "Vazio"
-#: gtk/gtkwindowcontrols.c:547
+#: gtk/gtkwindowcontrols.c:548
msgid "Whether the widget has any window buttons"
msgstr "Se o componente tem algum botão de janela"
-#: modules/media/gtkgstsink.c:514
+#: modules/media/gtkgstsink.c:527
msgid "paintable"
msgstr "pintável"
-#: modules/media/gtkgstsink.c:515
+#: modules/media/gtkgstsink.c:528
msgid "Paintable providing the picture"
msgstr "Pintável fornecendo a imagem"
-#: modules/media/gtkgstsink.c:526
-#| msgid "Context"
+#: modules/media/gtkgstsink.c:539
msgid "gl-context"
msgstr "gl-context"
-#: modules/media/gtkgstsink.c:527
-#| msgid "The icon name to use for the printer"
+#: modules/media/gtkgstsink.c:540
msgid "GL context to use for rendering"
msgstr "O contexto de GL a usar para a renderização"
@@ -7746,6 +7758,20 @@ msgstr "Título do perfil de cor"
msgid "The title of the color profile to use"
msgstr "O título do perfil de cores para usar"
+#~ msgid "Number of pixels of the self scrolled off the screen to the left"
+#~ msgstr "Número de pixels de self rolados para fora da tela à esquerda"
+
+#~ msgid "Show text in the self when it’s empty and unfocused"
+#~ msgstr "Mostra texto no self quando ele está vazio e sem foco"
+
+#~ msgid "A list of style attributes to apply to the text of the self"
+#~ msgstr "Uma lista de atributos de estilo para aplicar ao texto do self"
+
+#~ msgid "A list of tabstop locations to apply to the text of the self"
+#~ msgstr ""
+#~ "Uma lista de localizações de paradas de tabulação para aplicar ao texto "
+#~ "do self"
+
#~ msgid "Draw Indicator"
#~ msgstr "Desenhar indicador"
@@ -9949,9 +9975,6 @@ msgstr "O título do perfil de cores para usar"
#~ msgid "Name of a icon theme to fall back to"
#~ msgstr "Nome do tema de ícones ao qual recorrer"
-#~ msgid "Menu bar accelerator"
-#~ msgstr "Atalho da barra de menu"
-
#~ msgid "Keybinding to activate the menu bar"
#~ msgstr "Tecla de atalho para ativar a barra de menu"
diff --git a/po-properties/uk.po b/po-properties/uk.po
index 3e3023763b..49f387c545 100644
--- a/po-properties/uk.po
+++ b/po-properties/uk.po
@@ -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-05-25 13:00+0000\n"
-"PO-Revision-Date: 2021-05-25 16:18+0300\n"
+"POT-Creation-Date: 2021-07-16 11:05+0000\n"
+"PO-Revision-Date: 2021-07-17 08:33+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -24,7 +24,7 @@ msgstr ""
#: gdk/gdkseat.c:190 gdk/gdksurface.c:510 gdk/gdksurface.c:511
#: gdk/win32/gdkcursor-win32.c:235 gtk/gtkicontheme.c:991
#: gtk/gtkicontheme.c:992 gtk/gtkmountoperation.c:199 gtk/gtkstylecontext.c:139
-#: gtk/gtkwindow.c:898
+#: gtk/gtkwindow.c:899
msgid "Display"
msgstr "Показ"
@@ -53,7 +53,7 @@ msgid "Vertical offset of the cursor hotspot"
msgstr "Вертикальний відступ «гарячої» точки курсора"
#: gdk/gdkcursor.c:224 gtk/gtkcssnode.c:612 gtk/gtkeventcontroller.c:242
-#: gtk/gtkfilefilter.c:233 gtk/gtkprinter.c:123 gtk/gtkstack.c:428
+#: gtk/gtkfilefilter.c:239 gtk/gtkprinter.c:123 gtk/gtkstack.c:428
#: gtk/gtktextmark.c:137
msgid "Name"
msgstr "Назва"
@@ -126,7 +126,7 @@ msgstr "Інструмент"
msgid "The tool that is currently used with this device"
msgstr "Зараз інструмент використовується з цим пристроєм"
-#: gdk/gdkdevice.c:253 gtk/gtkmenubutton.c:369 gtk/gtkshortcutsshortcut.c:699
+#: gdk/gdkdevice.c:253 gtk/gtkmenubutton.c:414 gtk/gtkshortcutsshortcut.c:699
msgid "Direction"
msgstr "Напрямок"
@@ -475,7 +475,7 @@ msgid "Controls whether the action bar shows its contents or not"
msgstr "Керує тим, чи відображається його вміст на панелі дій"
#: gtk/gtkadjustment.c:141 gtk/gtkcellrendererprogress.c:621
-#: gtk/gtkdroptarget.c:690 gtk/gtkscalebutton.c:197 gtk/gtkspinbutton.c:461
+#: gtk/gtkdroptarget.c:710 gtk/gtkscalebutton.c:197 gtk/gtkspinbutton.c:462
msgid "Value"
msgstr "Значення"
@@ -523,38 +523,38 @@ msgstr "Розмір сторінки"
msgid "The page size of the adjustment"
msgstr "Розмір сторінки регулятора"
-#: gtk/gtkappchooserbutton.c:676
+#: gtk/gtkappchooserbutton.c:686
msgid "Include an “Other…” item"
msgstr "Включити пункт «Інші…»"
-#: gtk/gtkappchooserbutton.c:677
+#: gtk/gtkappchooserbutton.c:687
msgid ""
"Whether the combobox should include an item that triggers a "
"GtkAppChooserDialog"
msgstr "Чи спадному списку слід враховувати пункт GtkAppChooserDialog"
-#: gtk/gtkappchooserbutton.c:689
+#: gtk/gtkappchooserbutton.c:699
msgid "Show default item"
msgstr "Показати типові об'єкти"
-#: gtk/gtkappchooserbutton.c:690
+#: gtk/gtkappchooserbutton.c:700
msgid "Whether the combobox should show the default application on top"
msgstr "Чи списку слід показувати типові програми зверху"
-#: gtk/gtkappchooserbutton.c:704 gtk/gtkappchooserdialog.c:617
+#: gtk/gtkappchooserbutton.c:714 gtk/gtkappchooserdialog.c:617
msgid "Heading"
msgstr "Заголовок"
-#: gtk/gtkappchooserbutton.c:705 gtk/gtkappchooserdialog.c:618
+#: gtk/gtkappchooserbutton.c:715 gtk/gtkappchooserdialog.c:618
msgid "The text to show at the top of the dialog"
msgstr "Текст на вершині вікна"
-#: gtk/gtkappchooserbutton.c:716 gtk/gtkcolorbutton.c:220
-#: gtk/gtkfontbutton.c:523 gtk/gtknativedialog.c:224 gtk/gtkwindow.c:792
+#: gtk/gtkappchooserbutton.c:726 gtk/gtkcolorbutton.c:251
+#: gtk/gtkfontbutton.c:532 gtk/gtknativedialog.c:224 gtk/gtkwindow.c:793
msgid "Modal"
msgstr "Модальне"
-#: gtk/gtkappchooserbutton.c:717
+#: gtk/gtkappchooserbutton.c:727
msgid "Whether the dialog should be modal"
msgstr "Чи має бути вікно модальним"
@@ -654,11 +654,11 @@ msgstr "Активне вікно"
msgid "The window which most recently had focus"
msgstr "Вікно, яке отримало фокус найостаннішим"
-#: gtk/gtkapplicationwindow.c:684
+#: gtk/gtkapplicationwindow.c:687
msgid "Show a menubar"
msgstr "Показувати панель меню"
-#: gtk/gtkapplicationwindow.c:685
+#: gtk/gtkapplicationwindow.c:688
msgid "TRUE if the window should show a menubar at the top of the window"
msgstr "TRUE, якщо вікну слід показувати панель меню зверху нього"
@@ -703,8 +703,8 @@ msgstr ""
#: gtk/gtkframe.c:207 gtk/gtklistbox.c:3582 gtk/gtklistitem.c:181
#: gtk/gtknotebook.c:586 gtk/gtkoverlay.c:321 gtk/gtkpopover.c:1826
#: gtk/gtkrevealer.c:368 gtk/gtkscrolledwindow.c:798 gtk/gtksearchbar.c:333
-#: gtk/gtkstack.c:416 gtk/gtktreeexpander.c:506 gtk/gtkviewport.c:388
-#: gtk/gtkwindow.c:1038 gtk/gtkwindowhandle.c:505
+#: gtk/gtkstack.c:416 gtk/gtktreeexpander.c:511 gtk/gtkviewport.c:388
+#: gtk/gtkwindow.c:1039 gtk/gtkwindowhandle.c:505
msgid "Child"
msgstr "Вкладений елемент"
@@ -712,7 +712,7 @@ msgstr "Вкладений елемент"
#: gtk/gtkflowbox.c:535 gtk/gtkframe.c:208 gtk/gtklistbox.c:3583
#: gtk/gtkoverlay.c:322 gtk/gtkpopover.c:1827 gtk/gtkrevealer.c:369
#: gtk/gtkscrolledwindow.c:799 gtk/gtksearchbar.c:334 gtk/gtkviewport.c:389
-#: gtk/gtkwindow.c:1039 gtk/gtkwindowhandle.c:506
+#: gtk/gtkwindow.c:1040 gtk/gtkwindowhandle.c:506
msgid "The child widget"
msgstr "Дочірній віджет"
@@ -748,11 +748,11 @@ msgstr "Дочірній віджет"
msgid "The content the assistant page"
msgstr "Вміст сторінки помічника"
-#: gtk/gtkassistant.c:608 gtk/gtkdialog.c:565
+#: gtk/gtkassistant.c:608 gtk/gtkdialog.c:567
msgid "Use Header Bar"
msgstr "Використання панелі заголовка"
-#: gtk/gtkassistant.c:609 gtk/gtkdialog.c:566
+#: gtk/gtkassistant.c:609 gtk/gtkdialog.c:568
msgid "Use Header Bar for actions."
msgstr "Використання панелі заголовка для дій."
@@ -773,7 +773,7 @@ msgid "Bookmark file to load"
msgstr "Файл закладок, який слід завантажити"
#: gtk/gtkbookmarklist.c:228 gtk/gtkcellrenderertext.c:267 gtk/gtkentry.c:965
-#: gtk/gtklabel.c:2208 gtk/gtktext.c:928
+#: gtk/gtklabel.c:2209 gtk/gtktext.c:929
msgid "Attributes"
msgstr "Атрибути"
@@ -814,28 +814,28 @@ msgstr "Обернути"
msgid "If the expression result should be inverted"
msgstr "Чи має бути результат обчислення виразу обернено"
-#: gtk/gtkbox.c:267 gtk/gtkboxlayout.c:720 gtk/gtkcellareabox.c:316
+#: gtk/gtkbox.c:262 gtk/gtkboxlayout.c:720 gtk/gtkcellareabox.c:316
#: gtk/gtkiconview.c:464 gtk/gtktreeviewcolumn.c:306
msgid "Spacing"
msgstr "Інтервал"
-#: gtk/gtkbox.c:268
+#: gtk/gtkbox.c:263
msgid "The amount of space between children"
msgstr "Відстані між вкладеними елементами"
-#: gtk/gtkbox.c:279 gtk/gtkboxlayout.c:707 gtk/gtkflowbox.c:3651
+#: gtk/gtkbox.c:274 gtk/gtkboxlayout.c:707 gtk/gtkflowbox.c:3651
msgid "Homogeneous"
msgstr "Гомогенність"
-#: gtk/gtkbox.c:280 gtk/gtkflowbox.c:3652
+#: gtk/gtkbox.c:275 gtk/gtkflowbox.c:3652
msgid "Whether the children should all be the same size"
msgstr "Чи всі вкладені елементи повинні мати однаковий розмір"
-#: gtk/gtkbox.c:291 gtk/gtkboxlayout.c:737 gtk/gtkcenterbox.c:212
+#: gtk/gtkbox.c:286 gtk/gtkboxlayout.c:737 gtk/gtkcenterbox.c:212
msgid "Baseline position"
msgstr "Позиція базової лінії"
-#: gtk/gtkbox.c:292 gtk/gtkboxlayout.c:738 gtk/gtkcenterbox.c:213
+#: gtk/gtkbox.c:287 gtk/gtkboxlayout.c:738 gtk/gtkcenterbox.c:213
msgid ""
"The position of the baseline aligned widgets if extra space is available"
msgstr ""
@@ -866,7 +866,7 @@ msgid "The object the builder is evaluating for"
msgstr "Об'єкт для оцінки збиральником"
#: gtk/gtkbuilder.c:334 gtk/gtkbuilderlistitemfactory.c:292
-#: gtk/gtkshortcutcontroller.c:577
+#: gtk/gtkshortcutcontroller.c:590
msgid "Scope"
msgstr "Область"
@@ -894,24 +894,24 @@ msgstr "ресурс, який містить визначення інтерф
msgid "scope to use when instantiating listitems"
msgstr "область, яку слід використати для створення екземплярів пунктів списку"
-#: gtk/gtkbutton.c:222 gtk/gtkcheckbutton.c:544 gtk/gtkexpander.c:333
-#: gtk/gtkframe.c:170 gtk/gtklabel.c:2196 gtk/gtkmenubutton.c:406
+#: gtk/gtkbutton.c:222 gtk/gtkcheckbutton.c:561 gtk/gtkexpander.c:333
+#: gtk/gtkframe.c:170 gtk/gtklabel.c:2197 gtk/gtkmenubutton.c:465
msgid "Label"
msgstr "Позначка"
-#: gtk/gtkbutton.c:223 gtk/gtkcheckbutton.c:545
+#: gtk/gtkbutton.c:223 gtk/gtkcheckbutton.c:562
msgid ""
"Text of the label widget inside the button, if the button contains a label "
"widget"
msgstr "Текст віджета позначки в кнопці, якщо кнопка містить віджет позначки"
-#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:572 gtk/gtkexpander.c:346
-#: gtk/gtklabel.c:2234 gtk/gtkmenubutton.c:418 gtk/gtkstack.c:492
+#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:589 gtk/gtkexpander.c:346
+#: gtk/gtklabel.c:2235 gtk/gtkmenubutton.c:477 gtk/gtkstack.c:492
msgid "Use underline"
msgstr "Використовувати підкреслення"
-#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:573 gtk/gtkexpander.c:347
-#: gtk/gtklabel.c:2235 gtk/gtkmenubutton.c:419
+#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:590 gtk/gtkexpander.c:347
+#: gtk/gtklabel.c:2236 gtk/gtkmenubutton.c:478
msgid ""
"If set, an underline in the text indicates the next character should be used "
"for the mnemonic accelerator key"
@@ -924,16 +924,16 @@ msgstr ""
msgid "Has Frame"
msgstr "Має рамку"
-#: gtk/gtkbutton.c:248 gtk/gtkmenubutton.c:431
+#: gtk/gtkbutton.c:248 gtk/gtkmenubutton.c:490
msgid "Whether the button has a frame"
msgstr "Чи має кнопка рамку"
#: gtk/gtkbutton.c:259 gtk/gtkcellrendererpixbuf.c:253 gtk/gtkimage.c:234
-#: gtk/gtkmenubutton.c:394 gtk/gtkprinter.c:214 gtk/gtkwindow.c:886
+#: gtk/gtkmenubutton.c:439 gtk/gtkprinter.c:214 gtk/gtkwindow.c:887
msgid "Icon Name"
msgstr "Назва значка"
-#: gtk/gtkbutton.c:260 gtk/gtkmenubutton.c:395
+#: gtk/gtkbutton.c:260 gtk/gtkmenubutton.c:440
msgid "The name of the icon used to automatically populate the button"
msgstr "Назва піктограми, яку буде автоматично використано для кнопки"
@@ -1238,8 +1238,8 @@ msgstr "Чи встановлено колір тла комірки"
#: gtk/gtkcellrenderercombo.c:134 gtk/gtkcolumnview.c:694 gtk/gtkdropdown.c:459
#: gtk/gtkfilterlistmodel.c:585 gtk/gtkflattenlistmodel.c:409
#: gtk/gtkgridview.c:1098 gtk/gtklistview.c:831 gtk/gtkmaplistmodel.c:373
-#: gtk/gtkmultiselection.c:353 gtk/gtkselectionfiltermodel.c:224
-#: gtk/gtkshortcutcontroller.c:565 gtk/gtkslicelistmodel.c:260
+#: gtk/gtkmultiselection.c:353 gtk/gtkselectionfiltermodel.c:230
+#: gtk/gtkshortcutcontroller.c:578 gtk/gtkslicelistmodel.c:260
#: gtk/gtksortlistmodel.c:793 gtk/gtktreelistmodel.c:702
msgid "Model"
msgstr "Модель"
@@ -1319,7 +1319,7 @@ msgstr "Значення індикатора поступу"
#: gtk/gtkcellrendererprogress.c:637 gtk/gtkcellrenderertext.c:253
#: gtk/gtkeditable.c:383 gtk/gtkentrybuffer.c:348 gtk/gtkmessagedialog.c:388
-#: gtk/gtkmodelbutton.c:1196 gtk/gtkprogressbar.c:226 gtk/gtktextbuffer.c:469
+#: gtk/gtkmodelbutton.c:1196 gtk/gtkprogressbar.c:226 gtk/gtktextbuffer.c:477
msgid "Text"
msgstr "Текст"
@@ -1369,11 +1369,11 @@ msgid "Invert the direction in which the progress bar grows"
msgstr "Перемістити напрямок росту панелі поступу"
#: gtk/gtkcellrendererspin.c:131 gtk/gtkrange.c:372 gtk/gtkscalebutton.c:212
-#: gtk/gtkscrollbar.c:221 gtk/gtkspinbutton.c:374
+#: gtk/gtkscrollbar.c:221 gtk/gtkspinbutton.c:375
msgid "Adjustment"
msgstr "Вирівнювання"
-#: gtk/gtkcellrendererspin.c:132 gtk/gtkspinbutton.c:375
+#: gtk/gtkcellrendererspin.c:132 gtk/gtkspinbutton.c:376
msgid "The adjustment that holds the value of the spin button"
msgstr "Коригування, яке утримує значення кнопки зменшення/збільшення часу"
@@ -1385,17 +1385,17 @@ msgstr "Величина прискорення"
msgid "The acceleration rate when you hold down a button"
msgstr "Прискорення прокручування значень під час утримання кнопки натиснутою"
-#: gtk/gtkcellrendererspin.c:157 gtk/gtkscale.c:681 gtk/gtkspinbutton.c:398
+#: gtk/gtkcellrendererspin.c:157 gtk/gtkscale.c:681 gtk/gtkspinbutton.c:399
msgid "Digits"
msgstr "Цифр"
-#: gtk/gtkcellrendererspin.c:158 gtk/gtkspinbutton.c:399
+#: gtk/gtkcellrendererspin.c:158 gtk/gtkspinbutton.c:400
msgid "The number of decimal places to display"
msgstr "Кількість десяткових місць для показу"
-#: gtk/gtkcellrendererspinner.c:181 gtk/gtkcheckbutton.c:520
+#: gtk/gtkcellrendererspinner.c:181 gtk/gtkcheckbutton.c:537
#: gtk/gtkmodelbutton.c:1223 gtk/gtkmodelbutton.c:1224 gtk/gtkswitch.c:522
-#: gtk/gtktogglebutton.c:276
+#: gtk/gtktogglebutton.c:279
msgid "Active"
msgstr "Активний"
@@ -1473,11 +1473,11 @@ msgid "Foreground color as a GdkRGBA"
msgstr "Колір тексту за GdkRGBA"
#: gtk/gtkcellrenderertext.c:319 gtk/gtkeditable.c:433 gtk/gtktexttag.c:308
-#: gtk/gtktextview.c:887
+#: gtk/gtktextview.c:888
msgid "Editable"
msgstr "Редагується"
-#: gtk/gtkcellrenderertext.c:320 gtk/gtktexttag.c:309 gtk/gtktextview.c:888
+#: gtk/gtkcellrenderertext.c:320 gtk/gtktexttag.c:309 gtk/gtktextview.c:889
msgid "Whether the text can be modified by the user"
msgstr "Чи може текст змінюватись користувачем"
@@ -1582,7 +1582,7 @@ msgstr ""
"під час відтворення тексту. Якщо ви не розумієте цей параметр, то, напевно, "
"він вам не потрібний."
-#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2369 gtk/gtkprogressbar.c:267
+#: gtk/gtkcellrenderertext.c:444 gtk/gtklabel.c:2370 gtk/gtkprogressbar.c:267
msgid "Ellipsize"
msgstr "Багатокрапка"
@@ -1594,15 +1594,15 @@ msgstr ""
"Бажане місце обривання рядка багатокрапкою, якщо механізму відтворення рядка "
"не вистачає місця для показу всього рядка"
-#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2388
+#: gtk/gtkcellrenderertext.c:461 gtk/gtklabel.c:2389
msgid "Width In Characters"
msgstr "Ширина у символах"
-#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2389
+#: gtk/gtkcellrenderertext.c:462 gtk/gtklabel.c:2390
msgid "The desired width of the label, in characters"
msgstr "Бажана ширина, у символах"
-#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2424
+#: gtk/gtkcellrenderertext.c:481 gtk/gtklabel.c:2425
msgid "Maximum Width In Characters"
msgstr "Максимальна ширина в символах"
@@ -1638,8 +1638,8 @@ msgstr "Вирівнювання"
msgid "How to align the lines"
msgstr "Як вирівнювати рядки"
-#: gtk/gtkcellrenderertext.c:544 gtk/gtkentry.c:653 gtk/gtkpasswordentry.c:443
-#: gtk/gtksearchentry.c:301 gtk/gtktext.c:859
+#: gtk/gtkcellrenderertext.c:544 gtk/gtkentry.c:653 gtk/gtkpasswordentry.c:444
+#: gtk/gtksearchentry.c:301 gtk/gtktext.c:860
msgid "Placeholder text"
msgstr "Заповнення тексту"
@@ -1853,46 +1853,46 @@ msgstr "Влаштувати модель"
msgid "Whether to request enough space for every row in the model"
msgstr "Чи достатньо місця для кожного рядка в моделі"
-#: gtk/gtkcheckbutton.c:521 gtk/gtktogglebutton.c:277
+#: gtk/gtkcheckbutton.c:538 gtk/gtktogglebutton.c:280
msgid "If the toggle button should be pressed in"
msgstr "Чи слід кнопці перемикання бути натиснутою"
-#: gtk/gtkcheckbutton.c:532 gtk/gtktogglebutton.c:288
+#: gtk/gtkcheckbutton.c:549 gtk/gtktogglebutton.c:291
msgid "Group"
msgstr "Група"
-#: gtk/gtkcheckbutton.c:533
+#: gtk/gtkcheckbutton.c:550
msgid "The check button whose group this widget belongs to."
msgstr "Кнопка-перемикач, визначає, до чиєї групи належить цей віджет."
-#: gtk/gtkcheckbutton.c:559
+#: gtk/gtkcheckbutton.c:576
msgid "Inconsistent"
msgstr "Нечутливий"
-#: gtk/gtkcheckbutton.c:560
+#: gtk/gtkcheckbutton.c:577
msgid "If the check button is in an “in between” state"
msgstr "Чи перебуватиме кнопка-позначка у невизначеному стані"
-#: gtk/gtkcolorbutton.c:170 gtk/gtkcolumnviewcolumn.c:265
-#: gtk/gtkfontbutton.c:484 gtk/gtkprintjob.c:147 gtk/gtkshortcutsgroup.c:279
+#: gtk/gtkcolorbutton.c:179 gtk/gtkcolumnviewcolumn.c:265
+#: gtk/gtkfontbutton.c:493 gtk/gtkprintjob.c:147 gtk/gtkshortcutsgroup.c:279
#: gtk/gtkshortcutssection.c:326 gtk/gtkshortcutsshortcut.c:628
#: gtk/gtkstack.c:440 gtk/gtktreeviewcolumn.c:346
msgid "Title"
msgstr "Заголовок"
-#: gtk/gtkcolorbutton.c:171
+#: gtk/gtkcolorbutton.c:180
msgid "The title of the color selection dialog"
msgstr "Заголовок вікна вибору кольору"
-#: gtk/gtkcolorbutton.c:208
+#: gtk/gtkcolorbutton.c:239
msgid "Show Editor"
msgstr "Показувати редактор"
-#: gtk/gtkcolorbutton.c:209
+#: gtk/gtkcolorbutton.c:240
msgid "Whether to show the color editor right away"
msgstr "Чи показувати редактор кольорів одразу"
-#: gtk/gtkcolorbutton.c:221 gtk/gtkfontbutton.c:524
+#: gtk/gtkcolorbutton.c:252 gtk/gtkfontbutton.c:533
msgid "Whether the dialog is modal"
msgstr "Чи є діалогове вікно модальним"
@@ -1928,7 +1928,7 @@ msgstr "Колір RGBA"
msgid "Color as RGBA"
msgstr "Колір як RGBA"
-#: gtk/gtkcolorswatch.c:507 gtk/gtklabel.c:2323 gtk/gtklistbox.c:3570
+#: gtk/gtkcolorswatch.c:507 gtk/gtklabel.c:2324 gtk/gtklistbox.c:3570
#: gtk/gtklistitem.c:217
msgid "Selectable"
msgstr "Вибирається"
@@ -2059,7 +2059,7 @@ msgid "Menu to use on the title of this column"
msgstr "Меню, яким слід скористатися для заголовка цього стовпчика"
#: gtk/gtkcolumnviewcolumn.c:313 gtk/gtktreeviewcolumn.c:283
-#: gtk/gtkwindow.c:780
+#: gtk/gtkwindow.c:781
msgid "Resizable"
msgstr "Розмір можна змінювати"
@@ -2127,9 +2127,6 @@ msgid "Entry Text Column"
msgstr "Текстовий стовпчик"
#: gtk/gtkcombobox.c:732
-#| msgid ""
-#| "The column in the combo box’s model to associate with strings from the "
-#| "entry if the combo was created with #GtkComboBox:has-entry = %TRUE"
msgid ""
"The column in the combo box’s model to associate with strings from the entry "
"if the combo was created with GtkComboBox:has-entry = %TRUE"
@@ -2318,7 +2315,7 @@ msgid "Error encountered while loading files"
msgstr "Під час завантаження файлів сталася помилка"
#: gtk/gtkdirectorylist.c:284 gtk/gtkmediafile.c:159 gtk/gtkpicture.c:343
-#: gtk/gtkvideo.c:318
+#: gtk/gtkvideo.c:330
msgid "File"
msgstr "Файл"
@@ -2346,7 +2343,7 @@ msgstr "Вміст"
msgid "The content provider for the dragged data"
msgstr "Надавач даних для перетягнутих даних"
-#: gtk/gtkdragsource.c:342 gtk/gtkdroptargetasync.c:388 gtk/gtkdroptarget.c:617
+#: gtk/gtkdragsource.c:342 gtk/gtkdroptargetasync.c:388 gtk/gtkdroptarget.c:621
msgid "Actions"
msgstr "Дії"
@@ -2378,7 +2375,7 @@ msgstr "Містить вказівник"
msgid "Whether the pointer is in the controllers widget or a descendant"
msgstr "Чи перебуває вказівник у віджеті контролерів або підлеглому віджеті"
-#: gtk/gtkdropcontrollermotion.c:246 gtk/gtkdroptarget.c:629
+#: gtk/gtkdropcontrollermotion.c:246 gtk/gtkdroptarget.c:635
msgid "Drop"
msgstr "Скидання"
@@ -2430,33 +2427,33 @@ msgstr "Чи слід показувати запис пошуку у конте
msgid "Expression to determine strings to search for"
msgstr "Вираз, який визначає рядки для пошуку"
-#: gtk/gtkdroptargetasync.c:398 gtk/gtkdroptarget.c:641
+#: gtk/gtkdroptargetasync.c:398 gtk/gtkdroptarget.c:661
msgid "Formats"
msgstr "Формати"
-#: gtk/gtkdroptarget.c:618
+#: gtk/gtkdroptarget.c:622
msgid "The actions supported by this drop target"
msgstr "Дії, підтримку яких передбачено для цієї цілі скидання"
-#: gtk/gtkdroptarget.c:630
+#: gtk/gtkdroptarget.c:636 gtk/gtkdroptarget.c:649 gtk/gtkdroptarget.c:650
msgid "Current drop"
msgstr "Поточне скидання"
-#: gtk/gtkdroptarget.c:642
+#: gtk/gtkdroptarget.c:662
msgid "The supported formats"
msgstr "Підтримувані формати"
-#: gtk/gtkdroptarget.c:670
+#: gtk/gtkdroptarget.c:690
msgid "Preload"
msgstr "Попереднє завантаження"
-#: gtk/gtkdroptarget.c:671
+#: gtk/gtkdroptarget.c:691
msgid "Whether drop data should be preloaded while hovering"
msgstr ""
"Чи має бути попередньо завантажено дані скидання під час наведення "
"вказівника миші"
-#: gtk/gtkdroptarget.c:691
+#: gtk/gtkdroptarget.c:711
msgid "The value for this drop operation"
msgstr "Значення для цієї дії зі скидання"
@@ -2510,11 +2507,11 @@ msgstr "Максимальна ширина у символах"
msgid "The desired maximum width of the entry, in characters"
msgstr "Бажана максимальна ширина поля введення, у символах"
-#: gtk/gtkeditable.c:473 gtk/gtklabel.c:2265
+#: gtk/gtkeditable.c:473 gtk/gtklabel.c:2266
msgid "X align"
msgstr "Вирівнювання за X"
-#: gtk/gtkeditable.c:474 gtk/gtklabel.c:2266
+#: gtk/gtkeditable.c:474 gtk/gtklabel.c:2267
msgid ""
"The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL "
"layouts."
@@ -2538,7 +2535,7 @@ msgstr "Довжина тексту"
msgid "Length of the text currently in the buffer"
msgstr "Довжина теперішнього тексту у буфері"
-#: gtk/gtkentrybuffer.c:372 gtk/gtkentry.c:499 gtk/gtktext.c:772
+#: gtk/gtkentrybuffer.c:372 gtk/gtkentry.c:499 gtk/gtktext.c:773
msgid "Maximum length"
msgstr "Максимальна довжина"
@@ -2546,7 +2543,7 @@ msgstr "Максимальна довжина"
msgid "Maximum number of characters for this entry. Zero if no maximum"
msgstr "Максимальна кількість символів у полі. \"0\" — без обмежень."
-#: gtk/gtkentry.c:487 gtk/gtktext.c:758
+#: gtk/gtkentry.c:487 gtk/gtktext.c:759
msgid "Text Buffer"
msgstr "Буфер тексту"
@@ -2554,11 +2551,11 @@ msgstr "Буфер тексту"
msgid "Text buffer object which actually stores entry text"
msgstr "Буфер тексту є об'єктом, який зберігає текст елемента"
-#: gtk/gtkentry.c:513 gtk/gtktext.c:964
+#: gtk/gtkentry.c:513 gtk/gtktext.c:965
msgid "Visibility"
msgstr "Видимість"
-#: gtk/gtkentry.c:514 gtk/gtktext.c:965
+#: gtk/gtkentry.c:514 gtk/gtktext.c:966
msgid ""
"FALSE displays the “invisible char” instead of the actual text (password "
"mode)"
@@ -2570,7 +2567,7 @@ msgstr ""
msgid "FALSE removes outside bevel from entry"
msgstr "Значення ХИБНІСТЬ(FALSE) вилучає зовнішню фаску поля"
-#: gtk/gtkentry.c:537 gtk/gtktext.c:785
+#: gtk/gtkentry.c:537 gtk/gtktext.c:786
msgid "Invisible character"
msgstr "Невидимий символ"
@@ -2580,13 +2577,13 @@ msgstr ""
"Символ, що використовуватиметься для маскування вмісту поля (в «режимі "
"пароля»)"
-#: gtk/gtkentry.c:549 gtk/gtkpasswordentry.c:455 gtk/gtksearchentry.c:313
-#: gtk/gtktext.c:797
+#: gtk/gtkentry.c:549 gtk/gtkpasswordentry.c:456 gtk/gtksearchentry.c:313
+#: gtk/gtktext.c:798
msgid "Activates default"
msgstr "Активує початковий елемент керування"
-#: gtk/gtkentry.c:550 gtk/gtkpasswordentry.c:456 gtk/gtksearchentry.c:314
-#: gtk/gtktext.c:798
+#: gtk/gtkentry.c:550 gtk/gtkpasswordentry.c:457 gtk/gtksearchentry.c:314
+#: gtk/gtktext.c:799
msgid ""
"Whether to activate the default widget (such as the default button in a "
"dialog) when Enter is pressed"
@@ -2594,7 +2591,7 @@ msgstr ""
"Чи активувати початковий активний віджет (наприклад, початкова активна "
"кнопка в діалозі), коли натиснута клавіша Enter"
-#: gtk/gtkentry.c:561 gtk/gtktext.c:809
+#: gtk/gtkentry.c:561 gtk/gtktext.c:810
msgid "Scroll offset"
msgstr "Зміщення прокрутки"
@@ -2604,19 +2601,19 @@ msgstr ""
"Кількість точок поля, що виходитимуть за ліву межу екрана під час "
"прокручування"
-#: gtk/gtkentry.c:574 gtk/gtktext.c:822
+#: gtk/gtkentry.c:574 gtk/gtktext.c:823
msgid "Truncate multiline"
msgstr "Обрізати багаторядні"
-#: gtk/gtkentry.c:575 gtk/gtktext.c:823
+#: gtk/gtkentry.c:575 gtk/gtktext.c:824
msgid "Whether to truncate multiline pastes to one line."
msgstr "Чи обрізати багаторядні вставки у один рядок."
-#: gtk/gtkentry.c:586 gtk/gtktext.c:834 gtk/gtktextview.c:1056
+#: gtk/gtkentry.c:586 gtk/gtktext.c:835 gtk/gtktextview.c:1057
msgid "Overwrite mode"
msgstr "Режим заміщення"
-#: gtk/gtkentry.c:587 gtk/gtktext.c:835
+#: gtk/gtkentry.c:587 gtk/gtktext.c:836
msgid "Whether new text overwrites existing text"
msgstr "Чи текст, що вводиться заміщує наявний"
@@ -2624,11 +2621,11 @@ msgstr "Чи текст, що вводиться заміщує наявний"
msgid "Length of the text currently in the entry"
msgstr "Довжина поточного тексту у елементі"
-#: gtk/gtkentry.c:611 gtk/gtktext.c:846
+#: gtk/gtkentry.c:611 gtk/gtktext.c:847
msgid "Invisible character set"
msgstr "Вказати невидимих символів"
-#: gtk/gtkentry.c:612 gtk/gtktext.c:847
+#: gtk/gtkentry.c:612 gtk/gtktext.c:848
msgid "Whether the invisible character has been set"
msgstr "Чи невидимі символи вказано"
@@ -2652,7 +2649,7 @@ msgstr ""
"Частина загального обсягу робіт, при виконання якої відбувається приріст "
"індикатора поступу при викликах gtk_entry_progress_pulse()"
-#: gtk/gtkentry.c:654 gtk/gtkpasswordentry.c:444 gtk/gtksearchentry.c:302
+#: gtk/gtkentry.c:654 gtk/gtkpasswordentry.c:445 gtk/gtksearchentry.c:302
msgid "Show text in the entry when it’s empty and unfocused"
msgstr "Показати текст у записі, коли він порожній і поза фокусом"
@@ -2776,11 +2773,11 @@ msgstr "Розмітка контекстної підказки головно
msgid "Secondary icon tooltip markup"
msgstr "Розмітка контекстної підказки додаткового значка"
-#: gtk/gtkentry.c:901 gtk/gtktext.c:877 gtk/gtktextview.c:1087
+#: gtk/gtkentry.c:901 gtk/gtktext.c:878 gtk/gtktextview.c:1088
msgid "IM module"
msgstr "Модуль вводу"
-#: gtk/gtkentry.c:902 gtk/gtktext.c:878 gtk/gtktextview.c:1088
+#: gtk/gtkentry.c:902 gtk/gtktext.c:879 gtk/gtktextview.c:1089
msgid "Which IM module should be used"
msgstr "Модуль вводу, що використовується"
@@ -2792,23 +2789,23 @@ msgstr "Доповнення"
msgid "The auxiliary completion object"
msgstr "Об'єкт допоміжних доповнень"
-#: gtk/gtkentry.c:932 gtk/gtkimcontext.c:322 gtk/gtktext.c:896
-#: gtk/gtktextview.c:1103
+#: gtk/gtkentry.c:932 gtk/gtkimcontext.c:322 gtk/gtktext.c:897
+#: gtk/gtktextview.c:1104
msgid "Purpose"
msgstr "Призначення"
-#: gtk/gtkentry.c:933 gtk/gtkimcontext.c:323 gtk/gtktext.c:897
-#: gtk/gtktextview.c:1104
+#: gtk/gtkentry.c:933 gtk/gtkimcontext.c:323 gtk/gtktext.c:898
+#: gtk/gtktextview.c:1105
msgid "Purpose of the text field"
msgstr "Призначення текстового поля"
-#: gtk/gtkentry.c:947 gtk/gtkimcontext.c:330 gtk/gtktext.c:910
-#: gtk/gtktextview.c:1119
+#: gtk/gtkentry.c:947 gtk/gtkimcontext.c:330 gtk/gtktext.c:911
+#: gtk/gtktextview.c:1120
msgid "hints"
msgstr "підказки"
-#: gtk/gtkentry.c:948 gtk/gtkimcontext.c:331 gtk/gtktext.c:911
-#: gtk/gtktextview.c:1120
+#: gtk/gtkentry.c:948 gtk/gtkimcontext.c:331 gtk/gtktext.c:912
+#: gtk/gtktextview.c:1121
msgid "Hints for the text field behaviour"
msgstr "Підказки з поведінки текстового поля"
@@ -2816,8 +2813,8 @@ msgstr "Підказки з поведінки текстового поля"
msgid "A list of style attributes to apply to the text of the entry"
msgstr "Список атрибутів стилю, які буде застосовано до тексту запису"
-#: gtk/gtkentry.c:977 gtk/gtktext.c:940 gtk/gtktexttag.c:712
-#: gtk/gtktextview.c:1017
+#: gtk/gtkentry.c:977 gtk/gtktext.c:941 gtk/gtktexttag.c:712
+#: gtk/gtktextview.c:1018
msgid "Tabs"
msgstr "Табуляції"
@@ -2834,20 +2831,20 @@ msgstr "Піктограма емодзі"
msgid "Whether to show an icon for Emoji"
msgstr "Чи слід показувати піктограму емодзі"
-#: gtk/gtkentry.c:1002 gtk/gtklabel.c:2454 gtk/gtkpasswordentry.c:480
-#: gtk/gtktext.c:989 gtk/gtktextview.c:1150
+#: gtk/gtkentry.c:1002 gtk/gtklabel.c:2455 gtk/gtkpasswordentry.c:481
+#: gtk/gtktext.c:990 gtk/gtktextview.c:1151
msgid "Extra menu"
msgstr "Додаткове меню"
-#: gtk/gtkentry.c:1003 gtk/gtkpasswordentry.c:481
+#: gtk/gtkentry.c:1003 gtk/gtkpasswordentry.c:482
msgid "Model menu to append to the context menu"
msgstr "Меню моделі, яке слід долучити до контекстного меню"
-#: gtk/gtkentry.c:1015 gtk/gtktext.c:952
+#: gtk/gtkentry.c:1015 gtk/gtktext.c:953
msgid "Enable Emoji completion"
msgstr "Увімкнути завершення емодзі"
-#: gtk/gtkentry.c:1016 gtk/gtktext.c:953
+#: gtk/gtkentry.c:1016 gtk/gtktext.c:954
msgid "Whether to suggest Emoji replacements"
msgstr "Чи пропонувати замінники для емодзі"
@@ -2977,11 +2974,11 @@ msgstr "Чи розширювач був відкритий для показу
msgid "Text of the expander’s label"
msgstr "Текст мітки розгортання"
-#: gtk/gtkexpander.c:359 gtk/gtklabel.c:2222 gtk/gtkmodelbutton.c:1210
+#: gtk/gtkexpander.c:359 gtk/gtklabel.c:2223 gtk/gtkmodelbutton.c:1210
msgid "Use markup"
msgstr "Використовувати розмітку"
-#: gtk/gtkexpander.c:360 gtk/gtklabel.c:2223
+#: gtk/gtkexpander.c:360 gtk/gtklabel.c:2224
msgid "The text of the label includes XML markup. See pango_parse_markup()"
msgstr "Текст позначки включає розмітку XML. Див. pango_parse_markup()"
@@ -3082,7 +3079,7 @@ msgstr "Режим пошуку"
msgid "Subtitle"
msgstr "Підзаголовок"
-#: gtk/gtkfilefilter.c:234
+#: gtk/gtkfilefilter.c:240
msgid "The human-readable name for this filter"
msgstr "Зручна для читання назва цього фільтра"
@@ -3098,7 +3095,7 @@ msgstr "Нарощувальне"
msgid "Filter items incrementally"
msgstr "Нарощувальне фільтрування записів"
-#: gtk/gtkfilterlistmodel.c:586 gtk/gtkselectionfiltermodel.c:225
+#: gtk/gtkfilterlistmodel.c:586 gtk/gtkselectionfiltermodel.c:231
msgid "The model being filtered"
msgstr "Модель, яка фільтрується"
@@ -3189,23 +3186,23 @@ msgstr "Горизонтальний інтервал"
msgid "The amount of horizontal space between two children"
msgstr "Відстань за горизонталлю між двома дочірніми віджетами"
-#: gtk/gtkfontbutton.c:485
+#: gtk/gtkfontbutton.c:494
msgid "The title of the font chooser dialog"
msgstr "Заголовок вікна вибору шрифту"
-#: gtk/gtkfontbutton.c:497
+#: gtk/gtkfontbutton.c:506
msgid "Use font in label"
msgstr "Використати шрифт у позначці"
-#: gtk/gtkfontbutton.c:498
+#: gtk/gtkfontbutton.c:507
msgid "Whether the label is drawn in the selected font"
msgstr "Чи має позначка показуватись вибраним шрифтом"
-#: gtk/gtkfontbutton.c:510
+#: gtk/gtkfontbutton.c:519
msgid "Use size in label"
msgstr "Використовувати розмір у позначці"
-#: gtk/gtkfontbutton.c:511
+#: gtk/gtkfontbutton.c:520
msgid "Whether the label is drawn with the selected font size"
msgstr "Чи має позначка показуватись шрифтом визначеного розміру"
@@ -3487,27 +3484,27 @@ msgstr "Шлях до ресурсів"
msgid "Theme name"
msgstr "Назва теми"
-#: gtk/gtkicontheme.c:3628
+#: gtk/gtkicontheme.c:3631
msgid "file"
msgstr "файл"
-#: gtk/gtkicontheme.c:3629
+#: gtk/gtkicontheme.c:3632
msgid "The file representing the icon"
msgstr "Файл, який відповідає піктограмі"
-#: gtk/gtkicontheme.c:3640 gtk/gtkstack.c:452
+#: gtk/gtkicontheme.c:3643 gtk/gtkstack.c:452
msgid "Icon name"
msgstr "Назва піктограми"
-#: gtk/gtkicontheme.c:3641
+#: gtk/gtkicontheme.c:3644
msgid "The icon name chosen during lookup"
msgstr "Назва піктограми, яку вибрано під час пошуку"
-#: gtk/gtkicontheme.c:3652
+#: gtk/gtkicontheme.c:3655
msgid "Is symbolic"
msgstr "Є символічною"
-#: gtk/gtkicontheme.c:3653
+#: gtk/gtkicontheme.c:3656
msgid "If the icon is symbolic"
msgstr "Чи є піктограма символічною"
@@ -3684,19 +3681,19 @@ msgstr "Чи потрібно додавати стандартну кнопку
msgid "Controls whether the info bar shows its contents or not"
msgstr "Керує тим, чи буде показано вміст інформаційної панелі"
-#: gtk/gtklabel.c:2197
+#: gtk/gtklabel.c:2198
msgid "The text of the label"
msgstr "Текст позначки"
-#: gtk/gtklabel.c:2209
+#: gtk/gtklabel.c:2210
msgid "A list of style attributes to apply to the text of the label"
msgstr "Список стильових ознак для застосування до тексту позначки"
-#: gtk/gtklabel.c:2249 gtk/gtktexttag.c:467 gtk/gtktextview.c:914
+#: gtk/gtklabel.c:2250 gtk/gtktexttag.c:467 gtk/gtktextview.c:915
msgid "Justification"
msgstr "Вирівнювання"
-#: gtk/gtklabel.c:2250
+#: gtk/gtklabel.c:2251
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 "
@@ -3706,53 +3703,53 @@ msgstr ""
"вирівнювання мітки всередині вказаного для неї місця. З цього питання див. "
"GtkLabel::xalign"
-#: gtk/gtklabel.c:2281
+#: gtk/gtklabel.c:2282
msgid "Y align"
msgstr "Вирівнювання за Y"
-#: gtk/gtklabel.c:2282
+#: gtk/gtklabel.c:2283
msgid "The vertical alignment, from 0 (top) to 1 (bottom)"
msgstr "Вертикальне вирівнювання, від 0 (вгору) до 1 (вниз)"
-#: gtk/gtklabel.c:2294
+#: gtk/gtklabel.c:2295
msgid "Line wrap"
msgstr "Перенос рядків"
-#: gtk/gtklabel.c:2295
+#: gtk/gtklabel.c:2296
msgid "If set, wrap lines if the text becomes too wide"
msgstr "Якщо встановлено, занадто довгі рядки переносяться"
-#: gtk/gtklabel.c:2310
+#: gtk/gtklabel.c:2311
msgid "Line wrap mode"
msgstr "Режим переносу рядків"
-#: gtk/gtklabel.c:2311
+#: gtk/gtklabel.c:2312
msgid "If wrap is set, controls how linewrapping is done"
msgstr ""
"Якщо встановлено перенос рядків, контролює як виконувати перенос рядків"
-#: gtk/gtklabel.c:2324
+#: gtk/gtklabel.c:2325
msgid "Whether the label text can be selected with the mouse"
msgstr "Чи може текст позначки бути виділений використовуючи мишу"
-#: gtk/gtklabel.c:2335
+#: gtk/gtklabel.c:2336
msgid "Mnemonic key"
msgstr "Мнемонічна клавіша"
-#: gtk/gtklabel.c:2336
+#: gtk/gtklabel.c:2337
msgid "The mnemonic accelerator key for this label"
msgstr "Мнемонічна клавіша-прискорювач для цієї позначки"
-#: gtk/gtklabel.c:2348
+#: gtk/gtklabel.c:2349
msgid "Mnemonic widget"
msgstr "Мнемонічний віджет"
-#: gtk/gtklabel.c:2349
+#: gtk/gtklabel.c:2350
msgid "The widget to be activated when the label’s mnemonic key is pressed"
msgstr ""
"Віджет, який буде активовано під час натиснення мнемонічної клавіші позначки"
-#: gtk/gtklabel.c:2370
+#: gtk/gtklabel.c:2371
msgid ""
"The preferred place to ellipsize the string, if the label does not have "
"enough room to display the entire string"
@@ -3760,27 +3757,27 @@ msgstr ""
"Бажане місце для багатокрапки у рядку, якщо для показу усього рядка не "
"вистачає місця."
-#: gtk/gtklabel.c:2406
+#: gtk/gtklabel.c:2407
msgid "Single Line Mode"
msgstr "Режим одного рядка"
-#: gtk/gtklabel.c:2407
+#: gtk/gtklabel.c:2408
msgid "Whether the label is in single line mode"
msgstr "Чи знаходиться рядок у режимі одного рядка"
-#: gtk/gtklabel.c:2425
+#: gtk/gtklabel.c:2426
msgid "The desired maximum width of the label, in characters"
msgstr "Бажана максимальна ширина ярлика, у символах"
-#: gtk/gtklabel.c:2441
+#: gtk/gtklabel.c:2442
msgid "Number of lines"
msgstr "Кількість ліній"
-#: gtk/gtklabel.c:2442
+#: gtk/gtklabel.c:2443
msgid "The desired number of lines, when ellipsizing a wrapping label"
msgstr "Число рядків при скороченні мітки з використанням трьох крапок"
-#: gtk/gtklabel.c:2455 gtk/gtktext.c:990 gtk/gtktextview.c:1151
+#: gtk/gtklabel.c:2456 gtk/gtktext.c:991 gtk/gtktextview.c:1152
msgid "Menu model to append to the context menu"
msgstr "Модель меню для долучення до контекстного меню"
@@ -3860,7 +3857,7 @@ msgstr "Чи може користувач активувати пункт"
msgid "Widget used for display"
msgstr "Віджет, який використано для показу"
-#: gtk/gtklistitem.c:193 gtk/gtktreeexpander.c:518 gtk/gtktreelistmodel.c:1107
+#: gtk/gtklistitem.c:193 gtk/gtktreeexpander.c:523 gtk/gtktreelistmodel.c:1107
msgid "Item"
msgstr "Пункт"
@@ -3962,7 +3959,7 @@ msgstr "Чи встановлено мапу для цієї моделі"
msgid "The model being mapped"
msgstr "Модель для створення мапи"
-#: gtk/gtkmediacontrols.c:276 gtk/gtkvideo.c:342
+#: gtk/gtkmediacontrols.c:276 gtk/gtkvideo.c:354
msgid "Media Stream"
msgstr "Медіапотік"
@@ -4058,7 +4055,7 @@ msgstr "Позиціювання"
msgid "Set while a seek is in progress"
msgstr "Встановлюється на час виконання позиціювання"
-#: gtk/gtkmediastream.c:422 gtk/gtkvideo.c:330
+#: gtk/gtkmediastream.c:422 gtk/gtkvideo.c:342
msgid "Loop"
msgstr "Цикл"
@@ -4084,34 +4081,54 @@ msgstr "Гучність"
msgid "Volume of the audio stream."
msgstr "Гучність відтворення потоку звукових даних."
-#: gtk/gtkmenubutton.c:356 gtk/gtkpopovermenubar.c:636 gtk/gtkpopovermenu.c:583
+#: gtk/gtkmenubutton.c:401 gtk/gtkpopovermenubar.c:636 gtk/gtkpopovermenu.c:602
msgid "Menu model"
msgstr "Модель меню"
-#: gtk/gtkmenubutton.c:357
+#: gtk/gtkmenubutton.c:402
msgid "The model from which the popup is made."
msgstr "Модель, за якою зроблено контекстне вікно."
-#: gtk/gtkmenubutton.c:370
+#: gtk/gtkmenubutton.c:415
msgid "The direction the arrow should point."
msgstr "Напрямок, у якому вказує стрілка."
-#: gtk/gtkmenubutton.c:382 gtk/gtkmodelbutton.c:1242
+#: gtk/gtkmenubutton.c:427 gtk/gtkmodelbutton.c:1242
msgid "Popover"
msgstr "Контекстний віджет"
-#: gtk/gtkmenubutton.c:383
+#: gtk/gtkmenubutton.c:428
msgid "The popover"
msgstr "Контекстний віджет"
-#: gtk/gtkmenubutton.c:407
+#: gtk/gtkmenubutton.c:453
+#| msgid "Has Arrow"
+msgid "Always Show Arrow"
+msgstr "Завжди показувати стрілку"
+
+#: gtk/gtkmenubutton.c:454
+#| msgid "Whether to show an icon for revealing the content"
+msgid "Whether to show a dropdown arrow even when using an icon"
+msgstr "Чи слід показувати стрілку спадного списку, навіть якщо використано піктограму"
+
+#: gtk/gtkmenubutton.c:466
msgid "The label for the button"
msgstr "Мітка для кнопки"
-#: gtk/gtkmenubutton.c:430
+#: gtk/gtkmenubutton.c:489
msgid "Has frame"
msgstr "Має рамку"
+#: gtk/gtkmenubutton.c:505
+#| msgid "Primary GIcon"
+msgid "Primary"
+msgstr "Основне"
+
+#: gtk/gtkmenubutton.c:506
+#| msgid "Whether the button has a frame"
+msgid "Whether the menubutton acts as a primary menu"
+msgstr "Чи працює кнопка меню як основне меню"
+
#: gtk/gtkmessagedialog.c:373
msgid "Message Buttons"
msgstr "Кнопки повідомлення"
@@ -4253,11 +4270,11 @@ msgstr ""
msgid "Whether the dialog is currently visible"
msgstr "Чи цей діалог видимий зараз"
-#: gtk/gtknativedialog.c:248 gtk/gtkwindow.c:946
+#: gtk/gtknativedialog.c:248 gtk/gtkwindow.c:947
msgid "Transient for Window"
msgstr "Прозорий для вікна"
-#: gtk/gtknativedialog.c:249 gtk/gtkwindow.c:947
+#: gtk/gtknativedialog.c:249 gtk/gtkwindow.c:948
msgid "The transient parent of the dialog"
msgstr "Прозорий батьківський віджет діалогу"
@@ -4550,11 +4567,11 @@ msgstr "Другий дочірній"
msgid "The second child"
msgstr "Другий дочірній"
-#: gtk/gtkpasswordentry.c:467
+#: gtk/gtkpasswordentry.c:468
msgid "Show Peek Icon"
msgstr "Показувати піктограму підхоплення"
-#: gtk/gtkpasswordentry.c:468
+#: gtk/gtkpasswordentry.c:469
msgid "Whether to show an icon for revealing the content"
msgstr "Чи слід показувати піктограму звільнення вмісту"
@@ -4745,11 +4762,11 @@ msgstr "Позиція для розміщення вікна-бульбашки
msgid "Whether to dismiss the popover on outside clicks"
msgstr "Чи слід закривати накладне меню при клацанні ззовні"
-#: gtk/gtkpopover.c:1790 gtk/gtkwindow.c:1014
+#: gtk/gtkpopover.c:1790 gtk/gtkwindow.c:1015
msgid "Default widget"
msgstr "Типовий віджет"
-#: gtk/gtkpopover.c:1791 gtk/gtkwindow.c:1015
+#: gtk/gtkpopover.c:1791 gtk/gtkwindow.c:1016
msgid "The default widget"
msgstr "Типовий віджет"
@@ -4783,15 +4800,15 @@ msgstr ""
msgid "The model from which the bar is made."
msgstr "Модель, на основі якої створено панель."
-#: gtk/gtkpopovermenu.c:570
+#: gtk/gtkpopovermenu.c:589
msgid "Visible submenu"
msgstr "Видиме підменю"
-#: gtk/gtkpopovermenu.c:571
+#: gtk/gtkpopovermenu.c:590
msgid "The name of the visible submenu"
msgstr "Назва видимого підменю"
-#: gtk/gtkpopovermenu.c:584
+#: gtk/gtkpopovermenu.c:603
msgid "The model from which the menu is made."
msgstr "Модель, для якої створено меню."
@@ -5907,21 +5924,21 @@ msgstr "Перемикач"
msgid "The trigger for this shortcut"
msgstr "Перемикач для цього скорочення"
-#: gtk/gtkshortcutcontroller.c:552
+#: gtk/gtkshortcutcontroller.c:565
msgid "Mnemonic modifiers"
msgstr "Модифікатори мнемоніки"
-#: gtk/gtkshortcutcontroller.c:553
+#: gtk/gtkshortcutcontroller.c:566
msgid "The modifiers to be pressed to allow mnemonics activation"
msgstr ""
"Клавіші-модифікатори, які має бути натиснуто, щоб уможливити активацію "
"мнемоніки"
-#: gtk/gtkshortcutcontroller.c:566
+#: gtk/gtkshortcutcontroller.c:579
msgid "A list model to take shortcuts from"
msgstr "Модель списку, з якої слід брати скорочення"
-#: gtk/gtkshortcutcontroller.c:578
+#: gtk/gtkshortcutcontroller.c:591
msgid "What scope the shortcuts will be handled in"
msgstr "Область, у якій оброблятимуться скорочення"
@@ -6099,19 +6116,19 @@ msgstr "Оцінка залишкових неупорядкованих зап
msgid "The sorter for this model"
msgstr "Сортувальник для цієї моделі"
-#: gtk/gtkspinbutton.c:386
+#: gtk/gtkspinbutton.c:387
msgid "Climb Rate"
msgstr "Прискорення"
-#: gtk/gtkspinbutton.c:387
+#: gtk/gtkspinbutton.c:388
msgid "The acceleration rate when you hold down a button or key"
msgstr "Величина прискорення при утриманні натиснутої кнопки або клавіші"
-#: gtk/gtkspinbutton.c:411
+#: gtk/gtkspinbutton.c:412
msgid "Snap to Ticks"
msgstr "Доводити до найближчих"
-#: gtk/gtkspinbutton.c:412
+#: gtk/gtkspinbutton.c:413
msgid ""
"Whether erroneous values are automatically changed to a spin button’s "
"nearest step increment"
@@ -6119,43 +6136,43 @@ msgstr ""
"Чи будуть недозволені значення автоматично замінятися на найближче дозволене "
"значення"
-#: gtk/gtkspinbutton.c:423
+#: gtk/gtkspinbutton.c:424
msgid "Numeric"
msgstr "Числове"
-#: gtk/gtkspinbutton.c:424
+#: gtk/gtkspinbutton.c:425
msgid "Whether non-numeric characters should be ignored"
msgstr "Чи будуть припускатись не цифрові символи"
-#: gtk/gtkspinbutton.c:435
+#: gtk/gtkspinbutton.c:436
msgid "Wrap"
msgstr "Перенос"
-#: gtk/gtkspinbutton.c:436
+#: gtk/gtkspinbutton.c:437
msgid "Whether a spin button should wrap upon reaching its limits"
msgstr ""
"Чи буде лічильник переходити до протилежного кінця шкали під час досягнення "
"максимальних значень"
-#: gtk/gtkspinbutton.c:448
+#: gtk/gtkspinbutton.c:449
msgid "Update Policy"
msgstr "Правило оновлення"
-#: gtk/gtkspinbutton.c:449
+#: gtk/gtkspinbutton.c:450
msgid ""
"Whether the spin button should update always, or only when the value is legal"
msgstr ""
"Чи має лічильник поновлюватися постійно, або якщо значення є допустимим"
-#: gtk/gtkspinbutton.c:462
+#: gtk/gtkspinbutton.c:463
msgid "Reads the current value, or sets a new value"
msgstr "Зчитує поточне чи встановлює нове значення"
-#: gtk/gtkspinner.c:239
+#: gtk/gtkspinner.c:229
msgid "Spinning"
msgstr "Обертання"
-#: gtk/gtkspinner.c:240
+#: gtk/gtkspinner.c:230
msgid "Whether the spinner is spinning"
msgstr "Чи має вертушка крутитися"
@@ -6251,8 +6268,8 @@ msgstr ""
msgid "A selection model with the stacks pages"
msgstr "Модель вибору із стосами сторінок"
-#: gtk/gtkstacksidebar.c:369 gtk/gtkstackswitcher.c:517
-#: gtk/gtkstackswitcher.c:518
+#: gtk/gtkstacksidebar.c:369 gtk/gtkstackswitcher.c:551
+#: gtk/gtkstackswitcher.c:552
msgid "Stack"
msgstr "Стос"
@@ -6304,89 +6321,89 @@ msgstr "Чи перемикач увімкнений, чи вимкнений"
msgid "The backend state"
msgstr "Стан модуля"
-#: gtk/gtktextbuffer.c:452
+#: gtk/gtktextbuffer.c:460
msgid "Tag Table"
msgstr "Таблиця ярликів"
-#: gtk/gtktextbuffer.c:453
+#: gtk/gtktextbuffer.c:461
msgid "Text Tag Table"
msgstr "Таблиця текстових ярликів"
-#: gtk/gtktextbuffer.c:470
+#: gtk/gtktextbuffer.c:478
msgid "Current text of the buffer"
msgstr "Поточний текст буфера"
-#: gtk/gtktextbuffer.c:481
+#: gtk/gtktextbuffer.c:489
msgid "Has selection"
msgstr "Є виділення"
-#: gtk/gtktextbuffer.c:482
+#: gtk/gtktextbuffer.c:490
msgid "Whether the buffer has some text currently selected"
msgstr "Чи у поточному буфер виділено якийсь текст"
-#: gtk/gtktextbuffer.c:493
+#: gtk/gtktextbuffer.c:501
msgid "Can Undo"
msgstr "Можна скасовувати"
-#: gtk/gtktextbuffer.c:494
+#: gtk/gtktextbuffer.c:502
msgid "If the buffer can have the last action undone"
msgstr "Чи можна скасовувати останню дію у буфері"
-#: gtk/gtktextbuffer.c:505
+#: gtk/gtktextbuffer.c:513
msgid "Can Redo"
msgstr "Можна повторювати"
-#: gtk/gtktextbuffer.c:506
+#: gtk/gtktextbuffer.c:514
msgid "If the buffer can have the last undone action reapplied"
msgstr "Чи можна повторювати останню скасовану дію у буфері"
-#: gtk/gtktextbuffer.c:532
+#: gtk/gtktextbuffer.c:540
msgid "Cursor position"
msgstr "Позиція курсора"
-#: gtk/gtktextbuffer.c:533
+#: gtk/gtktextbuffer.c:541
msgid ""
"The position of the insert mark (as offset from the beginning of the buffer)"
msgstr "Позиція знаку вставки (як зсув з початку буфера)"
-#: gtk/gtktext.c:759
+#: gtk/gtktext.c:760
msgid "Text buffer object which actually stores self text"
msgstr "Буфер тексту є об'єктом, який зберігає текст елемента"
-#: gtk/gtktext.c:773
+#: gtk/gtktext.c:774
msgid "Maximum number of characters for this self. Zero if no maximum"
msgstr "Максимальна кількість символів для цього об'єкта. «0» — без обмежень."
-#: gtk/gtktext.c:786
+#: gtk/gtktext.c:787
msgid "The character to use when masking self contents (in “password mode”)"
msgstr ""
"Символ, що використовуватиметься для маскування вмісту поля (у «режимі "
"пароля»)"
-#: gtk/gtktext.c:810
+#: gtk/gtktext.c:811
msgid "Number of pixels of the text scrolled off the screen to the left"
msgstr ""
"Кількість точок тексту, що виходитимуть за ліву межу екрана під час "
"прокручування"
-#: gtk/gtktext.c:860
+#: gtk/gtktext.c:861
msgid "Show text in the GtkText when it’s empty and unfocused"
msgstr "Показати текст у GtkText, коли він порожній і поза фокусом"
-#: gtk/gtktext.c:929
+#: gtk/gtktext.c:930
msgid "A list of style attributes to apply to the text of the GtkText"
msgstr "Список атрибутів стилю, які буде застосовано до GtkText"
-#: gtk/gtktext.c:941
+#: gtk/gtktext.c:942
msgid "A list of tabstop locations to apply to the text of the GtkText"
msgstr ""
"Перелік місцезнаходжень зупинок табуляції, що застосовуються до GtkText"
-#: gtk/gtktext.c:976
+#: gtk/gtktext.c:977
msgid "Propagate text width"
msgstr "Передавати ширину тексту"
-#: gtk/gtktext.c:977
+#: gtk/gtktext.c:978
msgid "Whether the entry should grow and shrink with the content"
msgstr "Чи має об'єкт збільшувати чи зменшувати розміри, залежно від вмісту"
@@ -6477,7 +6494,7 @@ msgstr ""
"шрифту. Ця властивість до змін у темі, і тому є рекомендованою. Pango "
"визначає декілька масштабів, наприклад, PANGO_SCALE_X_LARGE"
-#: gtk/gtktexttag.c:468 gtk/gtktextview.c:915
+#: gtk/gtktexttag.c:468 gtk/gtktextview.c:916
msgid "Left, right, or center justification"
msgstr "Ліве, праве чи центральне вирівнювання"
@@ -6494,7 +6511,7 @@ msgstr ""
msgid "Left margin"
msgstr "Лівий відступ"
-#: gtk/gtktexttag.c:501 gtk/gtktextview.c:935
+#: gtk/gtktexttag.c:501 gtk/gtktextview.c:936
msgid "Width of the left margin in pixels"
msgstr "Ширина лівого відступу в точках"
@@ -6502,15 +6519,15 @@ msgstr "Ширина лівого відступу в точках"
msgid "Right margin"
msgstr "Правий відступ"
-#: gtk/gtktexttag.c:516 gtk/gtktextview.c:954
+#: gtk/gtktexttag.c:516 gtk/gtktextview.c:955
msgid "Width of the right margin in pixels"
msgstr "Ширина правого відступу в точках"
-#: gtk/gtktexttag.c:530 gtk/gtktextview.c:1004
+#: gtk/gtktexttag.c:530 gtk/gtktextview.c:1005
msgid "Indent"
msgstr "Відступ"
-#: gtk/gtktexttag.c:531 gtk/gtktextview.c:1005
+#: gtk/gtktexttag.c:531 gtk/gtktextview.c:1006
msgid "Amount to indent the paragraph, in pixels"
msgstr "Величина відступу абзацу в точках"
@@ -6526,7 +6543,7 @@ msgstr ""
msgid "Pixels above lines"
msgstr "Інтервал над рядками"
-#: gtk/gtktexttag.c:563 gtk/gtktextview.c:849
+#: gtk/gtktexttag.c:563 gtk/gtktextview.c:850
msgid "Pixels of blank space above paragraphs"
msgstr "Інтервал, в точках растру, в просторі над абзацами"
@@ -6534,7 +6551,7 @@ msgstr "Інтервал, в точках растру, в просторі на
msgid "Pixels below lines"
msgstr "Інтервал під рядками"
-#: gtk/gtktexttag.c:578 gtk/gtktextview.c:862
+#: gtk/gtktexttag.c:578 gtk/gtktextview.c:863
msgid "Pixels of blank space below paragraphs"
msgstr "Інтервал, в точках растру, в просторі під абзацами"
@@ -6542,7 +6559,7 @@ msgstr "Інтервал, в точках растру, в просторі пі
msgid "Pixels inside wrap"
msgstr "Інтервал в абзаці"
-#: gtk/gtktexttag.c:593 gtk/gtktextview.c:875
+#: gtk/gtktexttag.c:593 gtk/gtktextview.c:876
msgid "Pixels of blank space between wrapped lines in a paragraph"
msgstr "Інтервал, в точках растру, між перенесеними рядками у абзаці"
@@ -6578,12 +6595,12 @@ msgstr "Закреслювання RGBA"
msgid "Color of strikethrough for this text"
msgstr "Колір закреслювання для цього тексту"
-#: gtk/gtktexttag.c:699 gtk/gtktextview.c:901
+#: gtk/gtktexttag.c:699 gtk/gtktextview.c:902
msgid ""
"Whether to wrap lines never, at word boundaries, or at character boundaries"
msgstr "Ніколи не переносити рядки, чи переносити по межі слів чи по символам"
-#: gtk/gtktexttag.c:713 gtk/gtktextview.c:1018
+#: gtk/gtktexttag.c:713 gtk/gtktextview.c:1019
msgid "Custom tabs for this text"
msgstr "Нетипові табуляції для цього тексту"
@@ -6835,79 +6852,79 @@ msgstr "Встановлено вставляння переносів"
msgid "Whether this tag affects insertion of hyphens"
msgstr "Чи впливає цей теґ на вставляння переносів"
-#: gtk/gtktextview.c:848
+#: gtk/gtktextview.c:849
msgid "Pixels Above Lines"
msgstr "Точок над рядками"
-#: gtk/gtktextview.c:861
+#: gtk/gtktextview.c:862
msgid "Pixels Below Lines"
msgstr "Точок під рядками"
-#: gtk/gtktextview.c:874
+#: gtk/gtktextview.c:875
msgid "Pixels Inside Wrap"
msgstr "Точок в переносі"
-#: gtk/gtktextview.c:900
+#: gtk/gtktextview.c:901
msgid "Wrap Mode"
msgstr "Режим переносу"
-#: gtk/gtktextview.c:934
+#: gtk/gtktextview.c:935
msgid "Left Margin"
msgstr "Лівий відступ"
-#: gtk/gtktextview.c:953
+#: gtk/gtktextview.c:954
msgid "Right Margin"
msgstr "Правий відступ"
-#: gtk/gtktextview.c:972
+#: gtk/gtktextview.c:973
msgid "Top Margin"
msgstr "Верхнє поле"
-#: gtk/gtktextview.c:973
+#: gtk/gtktextview.c:974
msgid "Height of the top margin in pixels"
msgstr "Висота верхнього поля у пікселях"
-#: gtk/gtktextview.c:991
+#: gtk/gtktextview.c:992
msgid "Bottom Margin"
msgstr "Нижнє поле"
-#: gtk/gtktextview.c:992
+#: gtk/gtktextview.c:993
msgid "Height of the bottom margin in pixels"
msgstr "Висота нижнього поля у пікселях"
-#: gtk/gtktextview.c:1030
+#: gtk/gtktextview.c:1031
msgid "Cursor Visible"
msgstr "Видимий курсор"
-#: gtk/gtktextview.c:1031
+#: gtk/gtktextview.c:1032
msgid "If the insertion cursor is shown"
msgstr "Чи показується курсор вставляння"
-#: gtk/gtktextview.c:1043
+#: gtk/gtktextview.c:1044
msgid "Buffer"
msgstr "Буфер"
-#: gtk/gtktextview.c:1044
+#: gtk/gtktextview.c:1045
msgid "The buffer which is displayed"
msgstr "Буфер, що показано"
-#: gtk/gtktextview.c:1057
+#: gtk/gtktextview.c:1058
msgid "Whether entered text overwrites existing contents"
msgstr "Чи текст, що вводиться заміщує наявний"
-#: gtk/gtktextview.c:1069
+#: gtk/gtktextview.c:1070
msgid "Accepts tab"
msgstr "Допускаються табулятори"
-#: gtk/gtktextview.c:1070
+#: gtk/gtktextview.c:1071
msgid "Whether Tab will result in a tab character being entered"
msgstr "Чи натискання Tab призводить до вводу символу табуляції"
-#: gtk/gtktextview.c:1137
+#: gtk/gtktextview.c:1138
msgid "Monospace"
msgstr "Моноширинний"
-#: gtk/gtktextview.c:1138
+#: gtk/gtktextview.c:1139
msgid "Whether to use a monospace font"
msgstr "Чи використовувати моноширинний шрифт"
@@ -6919,23 +6936,23 @@ msgstr "Тип вікна"
msgid "The GtkTextWindowType"
msgstr "GtkTextWindowType"
-#: gtk/gtktogglebutton.c:289
+#: gtk/gtktogglebutton.c:292
msgid "The toggle button whose group this widget belongs to."
msgstr "Кнопка-перемикач, визначає, до чиєї групи належить цей віджет."
-#: gtk/gtktreeexpander.c:507
+#: gtk/gtktreeexpander.c:512
msgid "The child widget with the actual contents"
msgstr "Дочірній віджет, який містить самі дані"
-#: gtk/gtktreeexpander.c:519
+#: gtk/gtktreeexpander.c:524
msgid "The item held by this expander's row"
msgstr "Запис, який зберігається у цьому рядку розгортання"
-#: gtk/gtktreeexpander.c:530
+#: gtk/gtktreeexpander.c:535
msgid "List row"
msgstr "Рядок списку"
-#: gtk/gtktreeexpander.c:531
+#: gtk/gtktreeexpander.c:536
msgid "The list row to track for expander state"
msgstr "Рядок списку для стеження за станом розгортання"
@@ -7250,23 +7267,23 @@ msgstr ""
"Ідентифікатор сортування стовпчика, за яким сортується цей стовпчик, коли "
"він виділений для сортування"
-#: gtk/gtkvideo.c:306
+#: gtk/gtkvideo.c:318
msgid "Autoplay"
msgstr "Автовідтворення"
-#: gtk/gtkvideo.c:307
+#: gtk/gtkvideo.c:319
msgid "If playback should begin automatically"
msgstr "Чи має розпочинатися відтворення автоматично"
-#: gtk/gtkvideo.c:319
+#: gtk/gtkvideo.c:331
msgid "The video file played back"
msgstr "Відеофайл, який відтворюється"
-#: gtk/gtkvideo.c:331
+#: gtk/gtkvideo.c:343
msgid "If new media streams should be set to loop"
msgstr "Чи слід зациклювати відтворення нових потоків мультимедійних даних"
-#: gtk/gtkvideo.c:343
+#: gtk/gtkvideo.c:355
msgid "The media stream played"
msgstr "Мультимедійний потік, що відтворюється"
@@ -7540,29 +7557,29 @@ msgstr ""
msgid "Observed widget"
msgstr "Спостережуваний віджет"
-#: gtk/gtkwindow.c:756
+#: gtk/gtkwindow.c:757
msgid "Window Title"
msgstr "Заголовок вікна"
-#: gtk/gtkwindow.c:757
+#: gtk/gtkwindow.c:758
msgid "The title of the window"
msgstr "Заголовок вікна"
-#: gtk/gtkwindow.c:768
+#: gtk/gtkwindow.c:769
msgid "Startup ID"
msgstr "Початковий ідентифікатор"
-#: gtk/gtkwindow.c:769
+#: gtk/gtkwindow.c:770
msgid "Unique startup identifier for the window used by startup-notification"
msgstr ""
"Унікальний початковий ідентифікатор вікна, що використовується startup-"
"notification"
-#: gtk/gtkwindow.c:781
+#: gtk/gtkwindow.c:782
msgid "If TRUE, users can resize the window"
msgstr "Якщо істинно, то користувач може змінювати розмір вікна"
-#: gtk/gtkwindow.c:793
+#: gtk/gtkwindow.c:794
msgid ""
"If TRUE, the window is modal (other windows are not usable while this one is "
"up)"
@@ -7570,124 +7587,124 @@ msgstr ""
"Якщо істинно, то вікно є модальним (інші вікна не можуть використовуватися, "
"доки це вікно існує)"
-#: gtk/gtkwindow.c:804
+#: gtk/gtkwindow.c:805
msgid "Default Width"
msgstr "Типова ширина"
-#: gtk/gtkwindow.c:805
+#: gtk/gtkwindow.c:806
msgid "The default width of the window"
msgstr "Типова ширина вікна"
-#: gtk/gtkwindow.c:817
+#: gtk/gtkwindow.c:818
msgid "Default Height"
msgstr "Типова висота"
-#: gtk/gtkwindow.c:818
+#: gtk/gtkwindow.c:819
msgid "The default height of the window"
msgstr "Типова висота вікна"
-#: gtk/gtkwindow.c:830
+#: gtk/gtkwindow.c:831
msgid "Destroy with Parent"
msgstr "Знищувати з батьківським"
-#: gtk/gtkwindow.c:831
+#: gtk/gtkwindow.c:832
msgid "If this window should be destroyed when the parent is destroyed"
msgstr "Чи має це вікно знищуватись разом з батьківським"
-#: gtk/gtkwindow.c:842
+#: gtk/gtkwindow.c:843
msgid "Hide on close"
msgstr "Приховувати при закритті"
-#: gtk/gtkwindow.c:843
+#: gtk/gtkwindow.c:844
msgid "If this window should be hidden when the user clicks the close button"
msgstr ""
"Чи має бути це вікно приховано, коли користувач натискає кнопку закриття"
-#: gtk/gtkwindow.c:857
+#: gtk/gtkwindow.c:858
msgid "Mnemonics Visible"
msgstr "Мнемоніка видима"
-#: gtk/gtkwindow.c:858
+#: gtk/gtkwindow.c:859
msgid "Whether mnemonics are currently visible in this window"
msgstr "Чи мнемоніка наразі є видимою у цьому вікні"
-#: gtk/gtkwindow.c:872
+#: gtk/gtkwindow.c:873
msgid "Focus Visible"
msgstr "Видимість фокусу"
-#: gtk/gtkwindow.c:873
+#: gtk/gtkwindow.c:874
msgid "Whether focus rectangles are currently visible in this window"
msgstr "Чи фокус прямокутника наразі є видимим у цьому вікні"
-#: gtk/gtkwindow.c:887
+#: gtk/gtkwindow.c:888
msgid "Name of the themed icon for this window"
msgstr "Назва значка з теми для цього вікна"
-#: gtk/gtkwindow.c:899
+#: gtk/gtkwindow.c:900
msgid "The display that will display this window"
msgstr "Дисплей, на якому буде показано це вікно"
-#: gtk/gtkwindow.c:910
+#: gtk/gtkwindow.c:911
msgid "Is Active"
msgstr "Активне"
-#: gtk/gtkwindow.c:911
+#: gtk/gtkwindow.c:912
msgid "Whether the toplevel is the current active window"
msgstr "Чи вікно найвищого рівня є поточним активним вікном"
-#: gtk/gtkwindow.c:922
+#: gtk/gtkwindow.c:923
msgid "Decorated"
msgstr "Оздоблене"
-#: gtk/gtkwindow.c:923
+#: gtk/gtkwindow.c:924
msgid "Whether the window should be decorated by the window manager"
msgstr "Чи вікно повинно бути прикрашене менеджером вікон"
-#: gtk/gtkwindow.c:934
+#: gtk/gtkwindow.c:935
msgid "Deletable"
msgstr "Може видалятись"
-#: gtk/gtkwindow.c:935
+#: gtk/gtkwindow.c:936
msgid "Whether the window frame should have a close button"
msgstr "Чи кадр вікна повинен мати кнопку закривання"
-#: gtk/gtkwindow.c:964
+#: gtk/gtkwindow.c:965
msgid "Is Maximized"
msgstr "Чи розгорнуте"
-#: gtk/gtkwindow.c:965
+#: gtk/gtkwindow.c:966
msgid "Whether the window is maximized"
msgstr "Чи вікно розгорнуте"
-#: gtk/gtkwindow.c:982
+#: gtk/gtkwindow.c:983
msgid "Is fullscreen"
msgstr "Чи є повноекранним"
-#: gtk/gtkwindow.c:983
+#: gtk/gtkwindow.c:984
msgid "Whether the window is fullscreen"
msgstr "Чи розкрито вікно на увесь екран"
-#: gtk/gtkwindow.c:1002
+#: gtk/gtkwindow.c:1003
msgid "GtkApplication"
msgstr "GtkApplication"
-#: gtk/gtkwindow.c:1003
+#: gtk/gtkwindow.c:1004
msgid "The GtkApplication for the window"
msgstr "GtkApplication для вікна"
-#: gtk/gtkwindow.c:1026
+#: gtk/gtkwindow.c:1027
msgid "Focus widget"
msgstr "Фокусний віджет"
-#: gtk/gtkwindow.c:1027
+#: gtk/gtkwindow.c:1028
msgid "The focus widget"
msgstr "Фокусний віджет"
-#: gtk/gtkwindow.c:1053
+#: gtk/gtkwindow.c:1054
msgid "Handle Menubar accels"
msgstr "Обробка скорочень панелі меню"
-#: gtk/gtkwindow.c:1054
+#: gtk/gtkwindow.c:1055
msgid "Whether the window should handle F10"
msgstr "Чи має вікно обробляти F10"
@@ -7725,22 +7742,6 @@ msgstr "gl-контекст"
msgid "GL context to use for rendering"
msgstr "Контекст GL, яким слід скористатися для обробки"
-#: modules/printbackends/gtkprintercloudprint.c:137
-msgid "Cloud Print account"
-msgstr "Обліковий запис служби віртуального друку"
-
-#: modules/printbackends/gtkprintercloudprint.c:138
-msgid "GtkCloudprintAccount instance"
-msgstr "Екземпляр GtkCloudprintAccount"
-
-#: modules/printbackends/gtkprintercloudprint.c:147
-msgid "Printer ID"
-msgstr "Ід. принтера"
-
-#: modules/printbackends/gtkprintercloudprint.c:148
-msgid "Cloud Print printer ID"
-msgstr "Ід. принтера служби віртуального друку"
-
#: modules/printbackends/gtkprintercups.c:93
msgid "Color Profile Title"
msgstr "Назва профілю кольору"
@@ -7749,6 +7750,18 @@ msgstr "Назва профілю кольору"
msgid "The title of the color profile to use"
msgstr "Заголовок вікна вибору профілю кольору"
+#~ msgid "Cloud Print account"
+#~ msgstr "Обліковий запис служби віртуального друку"
+
+#~ msgid "GtkCloudprintAccount instance"
+#~ msgstr "Екземпляр GtkCloudprintAccount"
+
+#~ msgid "Printer ID"
+#~ msgstr "Ід. принтера"
+
+#~ msgid "Cloud Print printer ID"
+#~ msgstr "Ід. принтера служби віртуального друку"
+
#~ msgid ""
#~ "The selected day (as a number between 1 and 31, or 0 to unselect the "
#~ "currently selected day)"
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 4805b90e27..aa957ea65f 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -33,6 +33,8 @@ gdk/win32/gdkclipdrop-win32.c
gdk/win32/gdkcursor-win32.c
gdk/win32/gdkdrop-win32.c
gdk/win32/gdkglcontext-win32.c
+gdk/win32/gdkglcontext-win32-egl.c
+gdk/win32/gdkglcontext-win32-wgl.c
gdk/win32/gdkhdataoutputstream-win32.c
gdk/win32/gdkmain-win32.c
gdk/x11/gdkapplaunchcontext-x11.c
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 75c777a5ed..5efc64b91d 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -27,8 +27,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GTK\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
-"POT-Creation-Date: 2021-01-25 18:51+0000\n"
-"PO-Revision-Date: 2021-01-30 12:40-0300\n"
+"POT-Creation-Date: 2021-07-10 08:45+0000\n"
+"PO-Revision-Date: 2021-07-10 14:11-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
@@ -36,55 +36,55 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"X-Generator: Gtranslator 3.38.0\n"
+"X-Generator: Gtranslator 40.0\n"
# Não encontrei tradução melhor para broadway
-#: gdk/broadway/gdkbroadway-server.c:133
+#: gdk/broadway/gdkbroadway-server.c:135
#, c-format
msgid "Broadway display type not supported: %s"
msgstr "Sem suporte ao tipo de tela Broadway: %s"
-#: gdk/gdkclipboard.c:239
+#: gdk/gdkclipboard.c:231
msgid "This clipboard cannot store data."
msgstr "Essa área de transferência não pode armazenar dados."
-#: gdk/gdkclipboard.c:294 gdk/gdkclipboard.c:789 gdk/gdkclipboard.c:1087
+#: gdk/gdkclipboard.c:286 gdk/gdkclipboard.c:792 gdk/gdkclipboard.c:1092
msgid "Cannot read from empty clipboard."
msgstr "Não é possível ler de área de transferência vazia."
-#: gdk/gdkclipboard.c:325 gdk/gdkclipboard.c:1137 gdk/gdkdrag.c:638
+#: gdk/gdkclipboard.c:317 gdk/gdkclipboard.c:1142 gdk/gdkdrag.c:632
msgid "No compatible formats to transfer clipboard contents."
msgstr ""
"Nenhum formato compatível para transferir conteúdo de área de transferência."
-#: gdk/gdkcontentprovider.c:108 gdk/gdkcontentproviderimpl.c:311
-#: gdk/gdkcontentproviderimpl.c:531
+#: gdk/gdkcontentprovider.c:105 gdk/gdkcontentproviderimpl.c:313
+#: gdk/gdkcontentproviderimpl.c:532
#, c-format
msgid "Cannot provide contents as “%s”"
msgstr "Não foi possível fornecer o conteúdo como “%s”"
-#: gdk/gdkcontentprovider.c:129
+#: gdk/gdkcontentprovider.c:126
#, c-format
msgid "Cannot provide contents as %s"
msgstr "Não foi possível fornecer o conteúdo como %s"
-#: gdk/gdkdrop.c:118
+#: gdk/gdkdrop.c:130
msgid "Drag’n’drop from other applications is not supported."
msgstr "Não há suporte a arrastar e soltar de outros aplicativos."
-#: gdk/gdkdrop.c:151
+#: gdk/gdkdrop.c:163
msgid "No compatible formats to transfer contents."
msgstr "Nenhum formato compatível para transferir conteúdo de transferência."
-#: gdk/gdksurface.c:1102
+#: gdk/gdksurface.c:1118
msgid "GL support disabled via GDK_DEBUG"
msgstr "Suporte a GL desabilitado via GDK_DEBUG"
-#: gdk/gdksurface.c:1113
+#: gdk/gdksurface.c:1129
msgid "The current backend does not support OpenGL"
msgstr "O backend não oferece suporte a OpenGL"
-#: gdk/gdksurface.c:1221
+#: gdk/gdksurface.c:1235
msgid "Vulkan support disabled via GDK_DEBUG"
msgstr "Suporte a Vulkan desabilitado via GDK_DEBUG"
@@ -164,12 +164,12 @@ msgctxt "keyboard label"
msgid "Down"
msgstr "Abaixo"
-#: gdk/keyname-table.h:6856 gtk/gtkshortcutlabel.c:214
+#: gdk/keyname-table.h:6856 gtk/gtkshortcutlabel.c:212
msgctxt "keyboard label"
msgid "Page_Up"
msgstr "Page Up"
-#: gdk/keyname-table.h:6857 gtk/gtkshortcutlabel.c:217
+#: gdk/keyname-table.h:6857 gtk/gtkshortcutlabel.c:215
msgctxt "keyboard label"
msgid "Page_Down"
msgstr "Page Down"
@@ -466,103 +466,103 @@ msgctxt "keyboard label"
msgid "Suspend"
msgstr "Suspender"
-#: gdk/macos/gdkmacosclipboard.c:251 gdk/wayland/gdkclipboard-wayland.c:231
+#: gdk/macos/gdkmacosclipboard.c:252 gdk/wayland/gdkclipboard-wayland.c:231
#: gdk/wayland/gdkdrop-wayland.c:204 gdk/wayland/gdkprimary-wayland.c:312
-#: gdk/win32/gdkdrop-win32.c:1279 gdk/win32/gdkdrop-win32.c:1324
-#: gdk/x11/gdkclipboard-x11.c:763 gdk/x11/gdkdrop-x11.c:196
+#: gdk/win32/gdkdrop-win32.c:1282 gdk/win32/gdkdrop-win32.c:1327
+#: gdk/x11/gdkclipboard-x11.c:763 gdk/x11/gdkdrop-x11.c:237
msgid "No compatible transfer format found"
msgstr "Nenhum formato de transferência compatível localizado"
-#: gdk/macos/gdkmacosclipboard.c:337
+#: gdk/macos/gdkmacosclipboard.c:338
#, c-format
msgid "Failed to decode contents with mime-type of '%s'"
msgstr "Falha ao decodificar conteúdo com o tipo mime de “%s”"
-#: gdk/wayland/gdkglcontext-wayland.c:151 gdk/win32/gdkglcontext-win32.c:934
-#: gdk/win32/gdkglcontext-win32.c:975 gdk/x11/gdkglcontext-x11.c:581
+#: gdk/wayland/gdkglcontext-wayland.c:191 gdk/win32/gdkglcontext-win32.c:944
+#: gdk/win32/gdkglcontext-win32.c:985 gdk/x11/gdkglcontext-x11.c:581
#: gdk/x11/gdkglcontext-x11.c:631
msgid "Unable to create a GL context"
msgstr "Não foi possível criar um contexto GL"
-#: gdk/wayland/gdkglcontext-wayland.c:423 gdk/win32/gdkglcontext-win32.c:775
-#: gdk/win32/gdkglcontext-win32.c:785 gdk/win32/gdkglcontext-win32.c:900
+#: gdk/wayland/gdkglcontext-wayland.c:463 gdk/win32/gdkglcontext-win32.c:785
+#: gdk/win32/gdkglcontext-win32.c:795 gdk/win32/gdkglcontext-win32.c:910
#: gdk/x11/gdkglcontext-x11.c:879
msgid "No available configurations for the given pixel format"
msgstr "Nenhuma configuração disponível para o formato de pixel dado"
-#: gdk/wayland/gdkglcontext-wayland.c:448 gdk/win32/gdkglcontext-win32.c:1048
+#: gdk/wayland/gdkglcontext-wayland.c:488 gdk/win32/gdkglcontext-win32.c:1058
#: gdk/x11/gdkglcontext-x11.c:1182
msgid "No GL implementation is available"
msgstr "Nenhuma implementação GL está disponível"
-#: gdk/wayland/gdkglcontext-wayland.c:456
+#: gdk/wayland/gdkglcontext-wayland.c:496
msgid "Core GL is not available on EGL implementation"
msgstr "GL Core não está disponível na implementação EGL"
-#: gdk/win32/gdkclipdrop-win32.c:717
+#: gdk/win32/gdkclipdrop-win32.c:718
#, c-format
msgid "Cannot claim clipboard ownership. OpenClipboard() timed out."
msgstr ""
"Não foi possível reivindicar a propriedade da área de transferência. "
"OpenClipboard() expirou."
-#: gdk/win32/gdkclipdrop-win32.c:727
+#: gdk/win32/gdkclipdrop-win32.c:728
#, c-format
msgid "Cannot claim clipboard ownership. Another process claimed it before us."
msgstr ""
"Não foi possível reivindicar a propriedade da área de transferência. Outro "
"processo reivindicou antes de nós."
-#: gdk/win32/gdkclipdrop-win32.c:741
+#: gdk/win32/gdkclipdrop-win32.c:742
#, c-format
msgid "Cannot claim clipboard ownership. OpenClipboard() failed: 0x%lx."
msgstr ""
"Não foi possível reivindicar a propriedade da área de transferência. "
"OpenClipboard() falhou: 0x%lx."
-#: gdk/win32/gdkclipdrop-win32.c:753
+#: gdk/win32/gdkclipdrop-win32.c:754
#, c-format
msgid "Cannot claim clipboard ownership. EmptyClipboard() failed: 0x%lx."
msgstr ""
"Não foi possível reivindicar a propriedade da área de transferência. "
"EmptyClipboard() falhou: 0x%lx."
-#: gdk/win32/gdkclipdrop-win32.c:796
+#: gdk/win32/gdkclipdrop-win32.c:797
#, c-format
msgid "Cannot set clipboard data. OpenClipboard() timed out."
msgstr ""
"Não foi possível definir dados da área de transferência. OpenClipboard() "
"expirou."
-#: gdk/win32/gdkclipdrop-win32.c:806 gdk/win32/gdkclipdrop-win32.c:837
+#: gdk/win32/gdkclipdrop-win32.c:807 gdk/win32/gdkclipdrop-win32.c:838
#, c-format
msgid "Cannot set clipboard data. Another process claimed clipboard ownership."
msgstr ""
"Não foi possível definir dados da área de transferência. Outro processo "
"reivindicou a sua propriedade."
-#: gdk/win32/gdkclipdrop-win32.c:820
+#: gdk/win32/gdkclipdrop-win32.c:821
#, c-format
msgid "Cannot set clipboard data. OpenClipboard() failed: 0x%lx."
msgstr ""
"Não foi possível definir dados da área de transferência. OpenClipboard() "
"falhou: 0x%lx."
-#: gdk/win32/gdkclipdrop-win32.c:872
+#: gdk/win32/gdkclipdrop-win32.c:873
#, c-format
msgid "Cannot get clipboard data. GlobalLock(0x%p) failed: 0x%lx."
msgstr ""
"Não foi possível obter dados da área de transferência. GlobalLock(0x%p) "
"falhou: 0x%lx."
-#: gdk/win32/gdkclipdrop-win32.c:883
+#: gdk/win32/gdkclipdrop-win32.c:884
#, c-format
msgid "Cannot get clipboard data. GlobalSize(0x%p) failed: 0x%lx."
msgstr ""
"Não foi possível obter dados da área de transferência. GlobalSize(0x%p) "
"falhou: 0x%lx."
-#: gdk/win32/gdkclipdrop-win32.c:896
+#: gdk/win32/gdkclipdrop-win32.c:897
#, c-format
msgid ""
"Cannot get clipboard data. Failed to allocate %s bytes to store the data."
@@ -570,21 +570,21 @@ msgstr ""
"Não foi possível obter dados da área de transferência. Falha ao alocar %s "
"bytes para armazenar os dados."
-#: gdk/win32/gdkclipdrop-win32.c:928
+#: gdk/win32/gdkclipdrop-win32.c:929
#, c-format
msgid "Cannot get clipboard data. OpenClipboard() timed out."
msgstr ""
"Não foi possível obter dados da área de transferência. OpenClipboard() "
"expirou."
-#: gdk/win32/gdkclipdrop-win32.c:938
+#: gdk/win32/gdkclipdrop-win32.c:939
#, c-format
msgid "Cannot get clipboard data. Clipboard ownership changed."
msgstr ""
"Não foi possível obter dados da área de transferência. Propriedade da área "
"de transferência alterada."
-#: gdk/win32/gdkclipdrop-win32.c:948
+#: gdk/win32/gdkclipdrop-win32.c:949
#, c-format
msgid ""
"Cannot get clipboard data. Clipboard data changed before we could get it."
@@ -592,60 +592,60 @@ msgstr ""
"Não foi possível obter dados da área de transferência. Dados da área de "
"transferência alterados antes que nós pudéssemos obtê-los."
-#: gdk/win32/gdkclipdrop-win32.c:965
+#: gdk/win32/gdkclipdrop-win32.c:966
#, c-format
msgid "Cannot get clipboard data. OpenClipboard() failed: 0x%lx."
msgstr ""
"Não foi possível obter dados da área de transferência. OpenClipboard() "
"falhou: 0x%lx."
-#: gdk/win32/gdkclipdrop-win32.c:990
+#: gdk/win32/gdkclipdrop-win32.c:991
#, c-format
msgid "Cannot get clipboard data. No compatible transfer format found."
msgstr ""
"Não foi possível obter dados da área de transferência. Nenhum formato de "
"transferência compatível localizado."
-#: gdk/win32/gdkclipdrop-win32.c:1000
+#: gdk/win32/gdkclipdrop-win32.c:1001
#, c-format
msgid "Cannot get clipboard data. GetClipboardData() failed: 0x%lx."
msgstr ""
"Não foi possível obter dados da área de transferência. GetClipboardData() "
"falhou: 0x%lx."
-#: gdk/win32/gdkdrop-win32.c:1210
+#: gdk/win32/gdkdrop-win32.c:1213
#, c-format
msgid "Cannot get DnD data. GlobalLock(0x%p) failed: 0x%lx."
msgstr "Não foi possível obter dados de DnD. GlobalLock(0x%p) falhou: 0x%lx."
-#: gdk/win32/gdkdrop-win32.c:1219
+#: gdk/win32/gdkdrop-win32.c:1222
#, c-format
msgid "Cannot get DnD data. GlobalSize(0x%p) failed: 0x%lx."
msgstr "Não foi possível obter dados de DnD. GlobalSize(0x%p) falhou: 0x%lx."
-#: gdk/win32/gdkdrop-win32.c:1230
+#: gdk/win32/gdkdrop-win32.c:1233
#, c-format
msgid "Cannot get DnD data. Failed to allocate %s bytes to store the data."
msgstr ""
"Não foi possível obter dados de DnD. Falha ao alocar %s bytes para armazenar "
"os dados."
-#: gdk/win32/gdkdrop-win32.c:1298
+#: gdk/win32/gdkdrop-win32.c:1301
#, c-format
msgid "GDK surface 0x%p is not registered as a drop target"
msgstr "Superfície GDK 0x%p não está registrada como um alvo de soltar"
-#: gdk/win32/gdkdrop-win32.c:1305
+#: gdk/win32/gdkdrop-win32.c:1308
#, c-format
msgid "Target context record 0x%p has no data object"
msgstr "Registro de contexto de alvo 0x%p possui nenhum objeto de dados"
-#: gdk/win32/gdkdrop-win32.c:1343
+#: gdk/win32/gdkdrop-win32.c:1346
#, c-format
msgid "IDataObject_GetData (0x%x) failed, returning 0x%lx"
msgstr "IDataObject_GetData (0x%x) falhou, retornando 0x%lx"
-#: gdk/win32/gdkdrop-win32.c:1375
+#: gdk/win32/gdkdrop-win32.c:1378
#, c-format
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr "Falha ao transmutar dados DnD W32 de formato 0x%x para %p (%s)"
@@ -684,17 +684,17 @@ msgstr "GlobalLock() falhou: "
msgid "GlobalAlloc() failed: "
msgstr "GlobalAlloc() falhou: "
-#: gdk/x11/gdkapplaunchcontext-x11.c:290
+#: gdk/x11/gdkapplaunchcontext-x11.c:293
#, c-format
msgid "Starting “%s”"
msgstr "Iniciando ”%s”"
-#: gdk/x11/gdkapplaunchcontext-x11.c:303
+#: gdk/x11/gdkapplaunchcontext-x11.c:306
#, c-format
msgid "Opening “%s”"
msgstr "Abrindo “%s”"
-#: gdk/x11/gdkapplaunchcontext-x11.c:308
+#: gdk/x11/gdkapplaunchcontext-x11.c:311
#, c-format
msgid "Opening %d Item"
msgid_plural "Opening %d Items"
@@ -743,105 +743,105 @@ msgstr "Formatos inválidos na conversão de texto composto."
msgid "Unsupported encoding “%s”"
msgstr "Codificação sem suporte “%s”"
-#: gtk/a11y/gtkatspiaction.c:243
+#: gtk/a11y/gtkatspiaction.c:239
msgctxt "accessibility"
msgid "Click"
msgstr "Clicar"
-#: gtk/a11y/gtkatspiaction.c:244
+#: gtk/a11y/gtkatspiaction.c:240
msgctxt "accessibility"
msgid "Clicks the button"
msgstr "Clica no botão"
-#: gtk/a11y/gtkatspiaction.c:294
+#: gtk/a11y/gtkatspiaction.c:290
msgctxt "accessibility"
msgid "Toggle"
msgstr "Alternar"
-#: gtk/a11y/gtkatspiaction.c:295
+#: gtk/a11y/gtkatspiaction.c:291
msgctxt "accessibility"
msgid "Toggles the switch"
msgstr "Alterna o alternador"
-#: gtk/a11y/gtkatspiaction.c:375
+#: gtk/a11y/gtkatspiaction.c:371
msgctxt "accessibility"
msgid "Select"
msgstr "Selecionar"
-#: gtk/a11y/gtkatspiaction.c:376
+#: gtk/a11y/gtkatspiaction.c:372
msgctxt "accessibility"
msgid "Selects the color"
msgstr "Seleciona a cor"
-#: gtk/a11y/gtkatspiaction.c:383 gtk/a11y/gtkatspiaction.c:443
-#: gtk/a11y/gtkatspiaction.c:499 gtk/a11y/gtkatspiaction.c:607
-#: gtk/a11y/gtkatspiaction.c:694
+#: gtk/a11y/gtkatspiaction.c:379 gtk/a11y/gtkatspiaction.c:439
+#: gtk/a11y/gtkatspiaction.c:495 gtk/a11y/gtkatspiaction.c:603
+#: gtk/a11y/gtkatspiaction.c:690
msgctxt "accessibility"
msgid "Activate"
msgstr "Ativar"
-#: gtk/a11y/gtkatspiaction.c:384
+#: gtk/a11y/gtkatspiaction.c:380
msgctxt "accessibility"
msgid "Activates the color"
msgstr "Ativa a cor"
-#: gtk/a11y/gtkatspiaction.c:391
+#: gtk/a11y/gtkatspiaction.c:387
msgctxt "accessibility"
msgid "Customize"
msgstr "Personalizar"
-#: gtk/a11y/gtkatspiaction.c:392
+#: gtk/a11y/gtkatspiaction.c:388
msgctxt "accessibility"
msgid "Customizes the color"
msgstr "Personaliza a cor"
-#: gtk/a11y/gtkatspiaction.c:444
+#: gtk/a11y/gtkatspiaction.c:440
msgctxt "accessibility"
msgid "Activates the expander"
msgstr "Ativa o expansor"
-#: gtk/a11y/gtkatspiaction.c:500 gtk/a11y/gtkatspiaction.c:608
-#: gtk/a11y/gtkatspiaction.c:695
+#: gtk/a11y/gtkatspiaction.c:496 gtk/a11y/gtkatspiaction.c:604
+#: gtk/a11y/gtkatspiaction.c:691
msgctxt "accessibility"
msgid "Activates the entry"
msgstr "Ativa a entrada"
-#: gtk/a11y/gtkatspiaction.c:507
+#: gtk/a11y/gtkatspiaction.c:503
msgctxt "accessibility"
msgid "Activate primary icon"
msgstr "Ativar ícone primário"
-#: gtk/a11y/gtkatspiaction.c:508
+#: gtk/a11y/gtkatspiaction.c:504
msgctxt "accessibility"
msgid "Activates the primary icon of the entry"
msgstr "Ativa o ícone primário da entrada"
-#: gtk/a11y/gtkatspiaction.c:515
+#: gtk/a11y/gtkatspiaction.c:511
msgctxt "accessibility"
msgid "Activate secondary icon"
msgstr "Ativar ícone secundário"
-#: gtk/a11y/gtkatspiaction.c:516
+#: gtk/a11y/gtkatspiaction.c:512
msgctxt "accessibility"
msgid "Activates the secondary icon of the entry"
msgstr "Ativa o ícone secundário da entrada"
-#: gtk/a11y/gtkatspiaction.c:615
+#: gtk/a11y/gtkatspiaction.c:611
msgctxt "accessibility"
msgid "Peek"
msgstr "Espiar"
-#: gtk/a11y/gtkatspiaction.c:616
+#: gtk/a11y/gtkatspiaction.c:612
msgctxt "accessibility"
msgid "Shows the contents of the password entry"
msgstr "Mostra o conteúdo da entrada de senha"
-#: gtk/a11y/gtkatspiaction.c:702
+#: gtk/a11y/gtkatspiaction.c:698
msgctxt "accessibility"
msgid "Clear"
msgstr "Limpar"
-#: gtk/a11y/gtkatspiaction.c:703
+#: gtk/a11y/gtkatspiaction.c:699
msgctxt "accessibility"
msgid "Clears the contents of the entry"
msgstr "Limpa o conteúdo da entrada"
@@ -851,122 +851,122 @@ msgctxt "accessibility"
msgid "application"
msgstr "aplicativo"
-#: gtk/css/gtkcssdataurl.c:70
+#: gtk/css/gtkcssdataurl.c:69
#, c-format
msgid "Not a data: URL"
msgstr "Não é um dado: URL"
-#: gtk/css/gtkcssdataurl.c:83
+#: gtk/css/gtkcssdataurl.c:82
#, c-format
msgid "Malformed data: URL"
msgstr "Dados malformados: URL"
-#: gtk/css/gtkcssdataurl.c:141
+#: gtk/css/gtkcssdataurl.c:140
#, c-format
msgid "Could not unescape string"
msgstr "Não foi possível retirar escape da string"
-#: gtk/gtkaboutdialog.c:120 gtk/ui/gtkaboutdialog.ui:163
+#: gtk/gtkaboutdialog.c:124 gtk/ui/gtkaboutdialog.ui:163
msgid "License"
msgstr "Licença"
-#: gtk/gtkaboutdialog.c:121
+#: gtk/gtkaboutdialog.c:125
msgid "Custom License"
msgstr "Licença personalizada"
-#: gtk/gtkaboutdialog.c:122
+#: gtk/gtkaboutdialog.c:126
msgid "GNU General Public License, version 2 or later"
msgstr "Licença Pública Geral GNU, versão 2 ou posterior"
-#: gtk/gtkaboutdialog.c:123
+#: gtk/gtkaboutdialog.c:127
msgid "GNU General Public License, version 3 or later"
msgstr "Licença Pública Geral GNU, versão 3 ou posterior"
-#: gtk/gtkaboutdialog.c:124
+#: gtk/gtkaboutdialog.c:128
msgid "GNU Lesser General Public License, version 2.1 or later"
msgstr "Licença Pública Geral Menor GNU, versão 2.1 ou posterior"
-#: gtk/gtkaboutdialog.c:125
+#: gtk/gtkaboutdialog.c:129
msgid "GNU Lesser General Public License, version 3 or later"
msgstr "Licença Pública Geral Menor GNU, versão 3 ou posterior"
-#: gtk/gtkaboutdialog.c:126
+#: gtk/gtkaboutdialog.c:130
msgid "BSD 2-Clause License"
msgstr "Licença BSD com 2 cláusulas"
-#: gtk/gtkaboutdialog.c:127
+#: gtk/gtkaboutdialog.c:131
msgid "The MIT License (MIT)"
msgstr "A Licença MIT (MIT)"
-#: gtk/gtkaboutdialog.c:128
+#: gtk/gtkaboutdialog.c:132
msgid "Artistic License 2.0"
msgstr "Licença Artística 2.0"
-#: gtk/gtkaboutdialog.c:129
+#: gtk/gtkaboutdialog.c:133
msgid "GNU General Public License, version 2 only"
msgstr "Licença Pública Geral GNU, apenas versão 2"
-#: gtk/gtkaboutdialog.c:130
+#: gtk/gtkaboutdialog.c:134
msgid "GNU General Public License, version 3 only"
msgstr "Licença Pública Geral GNU, apenas versão 3"
-#: gtk/gtkaboutdialog.c:131
+#: gtk/gtkaboutdialog.c:135
msgid "GNU Lesser General Public License, version 2.1 only"
msgstr "Licença Pública Geral Menor GNU, apenas versão 2.1"
-#: gtk/gtkaboutdialog.c:132
+#: gtk/gtkaboutdialog.c:136
msgid "GNU Lesser General Public License, version 3 only"
msgstr "Licença Pública Geral Menor GNU, apenas versão 3"
-#: gtk/gtkaboutdialog.c:133
+#: gtk/gtkaboutdialog.c:137
msgid "GNU Affero General Public License, version 3 or later"
msgstr "Licença Pública Geral Affero GNU, versão 3 ou posterior"
-#: gtk/gtkaboutdialog.c:134
+#: gtk/gtkaboutdialog.c:138
msgid "GNU Affero General Public License, version 3 only"
msgstr "Licença Pública Geral Affero GNU, apenas versão 3"
-#: gtk/gtkaboutdialog.c:135
+#: gtk/gtkaboutdialog.c:139
msgid "BSD 3-Clause License"
msgstr "Licença BSD com 3 cláusulas"
-#: gtk/gtkaboutdialog.c:136
+#: gtk/gtkaboutdialog.c:140
msgid "Apache License, Version 2.0"
msgstr "Licença Apache, Versão 2.0"
-#: gtk/gtkaboutdialog.c:137
+#: gtk/gtkaboutdialog.c:141
msgid "Mozilla Public License 2.0"
msgstr "Licença Pública Mozilla 2.0"
-#: gtk/gtkaboutdialog.c:946
+#: gtk/gtkaboutdialog.c:968
msgid "Website"
msgstr "Página web"
-#: gtk/gtkaboutdialog.c:983 gtk/ui/gtkapplication-quartz.ui:6
+#: gtk/gtkaboutdialog.c:1005 gtk/ui/gtkapplication-quartz.ui:6
#, c-format
msgid "About %s"
msgstr "Sobre o %s"
-#: gtk/gtkaboutdialog.c:2087
+#: gtk/gtkaboutdialog.c:2114
msgid "Created by"
msgstr "Criado por"
-#: gtk/gtkaboutdialog.c:2090
+#: gtk/gtkaboutdialog.c:2117
msgid "Documented by"
msgstr "Documentado por"
-#: gtk/gtkaboutdialog.c:2100
+#: gtk/gtkaboutdialog.c:2127
msgid "Translated by"
msgstr "Traduzido por"
-#: gtk/gtkaboutdialog.c:2105
+#: gtk/gtkaboutdialog.c:2132
msgid "Design by"
msgstr "Design por"
#. Translators: this is the license preamble; the string at the end
#. * contains the name of the license as link text.
#.
-#: gtk/gtkaboutdialog.c:2268
+#: gtk/gtkaboutdialog.c:2297
#, c-format
msgid ""
"This program comes with absolutely no warranty.\n"
@@ -980,8 +980,8 @@ msgstr ""
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:834 gtk/gtkshortcutlabel.c:102
-#: gtk/gtkshortcutlabel.c:138
+#: gtk/gtkaccelgroup.c:829 gtk/gtkshortcutlabel.c:100
+#: gtk/gtkshortcutlabel.c:136
msgctxt "keyboard label"
msgid "Shift"
msgstr "Shift"
@@ -991,8 +991,8 @@ msgstr "Shift"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:853 gtk/gtkshortcutlabel.c:105
-#: gtk/gtkshortcutlabel.c:140
+#: gtk/gtkaccelgroup.c:848 gtk/gtkshortcutlabel.c:103
+#: gtk/gtkshortcutlabel.c:138
msgctxt "keyboard label"
msgid "Ctrl"
msgstr "Ctrl"
@@ -1002,8 +1002,8 @@ msgstr "Ctrl"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:872 gtk/gtkshortcutlabel.c:108
-#: gtk/gtkshortcutlabel.c:142
+#: gtk/gtkaccelgroup.c:867 gtk/gtkshortcutlabel.c:106
+#: gtk/gtkshortcutlabel.c:140
msgctxt "keyboard label"
msgid "Alt"
msgstr "Alt"
@@ -1013,8 +1013,8 @@ msgstr "Alt"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:890 gtk/gtkshortcutlabel.c:114
-#: gtk/gtkshortcutlabel.c:144
+#: gtk/gtkaccelgroup.c:885 gtk/gtkshortcutlabel.c:112
+#: gtk/gtkshortcutlabel.c:142
msgctxt "keyboard label"
msgid "Super"
msgstr "Super"
@@ -1024,8 +1024,8 @@ msgstr "Super"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:904 gtk/gtkshortcutlabel.c:117
-#: gtk/gtkshortcutlabel.c:146
+#: gtk/gtkaccelgroup.c:899 gtk/gtkshortcutlabel.c:115
+#: gtk/gtkshortcutlabel.c:144
msgctxt "keyboard label"
msgid "Hyper"
msgstr "Hyper"
@@ -1035,8 +1035,8 @@ msgstr "Hyper"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:919 gtk/gtkshortcutlabel.c:111
-#: gtk/gtkshortcutlabel.c:148
+#: gtk/gtkaccelgroup.c:914 gtk/gtkshortcutlabel.c:109
+#: gtk/gtkshortcutlabel.c:146
msgctxt "keyboard label"
msgid "Meta"
msgstr "Meta"
@@ -1045,447 +1045,447 @@ msgstr "Meta"
#. * be used in accelerators such as "Ctrl+Shift+KP 1" in menus,
#. * and therefore the translation needs to be very short.
#.
-#: gtk/gtkaccelgroup.c:939
+#: gtk/gtkaccelgroup.c:934
msgctxt "keyboard label"
msgid "KP"
msgstr "TN"
-#: gtk/gtkaccelgroup.c:946
+#: gtk/gtkaccelgroup.c:941
msgctxt "keyboard label"
msgid "Space"
msgstr "Espaço"
# Espaços são permitidos?
# Acelerador é usado?
-#: gtk/gtkaccelgroup.c:949 gtk/gtkshortcutlabel.c:173
+#: gtk/gtkaccelgroup.c:944 gtk/gtkshortcutlabel.c:171
msgctxt "keyboard label"
msgid "Backslash"
msgstr "Barra invertida"
-#: gtk/gtkaccessible.c:558
+#: gtk/gtkaccessible.c:561
msgctxt "accessibility"
msgid "alert"
msgstr "alerta"
-#: gtk/gtkaccessible.c:559
+#: gtk/gtkaccessible.c:562
msgctxt "accessibility"
msgid "alert dialog"
msgstr "diálogo de alerta"
-#: gtk/gtkaccessible.c:560
+#: gtk/gtkaccessible.c:563
msgctxt "accessibility"
msgid "banner"
msgstr "banner"
-#: gtk/gtkaccessible.c:561
+#: gtk/gtkaccessible.c:564
msgctxt "accessibility"
msgid "button"
msgstr "botão"
-#: gtk/gtkaccessible.c:562
+#: gtk/gtkaccessible.c:565
msgctxt "accessibility"
msgid "caption"
msgstr "legenda"
-#: gtk/gtkaccessible.c:563
+#: gtk/gtkaccessible.c:566
msgctxt "accessibility"
msgid "cell"
msgstr "célula"
-#: gtk/gtkaccessible.c:564
+#: gtk/gtkaccessible.c:567
msgctxt "accessibility"
msgid "checkbox"
msgstr "caixa de seleção"
-#: gtk/gtkaccessible.c:565
+#: gtk/gtkaccessible.c:568
msgctxt "accessibility"
msgid "column header"
msgstr "cabeçalho de coluna"
-#: gtk/gtkaccessible.c:566
+#: gtk/gtkaccessible.c:569
msgctxt "accessibility"
msgid "combo box"
msgstr "caixa de combinação"
-#: gtk/gtkaccessible.c:567
+#: gtk/gtkaccessible.c:570
msgctxt "accessibility"
msgid "command"
msgstr "comando"
-#: gtk/gtkaccessible.c:568
+#: gtk/gtkaccessible.c:571
msgctxt "accessibility"
msgid "composite"
msgstr "composto"
-#: gtk/gtkaccessible.c:569
+#: gtk/gtkaccessible.c:572
msgctxt "accessibility"
msgid "dialog"
msgstr "diálogo"
-#: gtk/gtkaccessible.c:570
+#: gtk/gtkaccessible.c:573
msgctxt "accessibility"
msgid "document"
msgstr "documento"
-#: gtk/gtkaccessible.c:571
+#: gtk/gtkaccessible.c:574
msgctxt "accessibility"
msgid "feed"
msgstr "alimentação"
-#: gtk/gtkaccessible.c:572
+#: gtk/gtkaccessible.c:575
msgctxt "accessibility"
msgid "form"
msgstr "formulário"
-#: gtk/gtkaccessible.c:573
+#: gtk/gtkaccessible.c:576
msgctxt "accessibility"
msgid "generic"
msgstr "genérico"
-#: gtk/gtkaccessible.c:574
+#: gtk/gtkaccessible.c:577
msgctxt "accessibility"
msgid "grid"
msgstr "grade"
-#: gtk/gtkaccessible.c:575
+#: gtk/gtkaccessible.c:578
msgctxt "accessibility"
msgid "grid cell"
msgstr "célula de grade"
-#: gtk/gtkaccessible.c:576
+#: gtk/gtkaccessible.c:579
msgctxt "accessibility"
msgid "group"
msgstr "grupo"
-#: gtk/gtkaccessible.c:577
+#: gtk/gtkaccessible.c:580
msgctxt "accessibility"
msgid "heading"
msgstr "cabeçalho"
-#: gtk/gtkaccessible.c:578
+#: gtk/gtkaccessible.c:581
msgctxt "accessibility"
msgid "image"
msgstr "imagem"
-#: gtk/gtkaccessible.c:579
+#: gtk/gtkaccessible.c:582
msgctxt "accessibility"
msgid "input"
msgstr "entrada"
-#: gtk/gtkaccessible.c:580
+#: gtk/gtkaccessible.c:583
msgctxt "accessibility"
msgid "label"
msgstr "rótulo"
-#: gtk/gtkaccessible.c:581
+#: gtk/gtkaccessible.c:584
msgctxt "accessibility"
msgid "landmark"
msgstr "marco"
-#: gtk/gtkaccessible.c:582
+#: gtk/gtkaccessible.c:585
msgctxt "accessibility"
msgid "legend"
msgstr "legenda"
-#: gtk/gtkaccessible.c:583
+#: gtk/gtkaccessible.c:586
msgctxt "accessibility"
msgid "link"
msgstr "link"
-#: gtk/gtkaccessible.c:584
+#: gtk/gtkaccessible.c:587
msgctxt "accessibility"
msgid "list"
msgstr "lista"
-#: gtk/gtkaccessible.c:585
+#: gtk/gtkaccessible.c:588
msgctxt "accessibility"
msgid "list box"
msgstr "caixa de lista"
-#: gtk/gtkaccessible.c:586
+#: gtk/gtkaccessible.c:589
msgctxt "accessibility"
msgid "list item"
msgstr "item de lista"
-#: gtk/gtkaccessible.c:587
+#: gtk/gtkaccessible.c:590
msgctxt "accessibility"
msgid "log"
msgstr "log"
-#: gtk/gtkaccessible.c:588
+#: gtk/gtkaccessible.c:591
msgctxt "accessibility"
msgid "main"
msgstr "principal"
-#: gtk/gtkaccessible.c:589
+#: gtk/gtkaccessible.c:592
msgctxt "accessibility"
msgid "marquee"
msgstr "demarcação"
-#: gtk/gtkaccessible.c:590
+#: gtk/gtkaccessible.c:593
msgctxt "accessibility"
msgid "math"
msgstr "matemática"
-#: gtk/gtkaccessible.c:591
+#: gtk/gtkaccessible.c:594
msgctxt "accessibility"
msgid "meter"
msgstr "metro"
-#: gtk/gtkaccessible.c:592
+#: gtk/gtkaccessible.c:595
msgctxt "accessibility"
msgid "menu"
msgstr "menu"
-#: gtk/gtkaccessible.c:593
+#: gtk/gtkaccessible.c:596
msgctxt "accessibility"
msgid "menu bar"
msgstr "barra de menu"
-#: gtk/gtkaccessible.c:594
+#: gtk/gtkaccessible.c:597
msgctxt "accessibility"
msgid "menu item"
msgstr "item de menu"
-#: gtk/gtkaccessible.c:595
+#: gtk/gtkaccessible.c:598
msgctxt "accessibility"
msgid "menu item checkbox"
msgstr "caixa de seleção de item de menu"
-#: gtk/gtkaccessible.c:596
+#: gtk/gtkaccessible.c:599
msgctxt "accessibility"
msgid "menu item radio"
msgstr "opção de item de menu"
-#: gtk/gtkaccessible.c:597
+#: gtk/gtkaccessible.c:600
msgctxt "accessibility"
msgid "navigation"
msgstr "navegação"
-#: gtk/gtkaccessible.c:598
+#: gtk/gtkaccessible.c:601
msgctxt "accessibility"
msgid "none"
msgstr "nenhum"
-#: gtk/gtkaccessible.c:599
+#: gtk/gtkaccessible.c:602
msgctxt "accessibility"
msgid "note"
msgstr "nota"
-#: gtk/gtkaccessible.c:600
+#: gtk/gtkaccessible.c:603
msgctxt "accessibility"
msgid "option"
msgstr "opção"
-#: gtk/gtkaccessible.c:601
+#: gtk/gtkaccessible.c:604
msgctxt "accessibility"
msgid "presentation"
msgstr "apresentação"
-#: gtk/gtkaccessible.c:602
+#: gtk/gtkaccessible.c:605
msgctxt "accessibility"
msgid "progress bar"
msgstr "barra de progresso"
# radio button = botão de opção
-#: gtk/gtkaccessible.c:603
+#: gtk/gtkaccessible.c:606
msgctxt "accessibility"
msgid "radio"
msgstr "opção"
-#: gtk/gtkaccessible.c:604
+#: gtk/gtkaccessible.c:607
msgctxt "accessibility"
msgid "radio group"
msgstr "grupo de opções"
-#: gtk/gtkaccessible.c:605
+#: gtk/gtkaccessible.c:608
msgctxt "accessibility"
msgid "range"
msgstr "intervalo"
-#: gtk/gtkaccessible.c:606
+#: gtk/gtkaccessible.c:609
msgctxt "accessibility"
msgid "region"
msgstr "região"
# prioridade de impressão
-#: gtk/gtkaccessible.c:607
+#: gtk/gtkaccessible.c:610
msgctxt "accessibility"
msgid "row"
msgstr "linha"
-#: gtk/gtkaccessible.c:608
+#: gtk/gtkaccessible.c:611
msgctxt "accessibility"
msgid "row group"
msgstr "grupo de linhas"
-#: gtk/gtkaccessible.c:609
+#: gtk/gtkaccessible.c:612
msgctxt "accessibility"
msgid "row header"
msgstr "cabeçalho de linhas"
-#: gtk/gtkaccessible.c:610
+#: gtk/gtkaccessible.c:613
msgctxt "accessibility"
msgid "scroll bar"
msgstr "barra de rolagem"
-#: gtk/gtkaccessible.c:611
+#: gtk/gtkaccessible.c:614
msgctxt "accessibility"
msgid "search"
msgstr "pesquisar"
-#: gtk/gtkaccessible.c:612
+#: gtk/gtkaccessible.c:615
msgctxt "accessibility"
msgid "search box"
msgstr "caixa de pesquisa"
-#: gtk/gtkaccessible.c:613
+#: gtk/gtkaccessible.c:616
msgctxt "accessibility"
msgid "section"
msgstr "seção"
-#: gtk/gtkaccessible.c:614
+#: gtk/gtkaccessible.c:617
msgctxt "accessibility"
msgid "section head"
msgstr "cabeça de seção"
-#: gtk/gtkaccessible.c:615
+#: gtk/gtkaccessible.c:618
msgctxt "accessibility"
msgid "select"
msgstr "selecionar"
-#: gtk/gtkaccessible.c:616
+#: gtk/gtkaccessible.c:619
msgctxt "accessibility"
msgid "separator"
msgstr "separador"
-#: gtk/gtkaccessible.c:617
+#: gtk/gtkaccessible.c:620
msgctxt "accessibility"
msgid "slider"
msgstr "controle deslizante"
-#: gtk/gtkaccessible.c:618
+#: gtk/gtkaccessible.c:621
msgctxt "accessibility"
msgid "spin button"
msgstr "botão giratório"
-#: gtk/gtkaccessible.c:619
+#: gtk/gtkaccessible.c:622
msgctxt "accessibility"
msgid "status"
msgstr "status"
-#: gtk/gtkaccessible.c:620
+#: gtk/gtkaccessible.c:623
msgctxt "accessibility"
msgid "structure"
msgstr "estrutura"
-#: gtk/gtkaccessible.c:621
+#: gtk/gtkaccessible.c:624
msgctxt "accessibility"
msgid "switch"
msgstr "alternador"
-#: gtk/gtkaccessible.c:622
+#: gtk/gtkaccessible.c:625
msgctxt "accessibility"
msgid "tab"
msgstr "aba"
-#: gtk/gtkaccessible.c:623
+#: gtk/gtkaccessible.c:626
msgctxt "accessibility"
msgid "table"
msgstr "tabela"
-#: gtk/gtkaccessible.c:624
+#: gtk/gtkaccessible.c:627
msgctxt "accessibility"
msgid "tab list"
msgstr "lista de abas"
-#: gtk/gtkaccessible.c:625
+#: gtk/gtkaccessible.c:628
msgctxt "accessibility"
msgid "tab panel"
msgstr "painel de abas"
-#: gtk/gtkaccessible.c:626
+#: gtk/gtkaccessible.c:629
msgctxt "accessibility"
msgid "text box"
msgstr "caixa de texto"
-#: gtk/gtkaccessible.c:627
+#: gtk/gtkaccessible.c:630
msgctxt "accessibility"
msgid "time"
msgstr "horário"
-#: gtk/gtkaccessible.c:628
+#: gtk/gtkaccessible.c:631
msgctxt "accessibility"
msgid "timer"
msgstr "temporizador"
-#: gtk/gtkaccessible.c:629
+#: gtk/gtkaccessible.c:632
msgctxt "accessibility"
msgid "tool bar"
msgstr "barra de ferramentas"
-#: gtk/gtkaccessible.c:630
+#: gtk/gtkaccessible.c:633
msgctxt "accessibility"
msgid "tool tip"
msgstr "dica de ferramenta"
-#: gtk/gtkaccessible.c:631
+#: gtk/gtkaccessible.c:634
msgctxt "accessibility"
msgid "tree"
msgstr "árvore"
-#: gtk/gtkaccessible.c:632
+#: gtk/gtkaccessible.c:635
msgctxt "accessibility"
msgid "tree grid"
msgstr "grade de árvore"
-#: gtk/gtkaccessible.c:633
+#: gtk/gtkaccessible.c:636
msgctxt "accessibility"
msgid "tree item"
msgstr "item de árvore"
-#: gtk/gtkaccessible.c:634
+#: gtk/gtkaccessible.c:637
msgctxt "accessibility"
msgid "widget"
msgstr "widget"
-#: gtk/gtkaccessible.c:635
+#: gtk/gtkaccessible.c:638
msgctxt "accessibility"
msgid "window"
msgstr "janela"
-#: gtk/gtkappchooserbutton.c:315
+#: gtk/gtkappchooserbutton.c:314
msgid "Other application…"
msgstr "Outro aplicativo…"
-#: gtk/gtkappchooserdialog.c:204 gtk/gtkappchooserdialog.c:255
+#: gtk/gtkappchooserdialog.c:205 gtk/gtkappchooserdialog.c:256
#: gtk/ui/gtkappchooserdialog.ui:4
msgid "Select Application"
msgstr "Selecionar aplicativo"
#. Translators: %s is a filename
-#: gtk/gtkappchooserdialog.c:211
+#: gtk/gtkappchooserdialog.c:212
#, c-format
msgid "Opening “%s”."
msgstr "Abrindo “%s”."
-#: gtk/gtkappchooserdialog.c:212
+#: gtk/gtkappchooserdialog.c:213
#, c-format
msgid "No applications found for “%s”"
msgstr "Nenhum aplicativo encontrado para “%s”"
#. Translators: %s is a file type description
-#: gtk/gtkappchooserdialog.c:217
+#: gtk/gtkappchooserdialog.c:218
#, c-format
msgid "Opening “%s” files."
msgstr "Abrindo arquivos “%s”."
-#: gtk/gtkappchooserdialog.c:219
+#: gtk/gtkappchooserdialog.c:220
#, c-format
msgid "No applications found for “%s” files"
msgstr "Nenhum aplicativo encontrado para arquivos “%s”"
-#: gtk/gtkappchooserdialog.c:421
+#: gtk/gtkappchooserdialog.c:422
msgid "Failed to start GNOME Software"
msgstr "Falha ao iniciar o GNOME Software"
@@ -1553,7 +1553,7 @@ msgstr "O texto pode não aparecer dentro de <%s>"
#. * text direction of RTL and specify "calendar:YM", then the year
#. * will appear to the right of the month.
#.
-#: gtk/gtkcalendar.c:766
+#: gtk/gtkcalendar.c:771
msgid "calendar:MY"
msgstr "calendar:MY"
@@ -1561,7 +1561,7 @@ msgstr "calendar:MY"
#. * first day of the week to calendar:week_start:1 if you want Monday
#. * to be the first day of the week, and so on.
#.
-#: gtk/gtkcalendar.c:804
+#: gtk/gtkcalendar.c:809
msgid "calendar:week_start:0"
msgstr "calendar:week_start:0"
@@ -1571,7 +1571,7 @@ msgstr "calendar:week_start:0"
#. *
#. * "%Y" is appropriate for most locales.
#.
-#: gtk/gtkcalendar.c:1400
+#: gtk/gtkcalendar.c:1405
msgctxt "calendar year format"
msgid "%Y"
msgstr "%Y"
@@ -1586,7 +1586,7 @@ msgstr "%Y"
#. * digits. That needs support from your system and locale definition
#. * too.
#.
-#: gtk/gtkcalendar.c:1437
+#: gtk/gtkcalendar.c:1442
#, c-format
msgctxt "calendar:day:digits"
msgid "%d"
@@ -1600,7 +1600,7 @@ msgstr "%d"
#. * Note that translating this doesn't guarantee that you get localized
#. * digits. That needs support from your system and locale definition
#. * too.
-#: gtk/gtkcalendar.c:1501
+#: gtk/gtkcalendar.c:1506
#, c-format
msgctxt "calendar:week:digits"
msgid "%d"
@@ -1637,261 +1637,261 @@ msgctxt "progress bar label"
msgid "%d %%"
msgstr "%d %%"
-#: gtk/gtkcolorbutton.c:172 gtk/gtkcolorbutton.c:274
+#: gtk/gtkcolorbutton.c:172 gtk/gtkcolorbutton.c:279
msgid "Pick a Color"
msgstr "Escolha uma cor"
-#: gtk/gtkcolorbutton.c:463 gtk/gtkcolorchooserwidget.c:307
+#: gtk/gtkcolorbutton.c:468 gtk/gtkcolorchooserwidget.c:308
#, c-format
msgid "Red %d%%, Green %d%%, Blue %d%%, Alpha %d%%"
msgstr "Vermelho %d%%, Verde %d%%, Azul %d%%, Alfa %d%%"
-#: gtk/gtkcolorbutton.c:469 gtk/gtkcolorchooserwidget.c:313
+#: gtk/gtkcolorbutton.c:474 gtk/gtkcolorchooserwidget.c:314
#, c-format
msgid "Red %d%%, Green %d%%, Blue %d%%"
msgstr "Vermelho %d%%, Verde %d%%, Azul %d%%"
-#: gtk/gtkcolorchooserwidget.c:370
+#: gtk/gtkcolorchooserwidget.c:371
#, c-format
msgid "Color: %s"
msgstr "Cor: %s"
-#: gtk/gtkcolorchooserwidget.c:435
+#: gtk/gtkcolorchooserwidget.c:436
msgctxt "Color name"
msgid "Very Light Blue"
msgstr "Azul muito claro"
-#: gtk/gtkcolorchooserwidget.c:436
+#: gtk/gtkcolorchooserwidget.c:437
msgctxt "Color name"
msgid "Light Blue"
msgstr "Azul claro"
-#: gtk/gtkcolorchooserwidget.c:437
+#: gtk/gtkcolorchooserwidget.c:438
msgctxt "Color name"
msgid "Blue"
msgstr "Azul"
-#: gtk/gtkcolorchooserwidget.c:438
+#: gtk/gtkcolorchooserwidget.c:439
msgctxt "Color name"
msgid "Dark Blue"
msgstr "Azul escuro"
-#: gtk/gtkcolorchooserwidget.c:439
+#: gtk/gtkcolorchooserwidget.c:440
msgctxt "Color name"
msgid "Very Dark Blue"
msgstr "Azul muito escuro"
-#: gtk/gtkcolorchooserwidget.c:440
+#: gtk/gtkcolorchooserwidget.c:441
msgctxt "Color name"
msgid "Very Light Green"
msgstr "Verde muito claro"
-#: gtk/gtkcolorchooserwidget.c:441
+#: gtk/gtkcolorchooserwidget.c:442
msgctxt "Color name"
msgid "Light Green"
msgstr "Verde claro"
-#: gtk/gtkcolorchooserwidget.c:442
+#: gtk/gtkcolorchooserwidget.c:443
msgctxt "Color name"
msgid "Green"
msgstr "Verde"
-#: gtk/gtkcolorchooserwidget.c:443
+#: gtk/gtkcolorchooserwidget.c:444
msgctxt "Color name"
msgid "Dark Green"
msgstr "Verde escuro"
-#: gtk/gtkcolorchooserwidget.c:444
+#: gtk/gtkcolorchooserwidget.c:445
msgctxt "Color name"
msgid "Very Dark Green"
msgstr "Verde muito escuro"
-#: gtk/gtkcolorchooserwidget.c:445
+#: gtk/gtkcolorchooserwidget.c:446
msgctxt "Color name"
msgid "Very Light Yellow"
msgstr "Amarelo muito claro"
-#: gtk/gtkcolorchooserwidget.c:446
+#: gtk/gtkcolorchooserwidget.c:447
msgctxt "Color name"
msgid "Light Yellow"
msgstr "Amarelo claro"
-#: gtk/gtkcolorchooserwidget.c:447
+#: gtk/gtkcolorchooserwidget.c:448
msgctxt "Color name"
msgid "Yellow"
msgstr "Amarelo"
-#: gtk/gtkcolorchooserwidget.c:448
+#: gtk/gtkcolorchooserwidget.c:449
msgctxt "Color name"
msgid "Dark Yellow"
msgstr "Amarelo escuro"
-#: gtk/gtkcolorchooserwidget.c:449
+#: gtk/gtkcolorchooserwidget.c:450
msgctxt "Color name"
msgid "Very Dark Yellow"
msgstr "Amarelo muito escuro"
-#: gtk/gtkcolorchooserwidget.c:450
+#: gtk/gtkcolorchooserwidget.c:451
msgctxt "Color name"
msgid "Very Light Orange"
msgstr "Laranja muito claro"
-#: gtk/gtkcolorchooserwidget.c:451
+#: gtk/gtkcolorchooserwidget.c:452
msgctxt "Color name"
msgid "Light Orange"
msgstr "Laranja claro"
-#: gtk/gtkcolorchooserwidget.c:452
+#: gtk/gtkcolorchooserwidget.c:453
msgctxt "Color name"
msgid "Orange"
msgstr "Laranja"
-#: gtk/gtkcolorchooserwidget.c:453
+#: gtk/gtkcolorchooserwidget.c:454
msgctxt "Color name"
msgid "Dark Orange"
msgstr "Laranja escuro"
-#: gtk/gtkcolorchooserwidget.c:454
+#: gtk/gtkcolorchooserwidget.c:455
msgctxt "Color name"
msgid "Very Dark Orange"
msgstr "Laranja muito escuro"
-#: gtk/gtkcolorchooserwidget.c:455
+#: gtk/gtkcolorchooserwidget.c:456
msgctxt "Color name"
msgid "Very Light Red"
msgstr "Vermelho muito claro"
-#: gtk/gtkcolorchooserwidget.c:456
+#: gtk/gtkcolorchooserwidget.c:457
msgctxt "Color name"
msgid "Light Red"
msgstr "Vermelho claro"
-#: gtk/gtkcolorchooserwidget.c:457
+#: gtk/gtkcolorchooserwidget.c:458
msgctxt "Color name"
msgid "Red"
msgstr "Vermelho"
-#: gtk/gtkcolorchooserwidget.c:458
+#: gtk/gtkcolorchooserwidget.c:459
msgctxt "Color name"
msgid "Dark Red"
msgstr "Vermelho escuro"
-#: gtk/gtkcolorchooserwidget.c:459
+#: gtk/gtkcolorchooserwidget.c:460
msgctxt "Color name"
msgid "Very Dark Red"
msgstr "Vermelho muito escuro"
-#: gtk/gtkcolorchooserwidget.c:460
+#: gtk/gtkcolorchooserwidget.c:461
msgctxt "Color name"
msgid "Very Light Purple"
msgstr "Roxo muito claro"
-#: gtk/gtkcolorchooserwidget.c:461
+#: gtk/gtkcolorchooserwidget.c:462
msgctxt "Color name"
msgid "Light Purple"
msgstr "Roxo claro"
-#: gtk/gtkcolorchooserwidget.c:462
+#: gtk/gtkcolorchooserwidget.c:463
msgctxt "Color name"
msgid "Purple"
msgstr "Roxo"
-#: gtk/gtkcolorchooserwidget.c:463
+#: gtk/gtkcolorchooserwidget.c:464
msgctxt "Color name"
msgid "Dark Purple"
msgstr "Roxo escuro"
-#: gtk/gtkcolorchooserwidget.c:464
+#: gtk/gtkcolorchooserwidget.c:465
msgctxt "Color name"
msgid "Very Dark Purple"
msgstr "Roxo muito escuro"
-#: gtk/gtkcolorchooserwidget.c:465
+#: gtk/gtkcolorchooserwidget.c:466
msgctxt "Color name"
msgid "Very Light Brown"
msgstr "Marrom muito claro"
-#: gtk/gtkcolorchooserwidget.c:466
+#: gtk/gtkcolorchooserwidget.c:467
msgctxt "Color name"
msgid "Light Brown"
msgstr "Marrom claro"
-#: gtk/gtkcolorchooserwidget.c:467
+#: gtk/gtkcolorchooserwidget.c:468
msgctxt "Color name"
msgid "Brown"
msgstr "Marrom"
-#: gtk/gtkcolorchooserwidget.c:468
+#: gtk/gtkcolorchooserwidget.c:469
msgctxt "Color name"
msgid "Dark Brown"
msgstr "Marrom escuro"
-#: gtk/gtkcolorchooserwidget.c:469
+#: gtk/gtkcolorchooserwidget.c:470
msgctxt "Color name"
msgid "Very Dark Brown"
msgstr "Marrom muito escuro"
-#: gtk/gtkcolorchooserwidget.c:470
+#: gtk/gtkcolorchooserwidget.c:471
msgctxt "Color name"
msgid "White"
msgstr "Branco"
-#: gtk/gtkcolorchooserwidget.c:471
+#: gtk/gtkcolorchooserwidget.c:472
msgctxt "Color name"
msgid "Light Gray 1"
msgstr "Cinza claro 1"
-#: gtk/gtkcolorchooserwidget.c:472
+#: gtk/gtkcolorchooserwidget.c:473
msgctxt "Color name"
msgid "Light Gray 2"
msgstr "Cinza claro 2"
-#: gtk/gtkcolorchooserwidget.c:473
+#: gtk/gtkcolorchooserwidget.c:474
msgctxt "Color name"
msgid "Light Gray 3"
msgstr "Cinza claro 3"
-#: gtk/gtkcolorchooserwidget.c:474
+#: gtk/gtkcolorchooserwidget.c:475
msgctxt "Color name"
msgid "Light Gray 4"
msgstr "Cinza claro 4"
-#: gtk/gtkcolorchooserwidget.c:475
+#: gtk/gtkcolorchooserwidget.c:476
msgctxt "Color name"
msgid "Dark Gray 1"
msgstr "Cinza escuro 1"
-#: gtk/gtkcolorchooserwidget.c:476
+#: gtk/gtkcolorchooserwidget.c:477
msgctxt "Color name"
msgid "Dark Gray 2"
msgstr "Cinza escuro 2"
-#: gtk/gtkcolorchooserwidget.c:477
+#: gtk/gtkcolorchooserwidget.c:478
msgctxt "Color name"
msgid "Dark Gray 3"
msgstr "Cinza escuro 3"
-#: gtk/gtkcolorchooserwidget.c:478
+#: gtk/gtkcolorchooserwidget.c:479
msgctxt "Color name"
msgid "Dark Gray 4"
msgstr "Cinza escuro 4"
-#: gtk/gtkcolorchooserwidget.c:479
+#: gtk/gtkcolorchooserwidget.c:480
msgctxt "Color name"
msgid "Black"
msgstr "Preto"
#. translators: label for the custom section in the color chooser
-#: gtk/gtkcolorchooserwidget.c:551
+#: gtk/gtkcolorchooserwidget.c:552
msgid "Custom"
msgstr "Personalizado"
-#: gtk/gtkcolorchooserwidget.c:584
+#: gtk/gtkcolorchooserwidget.c:585
#, c-format
msgid "Custom color %d: %s"
msgstr "Cor personalizada %d: %s"
-#: gtk/gtkcolorswatch.c:230
+#: gtk/gtkcolorswatch.c:229
msgid "Customize"
msgstr "Personalizar"
@@ -1909,13 +1909,13 @@ msgstr "default:mm"
msgid "Margins from Printer…"
msgstr "Margens da impressora…"
-#: gtk/gtkcustompaperunixdialog.c:348 gtk/gtkmessagedialog.c:161
+#: gtk/gtkcustompaperunixdialog.c:348 gtk/gtkmessagedialog.c:162
#: gtk/ui/gtkassistant.ui:40
msgid "_Close"
msgstr "_Fechar"
#. And show the custom paper dialog
-#: gtk/gtkcustompaperunixdialog.c:402 gtk/gtkprintunixdialog.c:2988
+#: gtk/gtkcustompaperunixdialog.c:402 gtk/gtkprintunixdialog.c:3029
msgid "Manage Custom Sizes"
msgstr "Gerenciar tamanhos personalizados"
@@ -1964,11 +1964,11 @@ msgstr "_Direita:"
msgid "Paper Margins"
msgstr "Margens do papel"
-#: gtk/gtkentry.c:3637
+#: gtk/gtkentry.c:3736
msgid "Insert Emoji"
msgstr "Inserir emoji"
-#: gtk/gtkfilechooserdialog.c:558
+#: gtk/gtkfilechooserdialog.c:551
msgid "_Name"
msgstr "_Nome"
@@ -2028,26 +2028,26 @@ msgstr "Uma pasta com esse nome já existe"
msgid "A file with that name already exists"
msgstr "Um arquivo com esse nome já existe"
-#: gtk/gtkfilechoosernative.c:504 gtk/gtkfilechoosernative.c:575
-#: gtk/gtkfilechooserwidget.c:1212 gtk/gtkfilechooserwidget.c:5762
-#: gtk/gtkmessagedialog.c:165 gtk/gtkmessagedialog.c:174
-#: gtk/gtkmountoperation.c:608 gtk/gtkpagesetupunixdialog.c:283
+#: gtk/gtkfilechoosernative.c:511 gtk/gtkfilechoosernative.c:582
+#: gtk/gtkfilechooserwidget.c:1209 gtk/gtkfilechooserwidget.c:5767
+#: gtk/gtkmessagedialog.c:166 gtk/gtkmessagedialog.c:175
+#: gtk/gtkmountoperation.c:616 gtk/gtkpagesetupunixdialog.c:283
#: gtk/gtkprintbackend.c:643 gtk/gtkprinteroptionwidget.c:713
-#: gtk/gtkprintunixdialog.c:626 gtk/gtkprintunixdialog.c:782
-#: gtk/gtkwindow.c:5950 gtk/inspector/css-editor.c:248
+#: gtk/gtkprintunixdialog.c:667 gtk/gtkprintunixdialog.c:823
+#: gtk/gtkwindow.c:6136 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1241 gtk/ui/gtkappchooserdialog.ui:45
#: gtk/ui/gtkassistant.ui:52 gtk/ui/gtkcolorchooserdialog.ui:33
#: gtk/ui/gtkfontchooserdialog.ui:24
msgid "_Cancel"
msgstr "_Cancelar"
-#: gtk/gtkfilechoosernative.c:505 gtk/gtkfilechoosernative.c:569
-#: gtk/gtkplacessidebar.c:3126 gtk/gtkplacessidebar.c:3211
-#: gtk/gtkplacesview.c:1650
+#: gtk/gtkfilechoosernative.c:512 gtk/gtkfilechoosernative.c:576
+#: gtk/gtkplacessidebar.c:3127 gtk/gtkplacessidebar.c:3212
+#: gtk/gtkplacesview.c:1658
msgid "_Open"
msgstr "A_brir"
-#: gtk/gtkfilechoosernative.c:569 gtk/inspector/css-editor.c:249
+#: gtk/gtkfilechoosernative.c:576 gtk/inspector/css-editor.c:249
#: gtk/inspector/recorder.c:1242
msgid "_Save"
msgstr "_Salvar"
@@ -2065,272 +2065,272 @@ msgstr "Seleciona quais tipos de arquivos são mostrados"
msgid "%1$s on %2$s"
msgstr "%1$s em %2$s"
-#: gtk/gtkfilechooserwidget.c:321
+#: gtk/gtkfilechooserwidget.c:318
msgid "Type name of new folder"
msgstr "Digite o nome da nova pasta"
-#: gtk/gtkfilechooserwidget.c:726
+#: gtk/gtkfilechooserwidget.c:723
msgid "The folder could not be created"
msgstr "Não foi possível criar a pasta"
-#: gtk/gtkfilechooserwidget.c:739
+#: gtk/gtkfilechooserwidget.c:736
msgid "You need to choose a valid filename."
msgstr "Você precisa escolher um nome de arquivo válido."
-#: gtk/gtkfilechooserwidget.c:742
+#: gtk/gtkfilechooserwidget.c:739
#, c-format
msgid "Cannot create a file under %s as it is not a folder"
msgstr "Não foi possível criar um arquivo em %s, pois não é uma pasta"
-#: gtk/gtkfilechooserwidget.c:752
+#: gtk/gtkfilechooserwidget.c:749
msgid "Cannot create file as the filename is too long"
msgstr "Não foi possível criar o arquivo, pois o nome do arquivo é muito longo"
-#: gtk/gtkfilechooserwidget.c:753
+#: gtk/gtkfilechooserwidget.c:750
msgid "Try using a shorter name."
msgstr "Tente usar um nome mais curto."
-#: gtk/gtkfilechooserwidget.c:763
+#: gtk/gtkfilechooserwidget.c:760
msgid "You may only select folders"
msgstr "Você pode apenas selecionar pastas"
-#: gtk/gtkfilechooserwidget.c:764
+#: gtk/gtkfilechooserwidget.c:761
msgid "The item that you selected is not a folder try using a different item."
msgstr ""
"O item que você selecionou não é uma pasta, tente utilizar um item diferente."
-#: gtk/gtkfilechooserwidget.c:772
+#: gtk/gtkfilechooserwidget.c:769
msgid "Invalid file name"
msgstr "Nome de arquivo inválido"
-#: gtk/gtkfilechooserwidget.c:781
+#: gtk/gtkfilechooserwidget.c:778
msgid "The folder contents could not be displayed"
msgstr "Não foi possível exibir o conteúdo da pasta"
-#: gtk/gtkfilechooserwidget.c:789
+#: gtk/gtkfilechooserwidget.c:786
msgid "The file could not be deleted"
msgstr "O arquivo não pôde ser excluído"
-#: gtk/gtkfilechooserwidget.c:797
+#: gtk/gtkfilechooserwidget.c:794
msgid "The file could not be moved to the Trash"
msgstr "O arquivo não pôde ser movido para a Lixeira"
-#: gtk/gtkfilechooserwidget.c:1208
+#: gtk/gtkfilechooserwidget.c:1205
#, c-format
msgid "Are you sure you want to permanently delete “%s”?"
msgstr "Tem certeza que deseja excluir permanentemente “%s”?"
-#: gtk/gtkfilechooserwidget.c:1211
+#: gtk/gtkfilechooserwidget.c:1208
#, c-format
msgid "If you delete an item, it will be permanently lost."
msgstr "Se você excluir um item, ele será permanentemente perdido."
-#: gtk/gtkfilechooserwidget.c:1213 gtk/gtkfilechooserwidget.c:1829
-#: gtk/gtklabel.c:5408 gtk/gtktext.c:5960 gtk/gtktextview.c:8564
+#: gtk/gtkfilechooserwidget.c:1210 gtk/gtkfilechooserwidget.c:1826
+#: gtk/gtklabel.c:5459 gtk/gtktext.c:6045 gtk/gtktextview.c:8753
msgid "_Delete"
msgstr "E_xcluir"
-#: gtk/gtkfilechooserwidget.c:1336
+#: gtk/gtkfilechooserwidget.c:1333
msgid "The file could not be renamed"
msgstr "O arquivo não pôde ser renomeado"
-#: gtk/gtkfilechooserwidget.c:1596
+#: gtk/gtkfilechooserwidget.c:1593
msgid "Could not select file"
msgstr "Não foi possível selecionar arquivo"
-#: gtk/gtkfilechooserwidget.c:1809
+#: gtk/gtkfilechooserwidget.c:1806
msgid "_Visit File"
msgstr "_Visitar arquivo"
-#: gtk/gtkfilechooserwidget.c:1813
+#: gtk/gtkfilechooserwidget.c:1810
msgid "_Open With File Manager"
msgstr "Abrir com _gerenciador de arquivos"
-#: gtk/gtkfilechooserwidget.c:1817
+#: gtk/gtkfilechooserwidget.c:1814
msgid "_Copy Location"
msgstr "_Copiar localização"
-#: gtk/gtkfilechooserwidget.c:1821
+#: gtk/gtkfilechooserwidget.c:1818
msgid "_Add to Bookmarks"
msgstr "_Adicionar aos marcadores"
-#: gtk/gtkfilechooserwidget.c:1825 gtk/gtkplacessidebar.c:2308
-#: gtk/gtkplacessidebar.c:3247 gtk/ui/gtkfilechooserwidget.ui:464
+#: gtk/gtkfilechooserwidget.c:1822 gtk/gtkplacessidebar.c:2309
+#: gtk/gtkplacessidebar.c:3248 gtk/ui/gtkfilechooserwidget.ui:464
msgid "_Rename"
msgstr "_Renomear"
-#: gtk/gtkfilechooserwidget.c:1833
+#: gtk/gtkfilechooserwidget.c:1830
msgid "_Move to Trash"
msgstr "_Mover para a lixeira"
-#: gtk/gtkfilechooserwidget.c:1842
+#: gtk/gtkfilechooserwidget.c:1839
msgid "Show _Hidden Files"
msgstr "Mostrar arquivos _ocultos"
-#: gtk/gtkfilechooserwidget.c:1846
+#: gtk/gtkfilechooserwidget.c:1843
msgid "Show _Size Column"
msgstr "Mostrar coluna _Tamanho"
-#: gtk/gtkfilechooserwidget.c:1850
+#: gtk/gtkfilechooserwidget.c:1847
msgid "Show T_ype Column"
msgstr "Mostrar coluna T_ipo"
-#: gtk/gtkfilechooserwidget.c:1854
+#: gtk/gtkfilechooserwidget.c:1851
msgid "Show _Time"
msgstr "Mostrar a _hora"
-#: gtk/gtkfilechooserwidget.c:1858
+#: gtk/gtkfilechooserwidget.c:1855
msgid "Sort _Folders Before Files"
msgstr "Ordenar _pastas antes de arquivos"
#. this is the header for the location column in the print dialog
-#: gtk/gtkfilechooserwidget.c:2256 gtk/inspector/css-node-tree.ui:135
+#: gtk/gtkfilechooserwidget.c:2253 gtk/inspector/css-node-tree.ui:135
#: gtk/ui/gtkfilechooserwidget.ui:185 gtk/ui/gtkprintunixdialog.ui:116
msgid "Location"
msgstr "Localização"
#. Label
-#: gtk/gtkfilechooserwidget.c:2344
+#: gtk/gtkfilechooserwidget.c:2341
msgid "_Name:"
msgstr "_Nome:"
-#: gtk/gtkfilechooserwidget.c:2881 gtk/gtkfilechooserwidget.c:2895
+#: gtk/gtkfilechooserwidget.c:2878 gtk/gtkfilechooserwidget.c:2892
#, c-format
msgid "Searching in %s"
msgstr "Pesquisando em %s"
-#: gtk/gtkfilechooserwidget.c:2901
+#: gtk/gtkfilechooserwidget.c:2898
msgid "Searching"
msgstr "Pesquisar"
-#: gtk/gtkfilechooserwidget.c:2907
+#: gtk/gtkfilechooserwidget.c:2904
msgid "Enter location or URL"
msgstr "Inserir localização ou URL"
-#: gtk/gtkfilechooserwidget.c:3795 gtk/gtkfilechooserwidget.c:6597
+#: gtk/gtkfilechooserwidget.c:3792 gtk/gtkfilechooserwidget.c:6604
#: gtk/ui/gtkfilechooserwidget.ui:225
msgid "Modified"
msgstr "Modificado"
-#: gtk/gtkfilechooserwidget.c:4054
+#: gtk/gtkfilechooserwidget.c:4051
#, c-format
msgid "Could not read the contents of %s"
msgstr "Não foi possível ler o conteúdo de %s"
-#: gtk/gtkfilechooserwidget.c:4058
+#: gtk/gtkfilechooserwidget.c:4055
msgid "Could not read the contents of the folder"
msgstr "Não foi possível ler o conteúdo da pasta"
#. Translators: see g_date_time_format() for details on the format
-#: gtk/gtkfilechooserwidget.c:4198 gtk/gtkfilechooserwidget.c:4241
+#: gtk/gtkfilechooserwidget.c:4195 gtk/gtkfilechooserwidget.c:4238
msgid "%H:%M"
msgstr "%H:%M"
-#: gtk/gtkfilechooserwidget.c:4200 gtk/gtkfilechooserwidget.c:4243
+#: gtk/gtkfilechooserwidget.c:4197 gtk/gtkfilechooserwidget.c:4240
msgid "%l:%M %p"
msgstr "%l:%M %p"
-#: gtk/gtkfilechooserwidget.c:4204
+#: gtk/gtkfilechooserwidget.c:4201
msgid "Yesterday"
msgstr "Ontem"
-#: gtk/gtkfilechooserwidget.c:4212
+#: gtk/gtkfilechooserwidget.c:4209
msgid "%-e %b"
msgstr "%-e de %b"
-#: gtk/gtkfilechooserwidget.c:4216
+#: gtk/gtkfilechooserwidget.c:4213
msgid "%-e %b %Y"
msgstr "%-e de %b de %Y"
-#: gtk/gtkfilechooserwidget.c:4305 gtk/gtkfilechooserwidget.c:4313
+#: gtk/gtkfilechooserwidget.c:4302 gtk/gtkfilechooserwidget.c:4310
msgid "Program"
msgstr "Programa"
-#: gtk/gtkfilechooserwidget.c:4306
+#: gtk/gtkfilechooserwidget.c:4303
msgid "Audio"
msgstr "Áudio"
-#: gtk/gtkfilechooserwidget.c:4307 gtk/gtkfontbutton.c:556
+#: gtk/gtkfilechooserwidget.c:4304 gtk/gtkfontbutton.c:560
#: gtk/inspector/visual.ui:187
msgid "Font"
msgstr "Fonte"
-#: gtk/gtkfilechooserwidget.c:4308
+#: gtk/gtkfilechooserwidget.c:4305
msgid "Image"
msgstr "Imagem"
-#: gtk/gtkfilechooserwidget.c:4309
+#: gtk/gtkfilechooserwidget.c:4306
msgid "Archive"
msgstr "Arquivo"
-#: gtk/gtkfilechooserwidget.c:4310
+#: gtk/gtkfilechooserwidget.c:4307
msgid "Markup"
msgstr "Marcação"
-#: gtk/gtkfilechooserwidget.c:4311 gtk/gtkfilechooserwidget.c:4312
+#: gtk/gtkfilechooserwidget.c:4308 gtk/gtkfilechooserwidget.c:4309
msgid "Text"
msgstr "Texto"
-#: gtk/gtkfilechooserwidget.c:4314
+#: gtk/gtkfilechooserwidget.c:4311
msgid "Video"
msgstr "Vídeo"
-#: gtk/gtkfilechooserwidget.c:4315
+#: gtk/gtkfilechooserwidget.c:4312
msgid "Contacts"
msgstr "Contatos"
-#: gtk/gtkfilechooserwidget.c:4316
+#: gtk/gtkfilechooserwidget.c:4313
msgid "Calendar"
msgstr "Calendário"
-#: gtk/gtkfilechooserwidget.c:4317
+#: gtk/gtkfilechooserwidget.c:4314
msgid "Document"
msgstr "Documentado"
-#: gtk/gtkfilechooserwidget.c:4318
+#: gtk/gtkfilechooserwidget.c:4315
msgid "Presentation"
msgstr "Apresentação"
-#: gtk/gtkfilechooserwidget.c:4319
+#: gtk/gtkfilechooserwidget.c:4316
msgid "Spreadsheet"
msgstr "Planilha"
#. Translators: We don't know whether this printer is
#. * available to print to.
-#: gtk/gtkfilechooserwidget.c:4350 gtk/gtkfilechooserwidget.c:4537
+#: gtk/gtkfilechooserwidget.c:4347 gtk/gtkfilechooserwidget.c:4540
#: modules/printbackends/gtkprintbackendcloudprint.c:729
msgid "Unknown"
msgstr "Desconhecido"
-#: gtk/gtkfilechooserwidget.c:4576 gtk/gtkplacessidebar.c:1025
+#: gtk/gtkfilechooserwidget.c:4579 gtk/gtkplacessidebar.c:1026
msgid "Home"
msgstr "Pasta pessoal"
-#: gtk/gtkfilechooserwidget.c:5755 gtk/gtkprintunixdialog.c:617
+#: gtk/gtkfilechooserwidget.c:5760 gtk/gtkprintunixdialog.c:658
#, c-format
msgid "A file named “%s” already exists. Do you want to replace it?"
msgstr "Um arquivo com o nome “%s” já existe. Você deseja substituí-lo?"
-#: gtk/gtkfilechooserwidget.c:5758 gtk/gtkprintunixdialog.c:621
+#: gtk/gtkfilechooserwidget.c:5763 gtk/gtkprintunixdialog.c:662
#, c-format
msgid ""
"The file already exists in “%s”. Replacing it will overwrite its contents."
msgstr ""
"O arquivo já existe em “%s”. Substituí-lo irá sobrescrever seu conteúdo."
-#: gtk/gtkfilechooserwidget.c:5763 gtk/gtkprintunixdialog.c:629
+#: gtk/gtkfilechooserwidget.c:5768 gtk/gtkprintunixdialog.c:670
msgid "_Replace"
msgstr "Substitui_r"
-#: gtk/gtkfilechooserwidget.c:5924
+#: gtk/gtkfilechooserwidget.c:5929
msgid "You do not have access to the specified folder."
msgstr "Você não possui acesso à pasta especificada."
-#: gtk/gtkfilechooserwidget.c:6526
+#: gtk/gtkfilechooserwidget.c:6533
msgid "Could not send the search request"
msgstr "Não foi possível enviar a requisição de pesquisa"
-#: gtk/gtkfilechooserwidget.c:6836
+#: gtk/gtkfilechooserwidget.c:6843
msgid "Accessed"
msgstr "Acessado"
@@ -2338,110 +2338,110 @@ msgstr "Acessado"
msgid "Sans 12"
msgstr "Sans 12"
-#: gtk/gtkfontbutton.c:486 gtk/gtkfontbutton.c:580
+#: gtk/gtkfontbutton.c:486 gtk/gtkfontbutton.c:584
msgid "Pick a Font"
msgstr "Selecione uma fonte"
-#: gtk/gtkfontbutton.c:1300
+#: gtk/gtkfontbutton.c:1308
msgctxt "font"
msgid "None"
msgstr "Nenhuma"
-#: gtk/gtkfontchooserwidget.c:1551
+#: gtk/gtkfontchooserwidget.c:1559
msgid "Width"
msgstr "Largura"
-#: gtk/gtkfontchooserwidget.c:1552
+#: gtk/gtkfontchooserwidget.c:1560
msgid "Weight"
msgstr "Peso"
-#: gtk/gtkfontchooserwidget.c:1553
+#: gtk/gtkfontchooserwidget.c:1561
msgid "Italic"
msgstr "Itálico"
-#: gtk/gtkfontchooserwidget.c:1554
+#: gtk/gtkfontchooserwidget.c:1562
msgid "Slant"
msgstr "Inclinado"
-#: gtk/gtkfontchooserwidget.c:1555
+#: gtk/gtkfontchooserwidget.c:1563
msgid "Optical Size"
msgstr "Tamanho ótico"
-#: gtk/gtkfontchooserwidget.c:2101
+#: gtk/gtkfontchooserwidget.c:2109
msgid "Default"
msgstr "Padrão"
# Drop-down item
# https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
-#: gtk/gtkfontchooserwidget.c:2147
+#: gtk/gtkfontchooserwidget.c:2155
msgid "Ligatures"
msgstr "Ligaduras"
-#: gtk/gtkfontchooserwidget.c:2148
+#: gtk/gtkfontchooserwidget.c:2156
msgid "Letter Case"
msgstr "Caixa de letra"
-#: gtk/gtkfontchooserwidget.c:2149
+#: gtk/gtkfontchooserwidget.c:2157
msgid "Number Case"
msgstr "Caixa de número"
-#: gtk/gtkfontchooserwidget.c:2150
+#: gtk/gtkfontchooserwidget.c:2158
msgid "Number Spacing"
msgstr "Espaçamento de número"
-#: gtk/gtkfontchooserwidget.c:2151
+#: gtk/gtkfontchooserwidget.c:2159
msgid "Number Formatting"
msgstr "Formatação de número"
-#: gtk/gtkfontchooserwidget.c:2152
+#: gtk/gtkfontchooserwidget.c:2160
msgid "Character Variants"
msgstr "Variantes de caractere"
-#: gtk/gtkglarea.c:288
+#: gtk/gtkglarea.c:284
msgid "OpenGL context creation failed"
msgstr "Criação de contexto OpenGL falhou"
-#: gtk/gtklabel.c:5405 gtk/gtktext.c:5948 gtk/gtktextview.c:8552
+#: gtk/gtklabel.c:5456 gtk/gtktext.c:6033 gtk/gtktextview.c:8741
msgid "Cu_t"
msgstr "Recor_tar"
-#: gtk/gtklabel.c:5406 gtk/gtktext.c:5952 gtk/gtktextview.c:8556
+#: gtk/gtklabel.c:5457 gtk/gtktext.c:6037 gtk/gtktextview.c:8745
msgid "_Copy"
msgstr "_Copiar"
-#: gtk/gtklabel.c:5407 gtk/gtktext.c:5956 gtk/gtktextview.c:8560
+#: gtk/gtklabel.c:5458 gtk/gtktext.c:6041 gtk/gtktextview.c:8749
msgid "_Paste"
msgstr "C_olar"
-#: gtk/gtklabel.c:5413 gtk/gtktext.c:5969 gtk/gtktextview.c:8585
+#: gtk/gtklabel.c:5464 gtk/gtktext.c:6054 gtk/gtktextview.c:8774
msgid "Select _All"
msgstr "_Selecionar tudo"
-#: gtk/gtklabel.c:5418
+#: gtk/gtklabel.c:5469
msgid "_Open Link"
msgstr "_Abrir o link"
-#: gtk/gtklabel.c:5422
+#: gtk/gtklabel.c:5473
msgid "Copy _Link Address"
msgstr "Copiar endereço do _link"
-#: gtk/gtklinkbutton.c:258
+#: gtk/gtklinkbutton.c:259
msgid "_Copy URL"
msgstr "_Copiar URL"
-#: gtk/gtklinkbutton.c:543
+#: gtk/gtklinkbutton.c:544
msgid "Invalid URI"
msgstr "URI inválida"
-#: gtk/gtklockbutton.c:274 gtk/ui/gtklockbutton.ui:20
+#: gtk/gtklockbutton.c:289 gtk/ui/gtklockbutton.ui:20
msgid "Lock"
msgstr "Bloquear"
-#: gtk/gtklockbutton.c:283 gtk/ui/gtklockbutton.ui:26
+#: gtk/gtklockbutton.c:303 gtk/ui/gtklockbutton.ui:26
msgid "Unlock"
msgstr "Desbloquear"
-#: gtk/gtklockbutton.c:292
+#: gtk/gtklockbutton.c:317
msgid ""
"Dialog is unlocked.\n"
"Click to prevent further changes"
@@ -2449,7 +2449,7 @@ msgstr ""
"O diálogo está desbloqueado.\n"
"Clique para prevenir mais modificações"
-#: gtk/gtklockbutton.c:301
+#: gtk/gtklockbutton.c:331
msgid ""
"Dialog is locked.\n"
"Click to make changes"
@@ -2457,7 +2457,7 @@ msgstr ""
"O diálogo está bloqueado.\n"
"Clique para fazer modificações"
-#: gtk/gtklockbutton.c:310
+#: gtk/gtklockbutton.c:345
msgid ""
"System policy prevents changes.\n"
"Contact your system administrator"
@@ -2470,7 +2470,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:817
+#: gtk/gtkmain.c:751
msgid "default:LTR"
msgstr "default:LTR"
@@ -2522,86 +2522,86 @@ msgctxt "short time format"
msgid "%d:%02d"
msgstr "%d:%02d"
-#: gtk/gtkmessagedialog.c:157 gtk/gtkmessagedialog.c:175
-#: gtk/gtkprintbackend.c:644 gtk/gtkwindow.c:5951
+#: gtk/gtkmessagedialog.c:158 gtk/gtkmessagedialog.c:176
+#: gtk/gtkprintbackend.c:644 gtk/gtkwindow.c:6137
msgid "_OK"
msgstr "_OK"
-#: gtk/gtkmessagedialog.c:169
+#: gtk/gtkmessagedialog.c:170
msgid "_No"
msgstr "_Não"
-#: gtk/gtkmessagedialog.c:170
+#: gtk/gtkmessagedialog.c:171
msgid "_Yes"
msgstr "_Sim"
-#: gtk/gtkmountoperation.c:609
+#: gtk/gtkmountoperation.c:617
msgid "Co_nnect"
msgstr "C_onectar"
-#: gtk/gtkmountoperation.c:672
+#: gtk/gtkmountoperation.c:680
msgid "Connect As"
msgstr "Conectar como"
-#: gtk/gtkmountoperation.c:681
+#: gtk/gtkmountoperation.c:689
msgid "_Anonymous"
msgstr "_Anonimamente"
-#: gtk/gtkmountoperation.c:687
+#: gtk/gtkmountoperation.c:695
msgid "Registered U_ser"
msgstr "Usuário _registrado"
-#: gtk/gtkmountoperation.c:697
+#: gtk/gtkmountoperation.c:705
msgid "_Username"
msgstr "_Usuário"
-#: gtk/gtkmountoperation.c:702
+#: gtk/gtkmountoperation.c:710
msgid "_Domain"
msgstr "_Domínio"
-#: gtk/gtkmountoperation.c:711
+#: gtk/gtkmountoperation.c:719
msgid "Volume type"
msgstr "Tipo de volume"
-#: gtk/gtkmountoperation.c:721
+#: gtk/gtkmountoperation.c:729
msgid "_Hidden"
msgstr "_Oculto"
-#: gtk/gtkmountoperation.c:724
+#: gtk/gtkmountoperation.c:732
msgid "_Windows system"
msgstr "Sistema _Windows"
-#: gtk/gtkmountoperation.c:727
+#: gtk/gtkmountoperation.c:735
msgid "_PIM"
msgstr "_PIM"
-#: gtk/gtkmountoperation.c:733
+#: gtk/gtkmountoperation.c:741
msgid "_Password"
msgstr "_Senha"
-#: gtk/gtkmountoperation.c:755
+#: gtk/gtkmountoperation.c:763
msgid "Forget password _immediately"
msgstr "_Esquecer senha imediatamente"
-#: gtk/gtkmountoperation.c:765
+#: gtk/gtkmountoperation.c:773
msgid "Remember password until you _logout"
msgstr "Lembrar senha até o _fim dessa sessão"
-#: gtk/gtkmountoperation.c:776
+#: gtk/gtkmountoperation.c:784
msgid "Remember _forever"
msgstr "_Lembrar para sempre"
-#: gtk/gtkmountoperation.c:1202
+#: gtk/gtkmountoperation.c:1210
#, c-format
msgid "Unknown Application (PID %d)"
msgstr "Aplicativo desconhecido (PID %d)"
-#: gtk/gtkmountoperation.c:1401
+#: gtk/gtkmountoperation.c:1409
#, c-format
msgid "Unable to end process"
msgstr "Não foi possível finalizar o processo"
-#: gtk/gtkmountoperation.c:1431
+#: gtk/gtkmountoperation.c:1439
msgid "_End Process"
msgstr "_Finalizar processo"
@@ -2642,32 +2642,32 @@ msgid "GTK could not find a media module. Check your installation."
msgstr ""
"GTK não conseguiu localizar um módulo de mídia. Verifique sua instalação."
-#: gtk/gtknotebook.c:1428
+#: gtk/gtknotebook.c:1527
msgid "Tab list"
msgstr "Lista de abas"
-#: gtk/gtknotebook.c:3147
+#: gtk/gtknotebook.c:3249
msgid "Previous tab"
msgstr "Aba anterior"
-#: gtk/gtknotebook.c:3151
+#: gtk/gtknotebook.c:3253
msgid "Next tab"
msgstr "Próxima aba"
-#: gtk/gtknotebook.c:3971
+#: gtk/gtknotebook.c:4073
msgid "Tab"
msgstr "Aba"
-#: gtk/gtknotebook.c:4269 gtk/gtknotebook.c:6473
+#: gtk/gtknotebook.c:4371 gtk/gtknotebook.c:6579
#, c-format
msgid "Page %u"
msgstr "Página %u"
-#: gtk/gtkpagesetup.c:606 gtk/gtkpapersize.c:944 gtk/gtkpapersize.c:984
+#: gtk/gtkpagesetup.c:609 gtk/gtkpapersize.c:943 gtk/gtkpapersize.c:983
msgid "Not a valid page setup file"
msgstr "Não é um arquivo de configuração de página válido"
-#: gtk/gtkpagesetupunixdialog.c:201 gtk/gtkprintunixdialog.c:711
+#: gtk/gtkpagesetupunixdialog.c:201 gtk/gtkprintunixdialog.c:752
msgid "Manage Custom Sizes…"
msgstr "Gerenciar tamanhos personalizados…"
@@ -2703,99 +2703,99 @@ msgstr ""
msgid "Page Setup"
msgstr "Configurar página"
-#: gtk/gtkpasswordentry.c:165
+#: gtk/gtkpasswordentry.c:166
msgid "Hide text"
msgstr "Ocultar texto"
-#: gtk/gtkpasswordentry.c:170 gtk/gtkpasswordentry.c:586
+#: gtk/gtkpasswordentry.c:171 gtk/gtkpasswordentry.c:605
msgid "Show text"
msgstr "Mostrar texto"
-#: gtk/gtkpasswordentry.c:197
+#: gtk/gtkpasswordentry.c:198
msgid "Caps Lock is on"
msgstr "A tecla Caps Lock está ativa"
-#: gtk/gtkpasswordentry.c:658
+#: gtk/gtkpasswordentry.c:677
msgid "_Show Text"
msgstr "Mo_strar a texto"
#. translators: %s is the name of a cloud provider for files
-#: gtk/gtkplacessidebar.c:913
+#: gtk/gtkplacessidebar.c:914
#, c-format
msgid "Open %s"
msgstr "Abrir %s"
-#: gtk/gtkplacessidebar.c:1003
+#: gtk/gtkplacessidebar.c:1004
msgid "Recent"
msgstr "Recentes"
-#: gtk/gtkplacessidebar.c:1005
+#: gtk/gtkplacessidebar.c:1006
msgid "Recent files"
msgstr "Arquivos recentes"
-#: gtk/gtkplacessidebar.c:1014
+#: gtk/gtkplacessidebar.c:1015
msgid "Starred"
msgstr "Favorito"
-#: gtk/gtkplacessidebar.c:1016
+#: gtk/gtkplacessidebar.c:1017
msgid "Starred files"
msgstr "Arquivos favoritos"
-#: gtk/gtkplacessidebar.c:1027
+#: gtk/gtkplacessidebar.c:1028
msgid "Open your personal folder"
msgstr "Abre a sua pasta pessoal"
-#: gtk/gtkplacessidebar.c:1040
+#: gtk/gtkplacessidebar.c:1041
msgid "Desktop"
msgstr "Área de trabalho"
-#: gtk/gtkplacessidebar.c:1042
+#: gtk/gtkplacessidebar.c:1043
msgid "Open the contents of your desktop in a folder"
msgstr "Abrir o conteúdo da sua área de trabalho em uma pasta"
-#: gtk/gtkplacessidebar.c:1056
+#: gtk/gtkplacessidebar.c:1057
msgid "Enter Location"
msgstr "Inserir localização"
-#: gtk/gtkplacessidebar.c:1058
+#: gtk/gtkplacessidebar.c:1059
msgid "Manually enter a location"
msgstr "Inserir manualmente uma localização"
-#: gtk/gtkplacessidebar.c:1068
+#: gtk/gtkplacessidebar.c:1069
msgid "Trash"
msgstr "Lixeira"
-#: gtk/gtkplacessidebar.c:1070
+#: gtk/gtkplacessidebar.c:1071
msgid "Open the trash"
msgstr "Abre a lixeira"
-#: gtk/gtkplacessidebar.c:1181 gtk/gtkplacessidebar.c:1209
-#: gtk/gtkplacessidebar.c:1409
+#: gtk/gtkplacessidebar.c:1182 gtk/gtkplacessidebar.c:1210
+#: gtk/gtkplacessidebar.c:1410
#, c-format
msgid "Mount and open “%s”"
msgstr "Monta e abre “%s”"
-#: gtk/gtkplacessidebar.c:1304
+#: gtk/gtkplacessidebar.c:1305
msgid "Open the contents of the file system"
msgstr "Abre o conteúdo do sistema de arquivos"
-#: gtk/gtkplacessidebar.c:1387
+#: gtk/gtkplacessidebar.c:1388
msgid "New bookmark"
msgstr "Novo marcador"
-#: gtk/gtkplacessidebar.c:1389
+#: gtk/gtkplacessidebar.c:1390
msgid "Add a new bookmark"
msgstr "Adiciona um novo marcador"
-#: gtk/gtkplacessidebar.c:1454
+#: gtk/gtkplacessidebar.c:1455
msgid "Other Locations"
msgstr "Outros locais"
-#: gtk/gtkplacessidebar.c:1455
+#: gtk/gtkplacessidebar.c:1456
msgid "Show other locations"
msgstr "Mostra outros locais"
-#: gtk/gtkplacessidebar.c:1960 gtk/gtkplacessidebar.c:2961
+#: gtk/gtkplacessidebar.c:1961 gtk/gtkplacessidebar.c:2962
#, c-format
msgid "Unable to start “%s”"
msgstr "Não foi possível iniciar “%s”"
@@ -2803,218 +2803,218 @@ msgstr "Não foi possível iniciar “%s”"
#. Translators: This means that unlocking an encrypted storage
#. * device failed. %s is the name of the device.
#.
-#: gtk/gtkplacessidebar.c:1996
+#: gtk/gtkplacessidebar.c:1997
#, c-format
msgid "Error unlocking “%s”"
msgstr "Erro ao desbloquear “%s”"
-#: gtk/gtkplacessidebar.c:1998
+#: gtk/gtkplacessidebar.c:1999
#, c-format
msgid "Unable to access “%s”"
msgstr "Não foi possível acessar “%s”"
-#: gtk/gtkplacessidebar.c:2229
+#: gtk/gtkplacessidebar.c:2230
msgid "This name is already taken"
msgstr "Este nome já foi escolhido"
-#: gtk/gtkplacessidebar.c:2302 gtk/inspector/actions.ui:19
+#: gtk/gtkplacessidebar.c:2303 gtk/inspector/actions.ui:19
#: gtk/inspector/css-node-tree.ui:35 gtk/inspector/prop-list.ui:23
#: gtk/ui/gtkfilechooserwidget.ui:167 gtk/ui/gtkfilechooserwidget.ui:439
#: gtk/ui/gtkprintunixdialog.ui:85
msgid "Name"
msgstr "Nome"
-#: gtk/gtkplacessidebar.c:2502
+#: gtk/gtkplacessidebar.c:2503
#, c-format
msgid "Unable to unmount “%s”"
msgstr "Não foi possível desmontar “%s”"
-#: gtk/gtkplacessidebar.c:2678
+#: gtk/gtkplacessidebar.c:2679
#, c-format
msgid "Unable to stop “%s”"
msgstr "Não foi possível parar “%s”"
-#: gtk/gtkplacessidebar.c:2707
+#: gtk/gtkplacessidebar.c:2708
#, c-format
msgid "Unable to eject “%s”"
msgstr "Não foi possível ejetar “%s”"
-#: gtk/gtkplacessidebar.c:2736 gtk/gtkplacessidebar.c:2765
+#: gtk/gtkplacessidebar.c:2737 gtk/gtkplacessidebar.c:2766
#, c-format
msgid "Unable to eject %s"
msgstr "Não foi possível ejetar %s"
-#: gtk/gtkplacessidebar.c:2913
+#: gtk/gtkplacessidebar.c:2914
#, c-format
msgid "Unable to poll “%s” for media changes"
msgstr "Não foi possível verificar “%s” por alterações de mídia"
# Concorre com "A_brir", "Abrir em nova _janela", "_Propriedades", "_Remover",
# "Digitar _local" e "_Marcar este local".
-#: gtk/gtkplacessidebar.c:3132 gtk/gtkplacessidebar.c:3219
-#: gtk/gtkplacesview.c:1654
+#: gtk/gtkplacessidebar.c:3133 gtk/gtkplacessidebar.c:3220
+#: gtk/gtkplacesview.c:1662
msgid "Open in New _Tab"
msgstr "Abrir em _nova aba"
# Concorre com "A_brir", "Abrir em _nova aba", "_Propriedades", "_Remover",
# "Digitar _local" e "_Marcar este local".
-#: gtk/gtkplacessidebar.c:3138 gtk/gtkplacessidebar.c:3228
-#: gtk/gtkplacesview.c:1659
+#: gtk/gtkplacessidebar.c:3139 gtk/gtkplacessidebar.c:3229
+#: gtk/gtkplacesview.c:1667
msgid "Open in New _Window"
msgstr "Abrir em nova _janela"
-#: gtk/gtkplacessidebar.c:3239
+#: gtk/gtkplacessidebar.c:3240
msgid "_Add Bookmark"
msgstr "_Adicionar marcador"
-#: gtk/gtkplacessidebar.c:3243
+#: gtk/gtkplacessidebar.c:3244
msgid "_Remove"
msgstr "_Remover"
-#: gtk/gtkplacessidebar.c:3259 gtk/gtkplacesview.c:1684
+#: gtk/gtkplacessidebar.c:3260 gtk/gtkplacesview.c:1692
msgid "_Mount"
msgstr "_Montar"
-#: gtk/gtkplacessidebar.c:3268 gtk/gtkplacesview.c:1673
+#: gtk/gtkplacessidebar.c:3269 gtk/gtkplacesview.c:1681
msgid "_Unmount"
msgstr "Desmo_ntar"
-#: gtk/gtkplacessidebar.c:3275
+#: gtk/gtkplacessidebar.c:3276
msgid "_Eject"
msgstr "_Ejetar"
-#: gtk/gtkplacessidebar.c:3285
+#: gtk/gtkplacessidebar.c:3286
msgid "_Detect Media"
msgstr "_Detectar mídia"
-#: gtk/gtkplacessidebar.c:3294
+#: gtk/gtkplacessidebar.c:3295
msgid "_Start"
msgstr "_Iniciar"
-#: gtk/gtkplacessidebar.c:3296
+#: gtk/gtkplacessidebar.c:3297
msgid "_Power On"
msgstr "_Ligar"
-#: gtk/gtkplacessidebar.c:3297
+#: gtk/gtkplacessidebar.c:3298
msgid "_Connect Drive"
msgstr "_Conectar unidade"
-#: gtk/gtkplacessidebar.c:3298
+#: gtk/gtkplacessidebar.c:3299
msgid "_Start Multi-disk Device"
msgstr "_Iniciar dispositivo multi-disco"
-#: gtk/gtkplacessidebar.c:3299
+#: gtk/gtkplacessidebar.c:3300
msgid "_Unlock Device"
msgstr "Desbloquear dispositivo"
-#: gtk/gtkplacessidebar.c:3309
+#: gtk/gtkplacessidebar.c:3310
msgid "_Stop"
msgstr "_Parar"
-#: gtk/gtkplacessidebar.c:3311
+#: gtk/gtkplacessidebar.c:3312
msgid "_Safely Remove Drive"
msgstr "_Remover unidade com segurança"
-#: gtk/gtkplacessidebar.c:3312
+#: gtk/gtkplacessidebar.c:3313
msgid "_Disconnect Drive"
msgstr "_Desconectar unidade"
-#: gtk/gtkplacessidebar.c:3313
+#: gtk/gtkplacessidebar.c:3314
msgid "_Stop Multi-disk Device"
msgstr "_Parar dispositivo multi-disco"
-#: gtk/gtkplacessidebar.c:3314
+#: gtk/gtkplacessidebar.c:3315
msgid "_Lock Device"
msgstr "_Bloquear dispositivo"
-#: gtk/gtkplacessidebar.c:3802 gtk/gtkplacesview.c:1106
+#: gtk/gtkplacessidebar.c:3803 gtk/gtkplacesview.c:1103
msgid "Computer"
msgstr "Computador"
-#: gtk/gtkplacesview.c:892
+#: gtk/gtkplacesview.c:889
msgid "Searching for network locations"
msgstr "Pesquisando por locais de rede"
-#: gtk/gtkplacesview.c:899
+#: gtk/gtkplacesview.c:896
msgid "No network locations found"
msgstr "Nenhum local de rede encontrado"
#. if it wasn't cancelled show a dialog
-#: gtk/gtkplacesview.c:1213 gtk/gtkplacesview.c:1299
+#: gtk/gtkplacesview.c:1210 gtk/gtkplacesview.c:1307
msgid "Unable to access location"
msgstr "Não foi possível acessar a localização"
#. Restore from Cancel to Connect
-#: gtk/gtkplacesview.c:1229 gtk/ui/gtkplacesview.ui:262
+#: gtk/gtkplacesview.c:1228 gtk/ui/gtkplacesview.ui:262
msgid "Con_nect"
msgstr "Co_nectar"
#. if it wasn't cancelled show a dialog
-#: gtk/gtkplacesview.c:1358
+#: gtk/gtkplacesview.c:1366
msgid "Unable to unmount volume"
msgstr "Não foi possível desmontar o volume"
#. Allow to cancel the operation
-#: gtk/gtkplacesview.c:1450
+#: gtk/gtkplacesview.c:1458
msgid "Cance_l"
msgstr "Cance_lar"
-#: gtk/gtkplacesview.c:1597
+#: gtk/gtkplacesview.c:1605
msgid "AppleTalk"
msgstr "AppleTalk"
-#: gtk/gtkplacesview.c:1603
+#: gtk/gtkplacesview.c:1611
msgid "File Transfer Protocol"
msgstr "Protocolo de transferência de arquivos"
#. Translators: do not translate ftp:// and ftps://
-#: gtk/gtkplacesview.c:1605
+#: gtk/gtkplacesview.c:1613
msgid "ftp:// or ftps://"
msgstr "ftp:// ou ftps://"
-#: gtk/gtkplacesview.c:1611
+#: gtk/gtkplacesview.c:1619
msgid "Network File System"
msgstr "Sistema de arquivos de rede"
-#: gtk/gtkplacesview.c:1617
+#: gtk/gtkplacesview.c:1625
msgid "Samba"
msgstr "Samba"
-#: gtk/gtkplacesview.c:1623
+#: gtk/gtkplacesview.c:1631
msgid "SSH File Transfer Protocol"
msgstr "Protocolo de transferência de arquivos via SSH"
#. Translators: do not translate sftp:// and ssh://
-#: gtk/gtkplacesview.c:1625
+#: gtk/gtkplacesview.c:1633
msgid "sftp:// or ssh://"
msgstr "sftp:// ou ssh://"
-#: gtk/gtkplacesview.c:1631
+#: gtk/gtkplacesview.c:1639
msgid "WebDAV"
msgstr "WebDAV"
#. Translators: do not translate dav:// and davs://
-#: gtk/gtkplacesview.c:1633
+#: gtk/gtkplacesview.c:1641
msgid "dav:// or davs://"
msgstr "dav:// ou davs://"
-#: gtk/gtkplacesview.c:1668
+#: gtk/gtkplacesview.c:1676
msgid "_Disconnect"
msgstr "_Desconectar"
-#: gtk/gtkplacesview.c:1679
+#: gtk/gtkplacesview.c:1687
msgid "_Connect"
msgstr "_Conectar"
-#: gtk/gtkplacesview.c:1863
+#: gtk/gtkplacesview.c:1871
msgid "Unable to get remote server location"
msgstr "Não foi possível obter a localização do servidor remoto"
-#: gtk/gtkplacesview.c:2006 gtk/gtkplacesview.c:2015
+#: gtk/gtkplacesview.c:2014 gtk/gtkplacesview.c:2023
msgid "Networks"
msgstr "Redes"
-#: gtk/gtkplacesview.c:2006 gtk/gtkplacesview.c:2015
+#: gtk/gtkplacesview.c:2014 gtk/gtkplacesview.c:2023
msgid "On This Computer"
msgstr "Neste computador"
@@ -3063,84 +3063,84 @@ msgstr "Não disponível"
#. * jobs. %s gets replaced by the application name, %d gets replaced
#. * by the job number.
#.
-#: gtk/gtkprintoperation.c:255
+#: gtk/gtkprintoperation.c:253
#, c-format
msgid "%s job #%d"
msgstr "%s tarefa #%d"
-#: gtk/gtkprintoperation.c:1697
+#: gtk/gtkprintoperation.c:1719
msgctxt "print operation status"
msgid "Initial state"
msgstr "Estado inicial"
-#: gtk/gtkprintoperation.c:1698
+#: gtk/gtkprintoperation.c:1720
msgctxt "print operation status"
msgid "Preparing to print"
msgstr "Preparando para imprimir"
-#: gtk/gtkprintoperation.c:1699
+#: gtk/gtkprintoperation.c:1721
msgctxt "print operation status"
msgid "Generating data"
msgstr "Gerando dados"
-#: gtk/gtkprintoperation.c:1700
+#: gtk/gtkprintoperation.c:1722
msgctxt "print operation status"
msgid "Sending data"
msgstr "Enviando dados"
-#: gtk/gtkprintoperation.c:1701
+#: gtk/gtkprintoperation.c:1723
msgctxt "print operation status"
msgid "Waiting"
msgstr "Esperando"
-#: gtk/gtkprintoperation.c:1702
+#: gtk/gtkprintoperation.c:1724
msgctxt "print operation status"
msgid "Blocking on issue"
msgstr "Bloqueado por problema"
-#: gtk/gtkprintoperation.c:1703
+#: gtk/gtkprintoperation.c:1725
msgctxt "print operation status"
msgid "Printing"
msgstr "Imprimindo"
-#: gtk/gtkprintoperation.c:1704
+#: gtk/gtkprintoperation.c:1726
msgctxt "print operation status"
msgid "Finished"
msgstr "Concluído"
-#: gtk/gtkprintoperation.c:1705
+#: gtk/gtkprintoperation.c:1727
msgctxt "print operation status"
msgid "Finished with error"
msgstr "Concluído com erro"
-#: gtk/gtkprintoperation.c:2239
+#: gtk/gtkprintoperation.c:2270
#, c-format
msgid "Preparing %d"
msgstr "Preparando %d"
-#: gtk/gtkprintoperation.c:2241 gtk/gtkprintoperation.c:2857
+#: gtk/gtkprintoperation.c:2272 gtk/gtkprintoperation.c:2890
#, c-format
msgid "Preparing"
msgstr "Preparando"
-#: gtk/gtkprintoperation.c:2244
+#: gtk/gtkprintoperation.c:2275
#, c-format
msgid "Printing %d"
msgstr "Imprimindo %d"
-#: gtk/gtkprintoperation.c:2888
+#: gtk/gtkprintoperation.c:2921
#, c-format
msgid "Error creating print preview"
msgstr "Erro ao criar visualização de impressão"
-#: gtk/gtkprintoperation.c:2891
+#: gtk/gtkprintoperation.c:2924
#, c-format
msgid "The most probable reason is that a temporary file could not be created."
msgstr "A razão mais provável é que um arquivo temporário não pôde ser criado."
#. window
#: gtk/gtkprintoperation-portal.c:236 gtk/gtkprintoperation-portal.c:554
-#: gtk/gtkprintoperation-portal.c:623 gtk/gtkprintunixdialog.c:3028
+#: gtk/gtkprintoperation-portal.c:623 gtk/gtkprintunixdialog.c:3069
msgid "Print"
msgstr "Imprimir"
@@ -3158,7 +3158,7 @@ msgstr "Sem papel"
#. Translators: this is a printer status.
#: gtk/gtkprintoperation-win32.c:638
-#: modules/printbackends/gtkprintbackendcups.c:2607
+#: modules/printbackends/gtkprintbackendcups.c:2659
msgid "Paused"
msgstr "Pausada"
@@ -3203,20 +3203,20 @@ msgstr "Manipulador inválido para PrintDlgEx"
msgid "Unspecified error"
msgstr "Erro não especificado"
-#: gtk/gtkprintunixdialog.c:781
+#: gtk/gtkprintunixdialog.c:822
msgid "Pre_view"
msgstr "_Visualizar"
# Mudei de _Imprimir para Im_primir para combinar com Ctrl+P.
-#: gtk/gtkprintunixdialog.c:783
+#: gtk/gtkprintunixdialog.c:824
msgid "_Print"
msgstr "Im_primir"
-#: gtk/gtkprintunixdialog.c:911
+#: gtk/gtkprintunixdialog.c:952
msgid "Getting printer information failed"
msgstr "Falha ao obter informações da impressora"
-#: gtk/gtkprintunixdialog.c:1847
+#: gtk/gtkprintunixdialog.c:1888
msgid "Getting printer information…"
msgstr "Obtendo informações da impressora…"
@@ -3226,92 +3226,92 @@ msgstr "Obtendo informações da impressora…"
#. Translators: These strings name the possible arrangements of
#. * multiple pages on a sheet when printing
#.
-#: gtk/gtkprintunixdialog.c:2773
-#: modules/printbackends/gtkprintbackendcups.c:5465
+#: gtk/gtkprintunixdialog.c:2814
+#: modules/printbackends/gtkprintbackendcups.c:5674
msgid "Left to right, top to bottom"
msgstr "Esquerda para direita, cima para baixo"
-#: gtk/gtkprintunixdialog.c:2773
-#: modules/printbackends/gtkprintbackendcups.c:5465
+#: gtk/gtkprintunixdialog.c:2814
+#: modules/printbackends/gtkprintbackendcups.c:5674
msgid "Left to right, bottom to top"
msgstr "Esquerda para direita, baixo para cima"
-#: gtk/gtkprintunixdialog.c:2774
-#: modules/printbackends/gtkprintbackendcups.c:5466
+#: gtk/gtkprintunixdialog.c:2815
+#: modules/printbackends/gtkprintbackendcups.c:5675
msgid "Right to left, top to bottom"
msgstr "Direita para esquerda, cima para baixo"
-#: gtk/gtkprintunixdialog.c:2774
-#: modules/printbackends/gtkprintbackendcups.c:5466
+#: gtk/gtkprintunixdialog.c:2815
+#: modules/printbackends/gtkprintbackendcups.c:5675
msgid "Right to left, bottom to top"
msgstr "Direita para esquerda, baixo para cima"
-#: gtk/gtkprintunixdialog.c:2775
-#: modules/printbackends/gtkprintbackendcups.c:5467
+#: gtk/gtkprintunixdialog.c:2816
+#: modules/printbackends/gtkprintbackendcups.c:5676
msgid "Top to bottom, left to right"
msgstr "Cima para baixo, esquerda para direita"
-#: gtk/gtkprintunixdialog.c:2775
-#: modules/printbackends/gtkprintbackendcups.c:5467
+#: gtk/gtkprintunixdialog.c:2816
+#: modules/printbackends/gtkprintbackendcups.c:5676
msgid "Top to bottom, right to left"
msgstr "Cima para baixo, direita para esquerda"
-#: gtk/gtkprintunixdialog.c:2776
-#: modules/printbackends/gtkprintbackendcups.c:5468
+#: gtk/gtkprintunixdialog.c:2817
+#: modules/printbackends/gtkprintbackendcups.c:5677
msgid "Bottom to top, left to right"
msgstr "Baixo para cima, esquerda para direita"
-#: gtk/gtkprintunixdialog.c:2776
-#: modules/printbackends/gtkprintbackendcups.c:5468
+#: gtk/gtkprintunixdialog.c:2817
+#: modules/printbackends/gtkprintbackendcups.c:5677
msgid "Bottom to top, right to left"
msgstr "Baixo para cima, direita para esquerda"
-#: gtk/gtkprintunixdialog.c:2780 gtk/gtkprintunixdialog.c:2793
+#: gtk/gtkprintunixdialog.c:2821 gtk/gtkprintunixdialog.c:2834
msgid "Page Ordering"
msgstr "Ordem das páginas"
-#: gtk/gtkprintunixdialog.c:2809
+#: gtk/gtkprintunixdialog.c:2850
msgid "Left to right"
msgstr "Esquerda para direita"
-#: gtk/gtkprintunixdialog.c:2810
+#: gtk/gtkprintunixdialog.c:2851
msgid "Right to left"
msgstr "Direita para esquerda"
-#: gtk/gtkprintunixdialog.c:2822
+#: gtk/gtkprintunixdialog.c:2863
msgid "Top to bottom"
msgstr "Cima para baixo"
-#: gtk/gtkprintunixdialog.c:2823
+#: gtk/gtkprintunixdialog.c:2864
msgid "Bottom to top"
msgstr "Baixo para cima"
-#: gtk/gtkprogressbar.c:599
+#: gtk/gtkprogressbar.c:619
#, c-format
msgctxt "progress bar label"
msgid "%.0f %%"
msgstr "%.0f %%"
-#: gtk/gtkrecentmanager.c:1030 gtk/gtkrecentmanager.c:1043
-#: gtk/gtkrecentmanager.c:1181 gtk/gtkrecentmanager.c:1191
-#: gtk/gtkrecentmanager.c:1241 gtk/gtkrecentmanager.c:1250
+#: gtk/gtkrecentmanager.c:1027 gtk/gtkrecentmanager.c:1040
+#: gtk/gtkrecentmanager.c:1178 gtk/gtkrecentmanager.c:1188
+#: gtk/gtkrecentmanager.c:1238 gtk/gtkrecentmanager.c:1247
#, c-format
msgid "Unable to find an item with URI “%s”"
msgstr "Não foi possível encontrar um item com o URI “%s”"
-#: gtk/gtkrecentmanager.c:1265
+#: gtk/gtkrecentmanager.c:1262
#, c-format
msgid "Unable to move the item with URI “%s” to “%s”"
msgstr "Não foi possível mover o item com o URI “%s” para “%s”"
-#: gtk/gtkrecentmanager.c:2317
+#: gtk/gtkrecentmanager.c:2323
#, c-format
msgid "No registered application with name “%s” for item with URI “%s” found"
msgstr ""
"Não foi encontrado nenhum aplicativo registrado com o nome “%s” para o item "
"com URI “%s”"
-#: gtk/gtksearchentry.c:578
+#: gtk/gtksearchentry.c:599
msgid "Clear entry"
msgstr "Limpar entrada"
@@ -3321,7 +3321,7 @@ msgstr "Limpar entrada"
#. * this string very short, ideally just a single character, since it will
#. * be rendered as part of the key.
#.
-#: gtk/gtkshortcutlabel.c:80
+#: gtk/gtkshortcutlabel.c:78
msgctxt "keyboard side marker"
msgid "L"
msgstr "E"
@@ -3332,12 +3332,12 @@ msgstr "E"
#. * this string very short, ideally just a single character, since it will
#. * be rendered as part of the key.
#.
-#: gtk/gtkshortcutlabel.c:93
+#: gtk/gtkshortcutlabel.c:91
msgctxt "keyboard side marker"
msgid "R"
msgstr "D"
-#: gtk/gtkshortcutssection.c:397
+#: gtk/gtkshortcutssection.c:404
msgid "_Show All"
msgstr "_Mostrar todos"
@@ -3389,13 +3389,13 @@ msgstr "Deslizar para direita"
# Título da janela exibindo os atalhos disponíveis
#. Translators: This is the window title for the shortcuts window in normal mode
-#: gtk/gtkshortcutswindow.c:875 gtk/inspector/window.ui:517
+#: gtk/gtkshortcutswindow.c:874 gtk/inspector/window.ui:517
msgid "Shortcuts"
msgstr "Atalhos"
# Título da janela com os resultados da pesquisa
#. Translators: This is the window title for the shortcuts window in search mode
-#: gtk/gtkshortcutswindow.c:880
+#: gtk/gtkshortcutswindow.c:879
msgid "Search Results"
msgstr "Resultados da pesquisa"
@@ -3403,17 +3403,17 @@ msgstr "Resultados da pesquisa"
# Source code using placeholder: https://goo.gl/ItWsmZ
# GtkEntry placeholder reference: https://goo.gl/e5Ehwr
#. Translators: This is placeholder text for the search entry in the shortcuts window
-#: gtk/gtkshortcutswindow.c:910
+#: gtk/gtkshortcutswindow.c:909
msgid "Search Shortcuts"
msgstr "Pesquisar atalhos"
-#: gtk/gtkshortcutswindow.c:969 gtk/ui/gtkemojichooser.ui:346
+#: gtk/gtkshortcutswindow.c:968 gtk/ui/gtkemojichooser.ui:348
#: gtk/ui/gtkfilechooserwidget.ui:296
msgid "No Results Found"
msgstr "Nenhum resultado encontrado"
# Texto exibido abaixo do título anterior (No Results Found).
-#: gtk/gtkshortcutswindow.c:975 gtk/ui/gtkemojichooser.ui:359
+#: gtk/gtkshortcutswindow.c:974 gtk/ui/gtkemojichooser.ui:361
#: gtk/ui/gtkfilechooserwidget.ui:309 gtk/ui/gtkplacesview.ui:230
msgid "Try a different search"
msgstr "Tente uma pesquisa diferente"
@@ -3422,27 +3422,27 @@ msgstr "Tente uma pesquisa diferente"
msgid "Could not show link"
msgstr "Não foi possível mostrar o link"
-#: gtk/gtktext.c:5974 gtk/gtktextview.c:8590
+#: gtk/gtktext.c:6059 gtk/gtktextview.c:8779
msgid "Insert _Emoji"
msgstr "Inserir _emoji"
-#: gtk/gtktextview.c:8572
+#: gtk/gtktextview.c:8761
msgid "_Undo"
msgstr "_Desfazer"
-#: gtk/gtktextview.c:8576
+#: gtk/gtktextview.c:8765
msgid "_Redo"
msgstr "_Refazer"
-#: gtk/gtktreeexpander.c:194
+#: gtk/gtktreeexpander.c:195
msgid "Expand"
msgstr "Expandir"
-#: gtk/gtkvolumebutton.c:229
+#: gtk/gtkvolumebutton.c:230
msgid "Muted"
msgstr "Mudo"
-#: gtk/gtkvolumebutton.c:233
+#: gtk/gtkvolumebutton.c:234
msgid "Full Volume"
msgstr "Volume máximo"
@@ -3451,18 +3451,18 @@ msgstr "Volume máximo"
#. * Translate the "%d" to "%Id" if you want to use localised digits,
#. * or otherwise translate the "%d" to "%d".
#.
-#: gtk/gtkvolumebutton.c:246
+#: gtk/gtkvolumebutton.c:247
#, c-format
msgctxt "volume percentage"
msgid "%d %%"
msgstr "%d %%"
-#: gtk/gtkwindow.c:5938
+#: gtk/gtkwindow.c:6124
#, c-format
msgid "Do you want to use GTK Inspector?"
msgstr "Você deseja usar Inspetor GTK?"
-#: gtk/gtkwindow.c:5940
+#: gtk/gtkwindow.c:6126
#, c-format
msgid ""
"GTK Inspector is an interactive debugger that lets you explore and modify "
@@ -3473,35 +3473,35 @@ msgstr ""
"modifique o estado interno de qualquer aplicativo GTK. Usá-lo pode fazer que "
"o aplicativo se encerre ou falhe."
-#: gtk/gtkwindow.c:5945
+#: gtk/gtkwindow.c:6131
msgid "Don’t show this message again"
msgstr "Não mostre essa mensagem novamente"
-#: gtk/gtkwindowcontrols.c:307 gtk/gtkwindowhandle.c:232
+#: gtk/gtkwindowcontrols.c:309 gtk/gtkwindowhandle.c:230
msgid "Minimize"
msgstr "Minimizar"
-#: gtk/gtkwindowcontrols.c:309
+#: gtk/gtkwindowcontrols.c:311
msgid "Minimize the window"
msgstr "Minimiza a janela"
-#: gtk/gtkwindowcontrols.c:333 gtk/gtkwindowhandle.c:238
+#: gtk/gtkwindowcontrols.c:335 gtk/gtkwindowhandle.c:236
msgid "Maximize"
msgstr "Maximizar"
-#: gtk/gtkwindowcontrols.c:335
+#: gtk/gtkwindowcontrols.c:337
msgid "Maximize the window"
msgstr "Maximiza a janela"
-#: gtk/gtkwindowcontrols.c:355 gtk/gtkwindowhandle.c:248
+#: gtk/gtkwindowcontrols.c:357 gtk/gtkwindowhandle.c:246
msgid "Close"
msgstr "Fechar"
-#: gtk/gtkwindowcontrols.c:357
+#: gtk/gtkwindowcontrols.c:359
msgid "Close the window"
msgstr "Fecha a janela"
-#: gtk/gtkwindowhandle.c:225
+#: gtk/gtkwindowhandle.c:223
msgid "Restore"
msgstr "Restaurar"
@@ -3523,11 +3523,11 @@ msgstr "Atributo"
msgid "Value"
msgstr "Valor"
-#: gtk/inspector/action-editor.c:316
+#: gtk/inspector/action-editor.c:123
msgid "Activate"
msgstr "Ativar"
-#: gtk/inspector/action-editor.c:335
+#: gtk/inspector/action-editor.c:135
msgid "Set State"
msgstr "Definir estado"
@@ -3546,32 +3546,38 @@ msgstr "Estado"
# Drop-down item
# https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
-#: gtk/inspector/controllers.c:144
+#: gtk/inspector/controllers.c:126
msgctxt "event phase"
msgid "None"
msgstr "Nenhum"
# Drop-down item
# https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
-#: gtk/inspector/controllers.c:145
+#: gtk/inspector/controllers.c:129
msgctxt "event phase"
msgid "Capture"
msgstr "Descendente"
# Drop-down item
# https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
-#: gtk/inspector/controllers.c:146
+#: gtk/inspector/controllers.c:132
msgctxt "event phase"
msgid "Bubble"
msgstr "Ascendente"
# Drop-down item
# https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
-#: gtk/inspector/controllers.c:147
+#: gtk/inspector/controllers.c:135
msgctxt "event phase"
msgid "Target"
msgstr "Destino"
+#: gtk/inspector/controllers.c:156
+#| msgid "Cumulative"
+msgctxt "propagation limit"
+msgid "Native"
+msgstr "Nativo"
+
#: gtk/inspector/css-editor.c:129
msgid "You can type here any CSS rule recognized by GTK."
msgstr "Você pode digitar aqui qualquer regra CSS que o GTK reconheça."
@@ -3619,22 +3625,46 @@ msgstr "Classes de estilo"
msgid "CSS Property"
msgstr "Propriedade CSS"
-#: gtk/inspector/general.c:345
+#: gtk/inspector/general.c:299
+#| msgid "Disabled"
+msgctxt "GL version"
+msgid "Disabled"
+msgstr "Desativada"
+
+#: gtk/inspector/general.c:300
+#| msgid "Disabled"
+msgctxt "GL vendor"
+msgid "Disabled"
+msgstr "Desativado"
+
+#: gtk/inspector/general.c:340 gtk/inspector/general.c:358
msgctxt "GL version"
msgid "None"
msgstr "Nenhuma"
-#: gtk/inspector/general.c:346
+#: gtk/inspector/general.c:341 gtk/inspector/general.c:359
msgctxt "GL vendor"
msgid "None"
msgstr "Nenhum"
-#: gtk/inspector/general.c:447
+#: gtk/inspector/general.c:410
+#| msgid "Disabled"
+msgctxt "Vulkan device"
+msgid "Disabled"
+msgstr "Desativado"
+
+#: gtk/inspector/general.c:411 gtk/inspector/general.c:412
+#| msgid "Disabled"
+msgctxt "Vulkan version"
+msgid "Disabled"
+msgstr "Desativada"
+
+#: gtk/inspector/general.c:468
msgctxt "Vulkan device"
msgid "None"
msgstr "Nenhum"
-#: gtk/inspector/general.c:448 gtk/inspector/general.c:449
+#: gtk/inspector/general.c:469 gtk/inspector/general.c:470
msgctxt "Vulkan version"
msgid "None"
msgstr "Nenhuma"
@@ -3754,8 +3784,8 @@ msgid "Surface"
msgstr "Surpefície"
#: gtk/inspector/misc-info.ui:316 gtk/inspector/misc-info.ui:355
-#: gtk/inspector/misc-info.ui:394 gtk/inspector/prop-editor.c:1054
-#: gtk/inspector/prop-editor.c:1414 gtk/inspector/window.ui:415
+#: gtk/inspector/misc-info.ui:394 gtk/inspector/prop-editor.c:1111
+#: gtk/inspector/prop-editor.c:1471 gtk/inspector/window.ui:415
msgid "Properties"
msgstr "Propriedades"
@@ -3832,66 +3862,66 @@ msgstr "%s para %s %p"
msgid "%s with value type %s"
msgstr "%s com tipo de valor %s"
-#: gtk/inspector/prop-editor.c:1122
+#: gtk/inspector/prop-editor.c:1179
#, c-format
msgid "Uneditable property type: %s"
msgstr "Tipo de propriedade não editável: %s"
-#: gtk/inspector/prop-editor.c:1266
+#: gtk/inspector/prop-editor.c:1323
msgctxt "column number"
msgid "None"
msgstr "Nenhum"
-#: gtk/inspector/prop-editor.c:1303
+#: gtk/inspector/prop-editor.c:1360
msgid "Attribute:"
msgstr "Atributo:"
-#: gtk/inspector/prop-editor.c:1306
+#: gtk/inspector/prop-editor.c:1363
msgid "Model"
msgstr "Modelo"
-#: gtk/inspector/prop-editor.c:1311
+#: gtk/inspector/prop-editor.c:1368
msgid "Column:"
msgstr "Coluna:"
#. Translators: %s is a type name, for example
#. * Action from 0x2345678 (GtkApplicationWindow)
#.
-#: gtk/inspector/prop-editor.c:1410
+#: gtk/inspector/prop-editor.c:1467
#, c-format
msgid "Action from: %p (%s)"
msgstr "Ação de: %p (%s)"
-#: gtk/inspector/prop-editor.c:1465
+#: gtk/inspector/prop-editor.c:1522
msgid "Reset"
msgstr "Redefinir"
-#: gtk/inspector/prop-editor.c:1473
+#: gtk/inspector/prop-editor.c:1530
msgctxt "GtkSettings source"
msgid "Default"
msgstr "Padrão"
-#: gtk/inspector/prop-editor.c:1476
+#: gtk/inspector/prop-editor.c:1533
msgctxt "GtkSettings source"
msgid "Theme"
msgstr "Tema"
-#: gtk/inspector/prop-editor.c:1479
+#: gtk/inspector/prop-editor.c:1536
msgctxt "GtkSettings source"
msgid "XSettings"
msgstr "XSettings"
-#: gtk/inspector/prop-editor.c:1483
+#: gtk/inspector/prop-editor.c:1540
msgctxt "GtkSettings source"
msgid "Application"
msgstr "Aplicativo"
-#: gtk/inspector/prop-editor.c:1486
+#: gtk/inspector/prop-editor.c:1543
msgctxt "GtkSettings source"
msgid "Unknown"
msgstr "Desconhecido"
-#: gtk/inspector/prop-editor.c:1489
+#: gtk/inspector/prop-editor.c:1546
msgid "Source:"
msgstr "Fonte:"
@@ -4110,17 +4140,14 @@ msgid "CSS Padding"
msgstr "Preenchimento CSS"
#: gtk/inspector/visual.ui:554
-#| msgid "CSS Nodes"
msgid "CSS Border"
msgstr "Borda CSS"
#: gtk/inspector/visual.ui:564
-#| msgid "Paper Margins"
msgid "CSS Margin"
msgstr "Margem CSS"
#: gtk/inspector/visual.ui:574
-#| msgid "Paper Margins"
msgid "Widget Margin"
msgstr "Margem do componente"
@@ -6658,282 +6685,6 @@ msgctxt "Script"
msgid "Yezidi"
msgstr "Yezidi"
-#: gtk/tools/encodesymbolic.c:41
-msgid "Output to this directory instead of cwd"
-msgstr "Envia para esse diretório ao invés de cwd"
-
-#: gtk/tools/encodesymbolic.c:42
-msgid "Generate debug output"
-msgstr "Gera saída de depuração"
-
-#: gtk/tools/encodesymbolic.c:94
-#, c-format
-msgid "Invalid size %s\n"
-msgstr "Tamanho inválido %s\n"
-
-#: gtk/tools/encodesymbolic.c:106 gtk/tools/encodesymbolic.c:115
-#, c-format
-msgid "Can’t load file: %s\n"
-msgstr "Falha ao carregar o arquivo: %s\n"
-
-#: gtk/tools/encodesymbolic.c:143 gtk/tools/encodesymbolic.c:149
-#, c-format
-msgid "Can’t save file %s: %s\n"
-msgstr "Falha ao salvar o arquivo “%s”: %s\n"
-
-#: gtk/tools/encodesymbolic.c:155
-#, c-format
-msgid "Can’t close stream"
-msgstr "Falha ao fechar stream"
-
-#: gtk/tools/gtk-builder-tool.c:34
-#, c-format
-msgid ""
-"Usage:\n"
-" gtk-builder-tool [COMMAND] [OPTION…] FILE\n"
-"\n"
-"Commands:\n"
-" validate Validate the file\n"
-" simplify Simplify the file\n"
-" enumerate List all named objects\n"
-" preview Preview the file\n"
-"\n"
-"Simplify Options:\n"
-" --replace Replace the file\n"
-" --3to4 Convert from GTK 3 to GTK 4\n"
-"\n"
-"Preview Options:\n"
-" --id=ID Preview only the named object\n"
-" --css=FILE Use style from CSS file\n"
-"\n"
-"Perform various tasks on GtkBuilder .ui files.\n"
-msgstr ""
-"Uso:\n"
-" gtk-builder-tool [COMANDO] [OPÇÃO…] ARQUIVO\n"
-"\n"
-"Comandos:\n"
-" validate Valida o arquivo\n"
-" simplify Simplifica o arquivo\n"
-" enumerate Lista todos os objetos nomeados\n"
-" preview Visualiza o arquivo\n"
-"\n"
-"Opções de “simplify”:\n"
-" --replace Substitui o arquivo\n"
-" --3to4 Converte de GTK 3 para GTK 4\n"
-"\n"
-"Opções de “preview”:\n"
-" --id=ID Visualiza apenas o objeto indicado\n"
-" --css=ARQUIVO Usa o estilo de um arquivo CSS\n"
-"\n"
-"Efetua várias tarefas em arquivos .ui do GtkBuilder.\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:436
-#, c-format
-msgid "%s:%d: Couldn’t parse value for property '%s': %s\n"
-msgstr "%s:%d: Não foi possível analisar o valor para a propriedade “%s”: %s\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:591
-#, c-format
-msgid "%s:%d: %sproperty %s::%s not found\n"
-msgstr "%s:%d: %spropriedade %s::%s não encontrada\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:2203
-#, c-format
-msgid "Can’t load “%s”: %s\n"
-msgstr "Não foi possível carregar “%s”: %s\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:2214
-#, c-format
-msgid "Can’t parse “%s”: %s\n"
-msgstr "Não foi possível analisar “%s”: %s\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:2238
-#, c-format
-msgid "Failed to read “%s”: %s\n"
-msgstr "Falha ao ler “%s”: %s\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:2244
-#, c-format
-msgid "Failed to write %s: “%s”\n"
-msgstr "Falha ao escrever %s: “%s”\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:2284
-#, c-format
-msgid "No .ui file specified\n"
-msgstr "Nenhum arquivo .ui especificado\n"
-
-#: gtk/tools/gtk-builder-tool-simplify.c:2290
-#, c-format
-msgid "Can only simplify a single .ui file without --replace\n"
-msgstr "Só pode simplificar um único arquivo .ui sem --replace\n"
-
-#: gtk/tools/gtk-launch.c:40
-msgid "Show program version"
-msgstr "Mostra a versão do programa"
-
-#. Translators: this message will appear immediately after the
-#. usage string - Usage: COMMAND [OPTION…] <THIS_MESSAGE>
-#: gtk/tools/gtk-launch.c:74
-msgid "APPLICATION [URI…] — launch an APPLICATION"
-msgstr "APLICATIVO [URI…] — inicia um APLICATIVO"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: gtk/tools/gtk-launch.c:78
-msgid ""
-"Launch an application (specified by its desktop file name),\n"
-"optionally passing one or more URIs as arguments."
-msgstr ""
-"Inicia o aplicativo especificado com base no seu arquivo desktop,\n"
-"e opcionalmente uma lista de URIs pode ser passada como argumento."
-
-#: gtk/tools/gtk-launch.c:88
-#, c-format
-msgid "Error parsing commandline options: %s\n"
-msgstr "Erro ao analisar as opções de linha de comando: %s\n"
-
-#: gtk/tools/gtk-launch.c:90 gtk/tools/gtk-launch.c:111
-#, c-format
-msgid "Try “%s --help” for more information."
-msgstr "Tente “%s --help” para mais informações."
-
-#. Translators: the %s is the program name. This error message
-#. means the user is calling gtk-launch without any argument.
-#: gtk/tools/gtk-launch.c:109
-#, c-format
-msgid "%s: missing application name"
-msgstr "%s: faltando o nome do aplicativo"
-
-# Coloquei ID em maiúsculo para destacar como abreviação, para não parecer erro de escrita.
-#: gtk/tools/gtk-launch.c:138
-#, c-format
-msgid "Creating AppInfo from id not supported on non unix operating systems"
-msgstr ""
-"Não há suporte para criação de AppInfo de ID em sistemas operacionais não "
-"Unix"
-
-#. Translators: the first %s is the program name, the second one
-#. is the application name.
-#: gtk/tools/gtk-launch.c:146
-#, c-format
-msgid "%s: no such application %s"
-msgstr "%s: nenhum aplicativo %s"
-
-#. Translators: the first %s is the program name, the second one
-#. is the error message.
-#: gtk/tools/gtk-launch.c:164
-#, c-format
-msgid "%s: error launching application: %s\n"
-msgstr "%s: erro ao iniciar o aplicativo: %s\n"
-
-#: gtk/tools/updateiconcache.c:1392
-#, c-format
-msgid "Failed to write header\n"
-msgstr "Falha ao gravar cabeçalho\n"
-
-#: gtk/tools/updateiconcache.c:1398
-#, c-format
-msgid "Failed to write hash table\n"
-msgstr "Falha ao gravar tabela hash\n"
-
-#: gtk/tools/updateiconcache.c:1404
-#, c-format
-msgid "Failed to write folder index\n"
-msgstr "Falha ao gravar índice da pasta\n"
-
-#: gtk/tools/updateiconcache.c:1412
-#, c-format
-msgid "Failed to rewrite header\n"
-msgstr "Falha ao regravar cabeçalho\n"
-
-#: gtk/tools/updateiconcache.c:1506
-#, c-format
-msgid "Failed to open file %s : %s\n"
-msgstr "Falha ao abrir o arquivo “%s”: %s\n"
-
-#: gtk/tools/updateiconcache.c:1514 gtk/tools/updateiconcache.c:1544
-#, c-format
-msgid "Failed to write cache file: %s\n"
-msgstr "Falha ao gravar arquivo de cache: %s\n"
-
-#: gtk/tools/updateiconcache.c:1554
-#, c-format
-msgid "The generated cache was invalid.\n"
-msgstr "O cache gerado era inválido.\n"
-
-#: gtk/tools/updateiconcache.c:1568
-#, c-format
-msgid "Could not rename %s to %s: %s, removing %s then.\n"
-msgstr "Não foi possível renomear %s para %s: %s, removendo %s.\n"
-
-#: gtk/tools/updateiconcache.c:1582
-#, c-format
-msgid "Could not rename %s to %s: %s\n"
-msgstr "Não foi possível renomear %s para %s: %s\n"
-
-#: gtk/tools/updateiconcache.c:1592
-#, c-format
-msgid "Could not rename %s back to %s: %s.\n"
-msgstr "Não foi possível renomear %s de volta para %s: %s.\n"
-
-#: gtk/tools/updateiconcache.c:1619
-#, c-format
-msgid "Cache file created successfully.\n"
-msgstr "Arquivo de cache criado com sucesso.\n"
-
-#: gtk/tools/updateiconcache.c:1658
-msgid "Overwrite an existing cache, even if up to date"
-msgstr "Sobrescrever um cache existente, mesmo que atualizado"
-
-#: gtk/tools/updateiconcache.c:1659
-msgid "Don’t check for the existence of index.theme"
-msgstr "Não verificar a existência de index.theme"
-
-#: gtk/tools/updateiconcache.c:1660
-msgid "Don’t include image data in the cache"
-msgstr "Não incluir dados da imagem no cache"
-
-#: gtk/tools/updateiconcache.c:1661
-msgid "Include image data in the cache"
-msgstr "Incluir dados da imagem no cache"
-
-#: gtk/tools/updateiconcache.c:1662
-msgid "Output a C header file"
-msgstr "Exibir um arquivo de cabeçalho C"
-
-#: gtk/tools/updateiconcache.c:1663
-msgid "Turn off verbose output"
-msgstr "Desativar saída detalhada"
-
-#: gtk/tools/updateiconcache.c:1664
-msgid "Validate existing icon cache"
-msgstr "Validar o cache de ícones existente"
-
-#: gtk/tools/updateiconcache.c:1731
-#, c-format
-msgid "File not found: %s\n"
-msgstr "Arquivo não localizado: %s\n"
-
-#: gtk/tools/updateiconcache.c:1737
-#, c-format
-msgid "Not a valid icon cache: %s\n"
-msgstr "Não é um cache de ícones válido: %s\n"
-
-#: gtk/tools/updateiconcache.c:1750
-#, c-format
-msgid "No theme index file.\n"
-msgstr "Nenhum arquivo de índice de tema.\n"
-
-#: gtk/tools/updateiconcache.c:1754
-#, c-format
-msgid ""
-"No theme index file in “%s”.\n"
-"If you really want to create an icon cache here, use --ignore-theme-index.\n"
-msgstr ""
-"Sem arquivo de índice de tema em “%s”.\n"
-"Se você realmente quiser criar um cache de ícones aqui, use --ignore-theme-"
-"index.\n"
-
#: gtk/ui/gtkaboutdialog.ui:62
msgid "About"
msgstr "Sobre"
@@ -7048,52 +6799,52 @@ msgstr "(Nenhum)"
msgid "Search…"
msgstr "Pesquisar…"
-#: gtk/ui/gtkemojichooser.ui:69 gtk/ui/gtkemojichooser.ui:236
+#: gtk/ui/gtkemojichooser.ui:69 gtk/ui/gtkemojichooser.ui:238
msgctxt "emoji category"
msgid "Smileys & People"
msgstr "Smileys & pessoas"
-#: gtk/ui/gtkemojichooser.ui:94 gtk/ui/gtkemojichooser.ui:245
+#: gtk/ui/gtkemojichooser.ui:94 gtk/ui/gtkemojichooser.ui:247
msgctxt "emoji category"
msgid "Body & Clothing"
msgstr "Corpo & roupas"
-#: gtk/ui/gtkemojichooser.ui:119 gtk/ui/gtkemojichooser.ui:254
+#: gtk/ui/gtkemojichooser.ui:119 gtk/ui/gtkemojichooser.ui:256
msgctxt "emoji category"
msgid "Animals & Nature"
msgstr "Animais & natureza"
-#: gtk/ui/gtkemojichooser.ui:133 gtk/ui/gtkemojichooser.ui:263
+#: gtk/ui/gtkemojichooser.ui:133 gtk/ui/gtkemojichooser.ui:265
msgctxt "emoji category"
msgid "Food & Drink"
msgstr "Comida & bebida"
-#: gtk/ui/gtkemojichooser.ui:147 gtk/ui/gtkemojichooser.ui:272
+#: gtk/ui/gtkemojichooser.ui:147 gtk/ui/gtkemojichooser.ui:274
msgctxt "emoji category"
msgid "Travel & Places"
msgstr "Viagem & lugares"
-#: gtk/ui/gtkemojichooser.ui:161 gtk/ui/gtkemojichooser.ui:281
+#: gtk/ui/gtkemojichooser.ui:161 gtk/ui/gtkemojichooser.ui:283
msgctxt "emoji category"
msgid "Activities"
msgstr "Atividades"
-#: gtk/ui/gtkemojichooser.ui:175 gtk/ui/gtkemojichooser.ui:290
+#: gtk/ui/gtkemojichooser.ui:175 gtk/ui/gtkemojichooser.ui:292
msgctxt "emoji category"
msgid "Objects"
msgstr "Objetos"
-#: gtk/ui/gtkemojichooser.ui:189 gtk/ui/gtkemojichooser.ui:299
+#: gtk/ui/gtkemojichooser.ui:189 gtk/ui/gtkemojichooser.ui:301
msgctxt "emoji category"
msgid "Symbols"
msgstr "Símbolos"
-#: gtk/ui/gtkemojichooser.ui:203 gtk/ui/gtkemojichooser.ui:308
+#: gtk/ui/gtkemojichooser.ui:203 gtk/ui/gtkemojichooser.ui:310
msgctxt "emoji category"
msgid "Flags"
msgstr "Bandeiras"
-#: gtk/ui/gtkemojichooser.ui:227
+#: gtk/ui/gtkemojichooser.ui:229
msgctxt "emoji category"
msgid "Recent"
msgstr "Recentes"
@@ -7445,290 +7196,290 @@ msgstr "Dormente"
msgid "Pages per _sheet:"
msgstr "Páginas por _folha:"
-#: modules/printbackends/gtkprintbackendcups.c:1123
-#: modules/printbackends/gtkprintbackendcups.c:1432
+#: modules/printbackends/gtkprintbackendcups.c:1151
+#: modules/printbackends/gtkprintbackendcups.c:1460
msgid "Username:"
msgstr "Nome de usuário:"
-#: modules/printbackends/gtkprintbackendcups.c:1124
-#: modules/printbackends/gtkprintbackendcups.c:1441
+#: modules/printbackends/gtkprintbackendcups.c:1152
+#: modules/printbackends/gtkprintbackendcups.c:1469
msgid "Password:"
msgstr "Senha:"
-#: modules/printbackends/gtkprintbackendcups.c:1163
-#: modules/printbackends/gtkprintbackendcups.c:1454
+#: modules/printbackends/gtkprintbackendcups.c:1191
+#: modules/printbackends/gtkprintbackendcups.c:1482
#, c-format
msgid "Authentication is required to print document “%s” on printer %s"
msgstr ""
"É necessário autenticar-se para imprimir o documento “%s” na impressora %s"
-#: modules/printbackends/gtkprintbackendcups.c:1165
+#: modules/printbackends/gtkprintbackendcups.c:1193
#, c-format
msgid "Authentication is required to print a document on %s"
msgstr "É necessário autenticar-se para imprimir um documento em %s"
-#: modules/printbackends/gtkprintbackendcups.c:1169
+#: modules/printbackends/gtkprintbackendcups.c:1197
#, c-format
msgid "Authentication is required to get attributes of job “%s”"
msgstr "É necessário autenticar-se para obter os atributos do trabalho “%s”"
-#: modules/printbackends/gtkprintbackendcups.c:1171
+#: modules/printbackends/gtkprintbackendcups.c:1199
msgid "Authentication is required to get attributes of a job"
msgstr "É necessário autenticar-se para obter os atributos de um trabalho"
-#: modules/printbackends/gtkprintbackendcups.c:1175
+#: modules/printbackends/gtkprintbackendcups.c:1203
#, c-format
msgid "Authentication is required to get attributes of printer %s"
msgstr "É necessário autenticar-se para obter os atributos da impressora %s"
-#: modules/printbackends/gtkprintbackendcups.c:1177
+#: modules/printbackends/gtkprintbackendcups.c:1205
msgid "Authentication is required to get attributes of a printer"
msgstr "É necessário autenticar-se para obter os atributos de uma impressora"
-#: modules/printbackends/gtkprintbackendcups.c:1180
+#: modules/printbackends/gtkprintbackendcups.c:1208
#, c-format
msgid "Authentication is required to get default printer of %s"
msgstr "É necessário autenticar-se para obter a impressora padrão de %s"
-#: modules/printbackends/gtkprintbackendcups.c:1183
+#: modules/printbackends/gtkprintbackendcups.c:1211
#, c-format
msgid "Authentication is required to get printers from %s"
msgstr "É necessário autenticar-se para obter impressoras a partir de %s"
-#: modules/printbackends/gtkprintbackendcups.c:1188
+#: modules/printbackends/gtkprintbackendcups.c:1216
#, c-format
msgid "Authentication is required to get a file from %s"
msgstr "É necessário autenticar-se para obter o arquivo a partir de %s"
-#: modules/printbackends/gtkprintbackendcups.c:1190
+#: modules/printbackends/gtkprintbackendcups.c:1218
#, c-format
msgid "Authentication is required on %s"
msgstr "É necessário autenticar-se em %s"
-#: modules/printbackends/gtkprintbackendcups.c:1426
+#: modules/printbackends/gtkprintbackendcups.c:1454
msgid "Domain:"
msgstr "Domínio:"
-#: modules/printbackends/gtkprintbackendcups.c:1456
+#: modules/printbackends/gtkprintbackendcups.c:1484
#, c-format
msgid "Authentication is required to print document “%s”"
msgstr "É necessário autenticar-se para imprimir o documento “%s”"
-#: modules/printbackends/gtkprintbackendcups.c:1461
+#: modules/printbackends/gtkprintbackendcups.c:1489
#, c-format
msgid "Authentication is required to print this document on printer %s"
msgstr ""
"É necessário autenticar-se para imprimir este documento na impressora %s"
-#: modules/printbackends/gtkprintbackendcups.c:1463
+#: modules/printbackends/gtkprintbackendcups.c:1491
msgid "Authentication is required to print this document"
msgstr "É necessário autenticar-se para imprimir este documento"
-#: modules/printbackends/gtkprintbackendcups.c:2536
+#: modules/printbackends/gtkprintbackendcups.c:2588
#, c-format
msgid "Printer “%s” is low on toner."
msgstr "A impressora “%s” está com pouco toner."
-#: modules/printbackends/gtkprintbackendcups.c:2540
+#: modules/printbackends/gtkprintbackendcups.c:2592
#, c-format
msgid "Printer “%s” has no toner left."
msgstr "A impressora “%s” está sem toner."
# Photo developer = relevador, substância usada na revelação de fotografias
#. Translators: "Developer" like on photo development context
-#: modules/printbackends/gtkprintbackendcups.c:2545
+#: modules/printbackends/gtkprintbackendcups.c:2597
#, c-format
msgid "Printer “%s” is low on developer."
msgstr "A impressora “%s” está com pouco revelador."
# Photo developer = relevador, substância usada na revelação de fotografias
#. Translators: "Developer" like on photo development context
-#: modules/printbackends/gtkprintbackendcups.c:2550
+#: modules/printbackends/gtkprintbackendcups.c:2602
#, c-format
msgid "Printer “%s” is out of developer."
msgstr "A impressora “%s” está sem revelador."
#. Translators: "marker" is one color bin of the printer
-#: modules/printbackends/gtkprintbackendcups.c:2555
+#: modules/printbackends/gtkprintbackendcups.c:2607
#, c-format
msgid "Printer “%s” is low on at least one marker supply."
msgstr "A impressora “%s” está com pouca tinta em pelo menos um cartucho."
#. Translators: "marker" is one color bin of the printer
-#: modules/printbackends/gtkprintbackendcups.c:2560
+#: modules/printbackends/gtkprintbackendcups.c:2612
#, c-format
msgid "Printer “%s” is out of at least one marker supply."
msgstr "A impressora “%s” está sem tinta em pelo menos um cartucho."
-#: modules/printbackends/gtkprintbackendcups.c:2564
+#: modules/printbackends/gtkprintbackendcups.c:2616
#, c-format
msgid "The cover is open on printer “%s”."
msgstr "A tampa da impressora “%s” está aberta."
-#: modules/printbackends/gtkprintbackendcups.c:2568
+#: modules/printbackends/gtkprintbackendcups.c:2620
#, c-format
msgid "The door is open on printer “%s”."
msgstr "A porta da impressora “%s” está aberta."
-#: modules/printbackends/gtkprintbackendcups.c:2572
+#: modules/printbackends/gtkprintbackendcups.c:2624
#, c-format
msgid "Printer “%s” is low on paper."
msgstr "A impressora “%s” está com pouco papel."
-#: modules/printbackends/gtkprintbackendcups.c:2576
+#: modules/printbackends/gtkprintbackendcups.c:2628
#, c-format
msgid "Printer “%s” is out of paper."
msgstr "A impressora “%s” está sem papel."
-#: modules/printbackends/gtkprintbackendcups.c:2580
+#: modules/printbackends/gtkprintbackendcups.c:2632
#, c-format
msgid "Printer “%s” is currently offline."
msgstr "A impressora “%s” está desligada."
-#: modules/printbackends/gtkprintbackendcups.c:2584
+#: modules/printbackends/gtkprintbackendcups.c:2636
#, c-format
msgid "There is a problem on printer “%s”."
msgstr "Há um problema na impressora “%s”."
# Esse parece ser um status da impressora
#. Translators: this is a printer status.
-#: modules/printbackends/gtkprintbackendcups.c:2604
+#: modules/printbackends/gtkprintbackendcups.c:2656
msgid "Paused; Rejecting Jobs"
msgstr "Em pausa; Rejeitando trabalhos"
#. Translators: this is a printer status.
-#: modules/printbackends/gtkprintbackendcups.c:2610
+#: modules/printbackends/gtkprintbackendcups.c:2662
msgid "Rejecting Jobs"
msgstr "Rejeitando trabalhos"
#. Translators: this string connects multiple printer states together.
-#: modules/printbackends/gtkprintbackendcups.c:2651
+#: modules/printbackends/gtkprintbackendcups.c:2703
msgid "; "
msgstr "; "
-#: modules/printbackends/gtkprintbackendcups.c:4402
-#: modules/printbackends/gtkprintbackendcups.c:4469
+#: modules/printbackends/gtkprintbackendcups.c:4611
+#: modules/printbackends/gtkprintbackendcups.c:4678
msgctxt "printing option"
msgid "Two Sided"
msgstr "Dois lados"
-#: modules/printbackends/gtkprintbackendcups.c:4403
+#: modules/printbackends/gtkprintbackendcups.c:4612
msgctxt "printing option"
msgid "Paper Type"
msgstr "Tipo de papel"
-#: modules/printbackends/gtkprintbackendcups.c:4404
+#: modules/printbackends/gtkprintbackendcups.c:4613
msgctxt "printing option"
msgid "Paper Source"
msgstr "Origem do papel"
-#: modules/printbackends/gtkprintbackendcups.c:4405
-#: modules/printbackends/gtkprintbackendcups.c:4470
+#: modules/printbackends/gtkprintbackendcups.c:4614
+#: modules/printbackends/gtkprintbackendcups.c:4679
msgctxt "printing option"
msgid "Output Tray"
msgstr "Bandeja de saída"
-#: modules/printbackends/gtkprintbackendcups.c:4406
+#: modules/printbackends/gtkprintbackendcups.c:4615
msgctxt "printing option"
msgid "Resolution"
msgstr "Resolução"
-#: modules/printbackends/gtkprintbackendcups.c:4407
+#: modules/printbackends/gtkprintbackendcups.c:4616
msgctxt "printing option"
msgid "GhostScript pre-filtering"
msgstr "Pré-filtragem GhostScript"
-#: modules/printbackends/gtkprintbackendcups.c:4416
+#: modules/printbackends/gtkprintbackendcups.c:4625
msgctxt "printing option value"
msgid "One Sided"
msgstr "Um lado"
#. Translators: this is an option of "Two Sided"
-#: modules/printbackends/gtkprintbackendcups.c:4418
+#: modules/printbackends/gtkprintbackendcups.c:4627
msgctxt "printing option value"
msgid "Long Edge (Standard)"
msgstr "Virar na borda maior (padrão)"
#. Translators: this is an option of "Two Sided"
-#: modules/printbackends/gtkprintbackendcups.c:4420
+#: modules/printbackends/gtkprintbackendcups.c:4629
msgctxt "printing option value"
msgid "Short Edge (Flip)"
msgstr "Virar na borda menor"
#. Translators: this is an option of "Paper Source"
-#: modules/printbackends/gtkprintbackendcups.c:4422
-#: modules/printbackends/gtkprintbackendcups.c:4424
-#: modules/printbackends/gtkprintbackendcups.c:4432
+#: modules/printbackends/gtkprintbackendcups.c:4631
+#: modules/printbackends/gtkprintbackendcups.c:4633
+#: modules/printbackends/gtkprintbackendcups.c:4641
msgctxt "printing option value"
msgid "Auto Select"
msgstr "Selecionar automaticamente"
#. Translators: this is an option of "Paper Source"
#. Translators: this is an option of "Resolution"
-#: modules/printbackends/gtkprintbackendcups.c:4426
-#: modules/printbackends/gtkprintbackendcups.c:4428
-#: modules/printbackends/gtkprintbackendcups.c:4430
-#: modules/printbackends/gtkprintbackendcups.c:4434
+#: modules/printbackends/gtkprintbackendcups.c:4635
+#: modules/printbackends/gtkprintbackendcups.c:4637
+#: modules/printbackends/gtkprintbackendcups.c:4639
+#: modules/printbackends/gtkprintbackendcups.c:4643
msgctxt "printing option value"
msgid "Printer Default"
msgstr "Padrão da impressora"
#. Translators: this is an option of "GhostScript"
-#: modules/printbackends/gtkprintbackendcups.c:4436
+#: modules/printbackends/gtkprintbackendcups.c:4645
msgctxt "printing option value"
msgid "Embed GhostScript fonts only"
msgstr "Somente para fontes GhostScript embutidas"
#. Translators: this is an option of "GhostScript"
-#: modules/printbackends/gtkprintbackendcups.c:4438
+#: modules/printbackends/gtkprintbackendcups.c:4647
msgctxt "printing option value"
msgid "Convert to PS level 1"
msgstr "Converter para PS nível 1"
#. Translators: this is an option of "GhostScript"
-#: modules/printbackends/gtkprintbackendcups.c:4440
+#: modules/printbackends/gtkprintbackendcups.c:4649
msgctxt "printing option value"
msgid "Convert to PS level 2"
msgstr "Converter para PS nível 2"
#. Translators: this is an option of "GhostScript"
-#: modules/printbackends/gtkprintbackendcups.c:4442
+#: modules/printbackends/gtkprintbackendcups.c:4651
msgctxt "printing option value"
msgid "No pre-filtering"
msgstr "Sem pré-filtragem"
#. Translators: "Miscellaneous" is the label for a button, that opens
#. up an extra panel of settings in a print dialog.
-#: modules/printbackends/gtkprintbackendcups.c:4451
+#: modules/printbackends/gtkprintbackendcups.c:4660
msgctxt "printing option group"
msgid "Miscellaneous"
msgstr "Outras opções"
-#: modules/printbackends/gtkprintbackendcups.c:4478
+#: modules/printbackends/gtkprintbackendcups.c:4687
msgctxt "sides"
msgid "One Sided"
msgstr "Um lado"
#. Translators: this is an option of "Two Sided"
-#: modules/printbackends/gtkprintbackendcups.c:4480
+#: modules/printbackends/gtkprintbackendcups.c:4689
msgctxt "sides"
msgid "Long Edge (Standard)"
msgstr "Borda maior (padrão)"
#. Translators: this is an option of "Two Sided"
-#: modules/printbackends/gtkprintbackendcups.c:4482
+#: modules/printbackends/gtkprintbackendcups.c:4691
msgctxt "sides"
msgid "Short Edge (Flip)"
msgstr "Borda menor (Virar)"
#. Translators: Top output bin
-#: modules/printbackends/gtkprintbackendcups.c:4485
+#: modules/printbackends/gtkprintbackendcups.c:4694
msgctxt "output-bin"
msgid "Top Bin"
msgstr "Bandeja superior"
#. Translators: Middle output bin
-#: modules/printbackends/gtkprintbackendcups.c:4487
+#: modules/printbackends/gtkprintbackendcups.c:4696
msgctxt "output-bin"
msgid "Middle Bin"
msgstr "Bandeja do meio"
@@ -7737,160 +7488,160 @@ msgstr "Bandeja do meio"
# Traduzir de forma consistente com "_Top".
# "_Fim"?
#. Translators: Bottom output bin
-#: modules/printbackends/gtkprintbackendcups.c:4489
+#: modules/printbackends/gtkprintbackendcups.c:4698
msgctxt "output-bin"
msgid "Bottom Bin"
msgstr "Bandeja inferior"
#. Translators: Side output bin
-#: modules/printbackends/gtkprintbackendcups.c:4491
+#: modules/printbackends/gtkprintbackendcups.c:4700
msgctxt "output-bin"
msgid "Side Bin"
msgstr "Bandeja lateral"
#. Translators: Left output bin
-#: modules/printbackends/gtkprintbackendcups.c:4493
+#: modules/printbackends/gtkprintbackendcups.c:4702
msgctxt "output-bin"
msgid "Left Bin"
msgstr "Bandeja esquerda"
#. Translators: Right output bin
-#: modules/printbackends/gtkprintbackendcups.c:4495
+#: modules/printbackends/gtkprintbackendcups.c:4704
msgctxt "output-bin"
msgid "Right Bin"
msgstr "Bandeja direita"
#. Translators: Center output bin
-#: modules/printbackends/gtkprintbackendcups.c:4497
+#: modules/printbackends/gtkprintbackendcups.c:4706
msgctxt "output-bin"
msgid "Center Bin"
msgstr "Bandeja central"
#. Translators: Rear output bin
-#: modules/printbackends/gtkprintbackendcups.c:4499
+#: modules/printbackends/gtkprintbackendcups.c:4708
msgctxt "output-bin"
msgid "Rear Bin"
msgstr "Bandeja traseira"
#. Translators: Output bin where one sided output is oriented in the face-up position
-#: modules/printbackends/gtkprintbackendcups.c:4501
+#: modules/printbackends/gtkprintbackendcups.c:4710
msgctxt "output-bin"
msgid "Face Up Bin"
msgstr "Bandeja virada para cima"
#. Translators: Output bin where one sided output is oriented in the face-down position
-#: modules/printbackends/gtkprintbackendcups.c:4503
+#: modules/printbackends/gtkprintbackendcups.c:4712
msgctxt "output-bin"
msgid "Face Down Bin"
msgstr "Bandeja virada para baixo"
#. Translators: Large capacity output bin
-#: modules/printbackends/gtkprintbackendcups.c:4505
+#: modules/printbackends/gtkprintbackendcups.c:4714
msgctxt "output-bin"
msgid "Large Capacity Bin"
msgstr "Bandeja de alta capacidade"
#. Translators: Output stacker number %d
-#: modules/printbackends/gtkprintbackendcups.c:4527
+#: modules/printbackends/gtkprintbackendcups.c:4736
#, c-format
msgctxt "output-bin"
msgid "Stacker %d"
msgstr "Empilhador %d"
#. Translators: Output mailbox number %d
-#: modules/printbackends/gtkprintbackendcups.c:4531
+#: modules/printbackends/gtkprintbackendcups.c:4740
#, c-format
msgctxt "output-bin"
msgid "Mailbox %d"
msgstr "Caixa de correio %d"
#. Translators: Private mailbox
-#: modules/printbackends/gtkprintbackendcups.c:4535
+#: modules/printbackends/gtkprintbackendcups.c:4744
msgctxt "output-bin"
msgid "My Mailbox"
msgstr "Minha caixa de correio"
#. Translators: Output tray number %d
-#: modules/printbackends/gtkprintbackendcups.c:4539
+#: modules/printbackends/gtkprintbackendcups.c:4748
#, c-format
msgctxt "output-bin"
msgid "Tray %d"
msgstr "Bandeja %d"
-#: modules/printbackends/gtkprintbackendcups.c:5016
+#: modules/printbackends/gtkprintbackendcups.c:5225
msgid "Printer Default"
msgstr "Padrão da impressora"
#. Translators: These strings name the possible values of the
#. * job priority option in the print dialog
#.
-#: modules/printbackends/gtkprintbackendcups.c:5460
+#: modules/printbackends/gtkprintbackendcups.c:5669
msgid "Urgent"
msgstr "Urgente"
# prioridade de impressão
-#: modules/printbackends/gtkprintbackendcups.c:5460
+#: modules/printbackends/gtkprintbackendcups.c:5669
msgid "High"
msgstr "Alta"
# prioridade de impressão
-#: modules/printbackends/gtkprintbackendcups.c:5460
+#: modules/printbackends/gtkprintbackendcups.c:5669
msgid "Medium"
msgstr "Média"
# prioridade de impressão
-#: modules/printbackends/gtkprintbackendcups.c:5460
+#: modules/printbackends/gtkprintbackendcups.c:5669
msgid "Low"
msgstr "Baixa"
#. Translators, this string is used to label the job priority option
#. * in the print dialog
#.
-#: modules/printbackends/gtkprintbackendcups.c:5490
+#: modules/printbackends/gtkprintbackendcups.c:5699
msgid "Job Priority"
msgstr "Prioridade do trabalho"
#. Translators, this string is used to label the billing info entry
#. * in the print dialog
#.
-#: modules/printbackends/gtkprintbackendcups.c:5501
+#: modules/printbackends/gtkprintbackendcups.c:5710
msgid "Billing Info"
msgstr "Inf. de faturamento"
#. Translators, these strings are names for various 'standard' cover
#. * pages that the printing system may support.
#.
-#: modules/printbackends/gtkprintbackendcups.c:5525
+#: modules/printbackends/gtkprintbackendcups.c:5734
msgctxt "cover page"
msgid "None"
msgstr "Nenhuma"
-#: modules/printbackends/gtkprintbackendcups.c:5526
+#: modules/printbackends/gtkprintbackendcups.c:5735
msgctxt "cover page"
msgid "Classified"
msgstr "Restrito"
-#: modules/printbackends/gtkprintbackendcups.c:5527
+#: modules/printbackends/gtkprintbackendcups.c:5736
msgctxt "cover page"
msgid "Confidential"
msgstr "Confidencial"
-#: modules/printbackends/gtkprintbackendcups.c:5528
+#: modules/printbackends/gtkprintbackendcups.c:5737
msgctxt "cover page"
msgid "Secret"
msgstr "Secreto"
-#: modules/printbackends/gtkprintbackendcups.c:5529
+#: modules/printbackends/gtkprintbackendcups.c:5738
msgctxt "cover page"
msgid "Standard"
msgstr "Padrão"
-#: modules/printbackends/gtkprintbackendcups.c:5530
+#: modules/printbackends/gtkprintbackendcups.c:5739
msgctxt "cover page"
msgid "Top Secret"
msgstr "Ultra secreto"
-#: modules/printbackends/gtkprintbackendcups.c:5531
+#: modules/printbackends/gtkprintbackendcups.c:5740
msgctxt "cover page"
msgid "Unclassified"
msgstr "Irrestrito"
@@ -7898,7 +7649,7 @@ msgstr "Irrestrito"
#. Translators, this string is used to label the pages-per-sheet option
#. * in the print dialog
#.
-#: modules/printbackends/gtkprintbackendcups.c:5543
+#: modules/printbackends/gtkprintbackendcups.c:5752
msgctxt "printer option"
msgid "Pages per Sheet"
msgstr "Páginas por folha"
@@ -7906,7 +7657,7 @@ msgstr "Páginas por folha"
#. Translators, this string is used to label the option in the print
#. * dialog that controls in what order multiple pages are arranged
#.
-#: modules/printbackends/gtkprintbackendcups.c:5560
+#: modules/printbackends/gtkprintbackendcups.c:5769
msgctxt "printer option"
msgid "Page Ordering"
msgstr "Ordem das páginas"
@@ -7914,7 +7665,7 @@ msgstr "Ordem das páginas"
#. Translators, this is the label used for the option in the print
#. * dialog that controls the front cover page.
#.
-#: modules/printbackends/gtkprintbackendcups.c:5602
+#: modules/printbackends/gtkprintbackendcups.c:5811
msgctxt "printer option"
msgid "Before"
msgstr "Antes"
@@ -7922,7 +7673,7 @@ msgstr "Antes"
#. Translators, this is the label used for the option in the print
#. * dialog that controls the back cover page.
#.
-#: modules/printbackends/gtkprintbackendcups.c:5617
+#: modules/printbackends/gtkprintbackendcups.c:5826
msgctxt "printer option"
msgid "After"
msgstr "Depois"
@@ -7931,7 +7682,7 @@ msgstr "Depois"
#. * a print job is printed. Possible values are 'now', a specified time,
#. * or 'on hold'
#.
-#: modules/printbackends/gtkprintbackendcups.c:5637
+#: modules/printbackends/gtkprintbackendcups.c:5846
msgctxt "printer option"
msgid "Print at"
msgstr "Imprimir em"
@@ -7939,7 +7690,7 @@ msgstr "Imprimir em"
#. Translators: this is the name of the option that allows the user
#. * to specify a time when a print job will be printed.
#.
-#: modules/printbackends/gtkprintbackendcups.c:5648
+#: modules/printbackends/gtkprintbackendcups.c:5857
msgctxt "printer option"
msgid "Print at time"
msgstr "Imprimir na hora"
@@ -7949,19 +7700,19 @@ msgstr "Imprimir na hora"
#. * the width and height in points. E.g: "Custom
#. * 230.4x142.9"
#.
-#: modules/printbackends/gtkprintbackendcups.c:5695
+#: modules/printbackends/gtkprintbackendcups.c:5904
#, c-format
msgid "Custom %s×%s"
msgstr "Personalizado %sx%s"
#. TRANSLATORS: this is the ICC color profile to use for this job
-#: modules/printbackends/gtkprintbackendcups.c:5806
+#: modules/printbackends/gtkprintbackendcups.c:6015
msgctxt "printer option"
msgid "Printer Profile"
msgstr "Perfil da impressora"
#. TRANSLATORS: this is when color profile information is unavailable
-#: modules/printbackends/gtkprintbackendcups.c:5813
+#: modules/printbackends/gtkprintbackendcups.c:6022
msgctxt "printer option value"
msgid "Unavailable"
msgstr "Não disponível"
@@ -8002,7 +7753,7 @@ msgstr "Imprimir para LPR"
msgid "Pages Per Sheet"
msgstr "Páginas por folha"
-#: modules/printbackends/gtkprintbackendlpr.c:413
+#: modules/printbackends/gtkprintbackendlpr.c:412
msgid "Command Line"
msgstr "Linha de comando"
@@ -8022,6 +7773,282 @@ msgstr "Nenhum perfil disponível"
msgid "Unspecified profile"
msgstr "Perfil não especificado"
+#: tools/encodesymbolic.c:41
+msgid "Output to this directory instead of cwd"
+msgstr "Envia para esse diretório ao invés de cwd"
+
+#: tools/encodesymbolic.c:42
+msgid "Generate debug output"
+msgstr "Gera saída de depuração"
+
+#: tools/encodesymbolic.c:94
+#, c-format
+msgid "Invalid size %s\n"
+msgstr "Tamanho inválido %s\n"
+
+#: tools/encodesymbolic.c:106 tools/encodesymbolic.c:115
+#, c-format
+msgid "Can’t load file: %s\n"
+msgstr "Falha ao carregar o arquivo: %s\n"
+
+#: tools/encodesymbolic.c:143 tools/encodesymbolic.c:149
+#, c-format
+msgid "Can’t save file %s: %s\n"
+msgstr "Falha ao salvar o arquivo “%s”: %s\n"
+
+#: tools/encodesymbolic.c:155
+#, c-format
+msgid "Can’t close stream"
+msgstr "Falha ao fechar stream"
+
+#: tools/gtk-builder-tool.c:34
+#, c-format
+msgid ""
+"Usage:\n"
+" gtk-builder-tool [COMMAND] [OPTION…] FILE\n"
+"\n"
+"Commands:\n"
+" validate Validate the file\n"
+" simplify Simplify the file\n"
+" enumerate List all named objects\n"
+" preview Preview the file\n"
+"\n"
+"Simplify Options:\n"
+" --replace Replace the file\n"
+" --3to4 Convert from GTK 3 to GTK 4\n"
+"\n"
+"Preview Options:\n"
+" --id=ID Preview only the named object\n"
+" --css=FILE Use style from CSS file\n"
+"\n"
+"Perform various tasks on GtkBuilder .ui files.\n"
+msgstr ""
+"Uso:\n"
+" gtk-builder-tool [COMANDO] [OPÇÃO…] ARQUIVO\n"
+"\n"
+"Comandos:\n"
+" validate Valida o arquivo\n"
+" simplify Simplifica o arquivo\n"
+" enumerate Lista todos os objetos nomeados\n"
+" preview Visualiza o arquivo\n"
+"\n"
+"Opções de “simplify”:\n"
+" --replace Substitui o arquivo\n"
+" --3to4 Converte de GTK 3 para GTK 4\n"
+"\n"
+"Opções de “preview”:\n"
+" --id=ID Visualiza apenas o objeto indicado\n"
+" --css=ARQUIVO Usa o estilo de um arquivo CSS\n"
+"\n"
+"Efetua várias tarefas em arquivos .ui do GtkBuilder.\n"
+
+#: tools/gtk-builder-tool-simplify.c:436
+#, c-format
+msgid "%s:%d: Couldn’t parse value for property '%s': %s\n"
+msgstr "%s:%d: Não foi possível analisar o valor para a propriedade “%s”: %s\n"
+
+#: tools/gtk-builder-tool-simplify.c:591
+#, c-format
+msgid "%s:%d: %sproperty %s::%s not found\n"
+msgstr "%s:%d: %spropriedade %s::%s não encontrada\n"
+
+#: tools/gtk-builder-tool-simplify.c:2206
+#, c-format
+msgid "Can’t load “%s”: %s\n"
+msgstr "Não foi possível carregar “%s”: %s\n"
+
+#: tools/gtk-builder-tool-simplify.c:2217
+#, c-format
+msgid "Can’t parse “%s”: %s\n"
+msgstr "Não foi possível analisar “%s”: %s\n"
+
+#: tools/gtk-builder-tool-simplify.c:2241
+#, c-format
+msgid "Failed to read “%s”: %s\n"
+msgstr "Falha ao ler “%s”: %s\n"
+
+#: tools/gtk-builder-tool-simplify.c:2247
+#, c-format
+msgid "Failed to write %s: “%s”\n"
+msgstr "Falha ao escrever %s: “%s”\n"
+
+#: tools/gtk-builder-tool-simplify.c:2287
+#, c-format
+msgid "No .ui file specified\n"
+msgstr "Nenhum arquivo .ui especificado\n"
+
+#: tools/gtk-builder-tool-simplify.c:2293
+#, c-format
+msgid "Can only simplify a single .ui file without --replace\n"
+msgstr "Só pode simplificar um único arquivo .ui sem --replace\n"
+
+#: tools/gtk-launch.c:40
+msgid "Show program version"
+msgstr "Mostra a versão do programa"
+
+#. Translators: this message will appear immediately after the
+#. usage string - Usage: COMMAND [OPTION…] <THIS_MESSAGE>
+#: tools/gtk-launch.c:74
+msgid "APPLICATION [URI…] — launch an APPLICATION"
+msgstr "APLICATIVO [URI…] — inicia um APLICATIVO"
+
+#. Translators: this message will appear after the usage string
+#. and before the list of options.
+#: tools/gtk-launch.c:78
+msgid ""
+"Launch an application (specified by its desktop file name),\n"
+"optionally passing one or more URIs as arguments."
+msgstr ""
+"Inicia o aplicativo especificado com base no seu arquivo desktop,\n"
+"e opcionalmente uma lista de URIs pode ser passada como argumento."
+
+#: tools/gtk-launch.c:88
+#, c-format
+msgid "Error parsing commandline options: %s\n"
+msgstr "Erro ao analisar as opções de linha de comando: %s\n"
+
+#: tools/gtk-launch.c:90 tools/gtk-launch.c:111
+#, c-format
+msgid "Try “%s --help” for more information."
+msgstr "Tente “%s --help” para mais informações."
+
+#. Translators: the %s is the program name. This error message
+#. means the user is calling gtk-launch without any argument.
+#: tools/gtk-launch.c:109
+#, c-format
+msgid "%s: missing application name"
+msgstr "%s: faltando o nome do aplicativo"
+
+# Coloquei ID em maiúsculo para destacar como abreviação, para não parecer erro de escrita.
+#: tools/gtk-launch.c:138
+#, c-format
+msgid "Creating AppInfo from id not supported on non unix operating systems"
+msgstr ""
+"Não há suporte para criação de AppInfo de ID em sistemas operacionais não "
+"Unix"
+
+#. Translators: the first %s is the program name, the second one
+#. is the application name.
+#: tools/gtk-launch.c:146
+#, c-format
+msgid "%s: no such application %s"
+msgstr "%s: nenhum aplicativo %s"
+
+#. Translators: the first %s is the program name, the second one
+#. is the error message.
+#: tools/gtk-launch.c:164
+#, c-format
+msgid "%s: error launching application: %s\n"
+msgstr "%s: erro ao iniciar o aplicativo: %s\n"
+
+#: tools/updateiconcache.c:1392
+#, c-format
+msgid "Failed to write header\n"
+msgstr "Falha ao gravar cabeçalho\n"
+
+#: tools/updateiconcache.c:1398
+#, c-format
+msgid "Failed to write hash table\n"
+msgstr "Falha ao gravar tabela hash\n"
+
+#: tools/updateiconcache.c:1404
+#, c-format
+msgid "Failed to write folder index\n"
+msgstr "Falha ao gravar índice da pasta\n"
+
+#: tools/updateiconcache.c:1412
+#, c-format
+msgid "Failed to rewrite header\n"
+msgstr "Falha ao regravar cabeçalho\n"
+
+#: tools/updateiconcache.c:1506
+#, c-format
+msgid "Failed to open file %s : %s\n"
+msgstr "Falha ao abrir o arquivo “%s”: %s\n"
+
+#: tools/updateiconcache.c:1514 tools/updateiconcache.c:1544
+#, c-format
+msgid "Failed to write cache file: %s\n"
+msgstr "Falha ao gravar arquivo de cache: %s\n"
+
+#: tools/updateiconcache.c:1554
+#, c-format
+msgid "The generated cache was invalid.\n"
+msgstr "O cache gerado era inválido.\n"
+
+#: tools/updateiconcache.c:1568
+#, c-format
+msgid "Could not rename %s to %s: %s, removing %s then.\n"
+msgstr "Não foi possível renomear %s para %s: %s, removendo %s.\n"
+
+#: tools/updateiconcache.c:1582
+#, c-format
+msgid "Could not rename %s to %s: %s\n"
+msgstr "Não foi possível renomear %s para %s: %s\n"
+
+#: tools/updateiconcache.c:1592
+#, c-format
+msgid "Could not rename %s back to %s: %s.\n"
+msgstr "Não foi possível renomear %s de volta para %s: %s.\n"
+
+#: tools/updateiconcache.c:1619
+#, c-format
+msgid "Cache file created successfully.\n"
+msgstr "Arquivo de cache criado com sucesso.\n"
+
+#: tools/updateiconcache.c:1658
+msgid "Overwrite an existing cache, even if up to date"
+msgstr "Sobrescrever um cache existente, mesmo que atualizado"
+
+#: tools/updateiconcache.c:1659
+msgid "Don’t check for the existence of index.theme"
+msgstr "Não verificar a existência de index.theme"
+
+#: tools/updateiconcache.c:1660
+msgid "Don’t include image data in the cache"
+msgstr "Não incluir dados da imagem no cache"
+
+#: tools/updateiconcache.c:1661
+msgid "Include image data in the cache"
+msgstr "Incluir dados da imagem no cache"
+
+#: tools/updateiconcache.c:1662
+msgid "Output a C header file"
+msgstr "Exibir um arquivo de cabeçalho C"
+
+#: tools/updateiconcache.c:1663
+msgid "Turn off verbose output"
+msgstr "Desativar saída detalhada"
+
+#: tools/updateiconcache.c:1664
+msgid "Validate existing icon cache"
+msgstr "Validar o cache de ícones existente"
+
+#: tools/updateiconcache.c:1731
+#, c-format
+msgid "File not found: %s\n"
+msgstr "Arquivo não localizado: %s\n"
+
+#: tools/updateiconcache.c:1737
+#, c-format
+msgid "Not a valid icon cache: %s\n"
+msgstr "Não é um cache de ícones válido: %s\n"
+
+#: tools/updateiconcache.c:1750
+#, c-format
+msgid "No theme index file.\n"
+msgstr "Nenhum arquivo de índice de tema.\n"
+
+#: tools/updateiconcache.c:1754
+#, c-format
+msgid ""
+"No theme index file in “%s”.\n"
+"If you really want to create an icon cache here, use --ignore-theme-index.\n"
+msgstr ""
+"Sem arquivo de índice de tema em “%s”.\n"
+"Se você realmente quiser criar um cache de ícones aqui, use --ignore-theme-"
+"index.\n"
+
#~ msgid "Unable to create a GL pixel format"
#~ msgstr "Não foi possível criar um formato de pixel GL"
@@ -8742,9 +8769,6 @@ msgstr "Perfil não especificado"
#~ msgid "When Needed"
#~ msgstr "Quando necessário"
-#~ msgid "Disabled"
-#~ msgstr "Desativado"
-
#~ msgid "Texture Rectangle Extension"
#~ msgstr "Extensão para textura retangular"
diff --git a/po/uk.po b/po/uk.po
index 67264d20e7..fb7b6e0feb 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
-"POT-Creation-Date: 2021-05-16 22:32+0000\n"
-"PO-Revision-Date: 2021-05-20 10:26+0300\n"
+"POT-Creation-Date: 2021-07-20 11:18+0000\n"
+"PO-Revision-Date: 2021-07-20 15:07+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -66,7 +66,7 @@ msgstr "Вимкнено підтримування GL через GDK_DEBUG"
msgid "The current backend does not support OpenGL"
msgstr "Цей модуль не підтримує OpenGL"
-#: gdk/gdksurface.c:1235
+#: gdk/gdksurface.c:1234
msgid "Vulkan support disabled via GDK_DEBUG"
msgstr "Вимкнено підтримування Vulkan через GDK_DEBUG"
@@ -447,34 +447,36 @@ msgctxt "keyboard label"
msgid "Suspend"
msgstr "Suspend"
-#: gdk/macos/gdkmacosclipboard.c:252 gdk/wayland/gdkclipboard-wayland.c:231
+#: gdk/macos/gdkmacosclipboard.c:557 gdk/wayland/gdkclipboard-wayland.c:231
#: gdk/wayland/gdkdrop-wayland.c:204 gdk/wayland/gdkprimary-wayland.c:312
#: gdk/win32/gdkdrop-win32.c:1282 gdk/win32/gdkdrop-win32.c:1327
#: gdk/x11/gdkclipboard-x11.c:763 gdk/x11/gdkdrop-x11.c:237
msgid "No compatible transfer format found"
msgstr "Не знайдено сумісного формату передавання даних"
-#: gdk/macos/gdkmacosclipboard.c:338
+#: gdk/macos/gdkmacosclipboard.c:643
#, c-format
msgid "Failed to decode contents with mime-type of '%s'"
msgstr "Не вдалося декодувати дані з типом MIME «%s»"
-#: gdk/wayland/gdkglcontext-wayland.c:191 gdk/win32/gdkglcontext-win32.c:974
-#: gdk/win32/gdkglcontext-win32.c:1015
+#: gdk/wayland/gdkglcontext-wayland.c:191 gdk/win32/gdkglcontext-win32.c:990
+#: gdk/win32/gdkglcontext-win32.c:1031 gdk/x11/gdkglcontext-egl.c:509
+#: gdk/x11/gdkglcontext-glx.c:595 gdk/x11/gdkglcontext-glx.c:645
msgid "Unable to create a GL context"
msgstr "Неможливо створити вміст GL"
-#: gdk/wayland/gdkglcontext-wayland.c:489 gdk/win32/gdkglcontext-win32.c:815
-#: gdk/win32/gdkglcontext-win32.c:825 gdk/win32/gdkglcontext-win32.c:940
+#: gdk/wayland/gdkglcontext-wayland.c:491 gdk/win32/gdkglcontext-win32.c:831
+#: gdk/win32/gdkglcontext-win32.c:841 gdk/win32/gdkglcontext-win32.c:956
+#: gdk/x11/gdkglcontext-egl.c:674 gdk/x11/gdkglcontext-glx.c:801
msgid "No available configurations for the given pixel format"
msgstr "Немає доступних налаштувань для заданого формату точок"
-#: gdk/wayland/gdkglcontext-wayland.c:514 gdk/win32/gdkglcontext-win32.c:1088
+#: gdk/wayland/gdkglcontext-wayland.c:516 gdk/win32/gdkglcontext-win32.c:1100
#: gdk/x11/gdkglcontext-x11.c:94
msgid "No GL implementation is available"
msgstr "Немає жодної реалізації GL"
-#: gdk/wayland/gdkglcontext-wayland.c:522
+#: gdk/wayland/gdkglcontext-wayland.c:524
msgid "Core GL is not available on EGL implementation"
msgstr "«Core GL» недоступний у реалізації EGL"
@@ -690,6 +692,11 @@ msgstr ""
"Не вдалося зберегти буфер обміну. Немає активної програми для керування "
"буфером обміну."
+#: gdk/x11/gdkglcontext-glx.c:829
+#, c-format
+msgid "No available configurations for the given RGBA pixel format"
+msgstr "Немає доступних налаштувань для заданого формату точок RGBA"
+
#: gdk/x11/gdkselectioninputstream-x11.c:462
#, c-format
msgid "Format %s not supported"
@@ -914,7 +921,7 @@ msgstr "Ліцензія Apache, версія 2.0"
msgid "Mozilla Public License 2.0"
msgstr "Громадська ліцензія Mozilla 2.0"
-#: gtk/gtkaboutdialog.c:968
+#: gtk/gtkaboutdialog.c:969
msgid "Website"
msgstr "Сайт"
@@ -923,26 +930,26 @@ msgstr "Сайт"
msgid "About %s"
msgstr "Про %s"
-#: gtk/gtkaboutdialog.c:2114
+#: gtk/gtkaboutdialog.c:2106
msgid "Created by"
msgstr "Створення"
-#: gtk/gtkaboutdialog.c:2117
+#: gtk/gtkaboutdialog.c:2109
msgid "Documented by"
msgstr "Документація"
-#: gtk/gtkaboutdialog.c:2127
+#: gtk/gtkaboutdialog.c:2119
msgid "Translated by"
msgstr "Переклад"
-#: gtk/gtkaboutdialog.c:2132
+#: gtk/gtkaboutdialog.c:2124
msgid "Design by"
msgstr "Дизайн"
#. Translators: this is the license preamble; the string at the end
#. * contains the name of the license as link text.
#.
-#: gtk/gtkaboutdialog.c:2297
+#: gtk/gtkaboutdialog.c:2289
#, c-format
msgid ""
"This program comes with absolutely no warranty.\n"
@@ -956,7 +963,7 @@ msgstr ""
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:829 gtk/gtkshortcutlabel.c:100
+#: gtk/gtkaccelgroup.c:826 gtk/gtkshortcutlabel.c:100
#: gtk/gtkshortcutlabel.c:136
msgctxt "keyboard label"
msgid "Shift"
@@ -967,7 +974,7 @@ msgstr "Shift"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:848 gtk/gtkshortcutlabel.c:103
+#: gtk/gtkaccelgroup.c:845 gtk/gtkshortcutlabel.c:103
#: gtk/gtkshortcutlabel.c:138
msgctxt "keyboard label"
msgid "Ctrl"
@@ -978,7 +985,7 @@ msgstr "Ctrl"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:867 gtk/gtkshortcutlabel.c:106
+#: gtk/gtkaccelgroup.c:864 gtk/gtkshortcutlabel.c:106
#: gtk/gtkshortcutlabel.c:140
msgctxt "keyboard label"
msgid "Alt"
@@ -989,7 +996,7 @@ msgstr "Alt"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:885 gtk/gtkshortcutlabel.c:112
+#: gtk/gtkaccelgroup.c:882 gtk/gtkshortcutlabel.c:112
#: gtk/gtkshortcutlabel.c:142
msgctxt "keyboard label"
msgid "Super"
@@ -1000,7 +1007,7 @@ msgstr "Super"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:899 gtk/gtkshortcutlabel.c:115
+#: gtk/gtkaccelgroup.c:896 gtk/gtkshortcutlabel.c:115
#: gtk/gtkshortcutlabel.c:144
msgctxt "keyboard label"
msgid "Hyper"
@@ -1011,7 +1018,7 @@ msgstr "Hyper"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
-#: gtk/gtkaccelgroup.c:914 gtk/gtkshortcutlabel.c:109
+#: gtk/gtkaccelgroup.c:911 gtk/gtkshortcutlabel.c:109
#: gtk/gtkshortcutlabel.c:146
msgctxt "keyboard label"
msgid "Meta"
@@ -1021,412 +1028,412 @@ msgstr "Meta"
#. * be used in accelerators such as "Ctrl+Shift+KP 1" in menus,
#. * and therefore the translation needs to be very short.
#.
-#: gtk/gtkaccelgroup.c:934
+#: gtk/gtkaccelgroup.c:931
msgctxt "keyboard label"
msgid "KP"
msgstr "ЦБ"
-#: gtk/gtkaccelgroup.c:941
+#: gtk/gtkaccelgroup.c:938
msgctxt "keyboard label"
msgid "Space"
msgstr "Пробіл"
-#: gtk/gtkaccelgroup.c:944 gtk/gtkshortcutlabel.c:171
+#: gtk/gtkaccelgroup.c:941 gtk/gtkshortcutlabel.c:171
msgctxt "keyboard label"
msgid "Backslash"
msgstr "Backslash"
-#: gtk/gtkaccessible.c:561
+#: gtk/gtkaccessible.c:560
msgctxt "accessibility"
msgid "alert"
msgstr "попередження"
-#: gtk/gtkaccessible.c:562
+#: gtk/gtkaccessible.c:561
msgctxt "accessibility"
msgid "alert dialog"
msgstr "вікно попередження"
-#: gtk/gtkaccessible.c:563
+#: gtk/gtkaccessible.c:562
msgctxt "accessibility"
msgid "banner"
msgstr "банер"
-#: gtk/gtkaccessible.c:564
+#: gtk/gtkaccessible.c:563
msgctxt "accessibility"
msgid "button"
msgstr "кнопка"
-#: gtk/gtkaccessible.c:565
+#: gtk/gtkaccessible.c:564
msgctxt "accessibility"
msgid "caption"
msgstr "підпис"
-#: gtk/gtkaccessible.c:566
+#: gtk/gtkaccessible.c:565
msgctxt "accessibility"
msgid "cell"
msgstr "комірка"
-#: gtk/gtkaccessible.c:567
+#: gtk/gtkaccessible.c:566
msgctxt "accessibility"
msgid "checkbox"
msgstr "кнопка варіанта"
-#: gtk/gtkaccessible.c:568
+#: gtk/gtkaccessible.c:567
msgctxt "accessibility"
msgid "column header"
msgstr "заголовок стовпчика"
-#: gtk/gtkaccessible.c:569
+#: gtk/gtkaccessible.c:568
msgctxt "accessibility"
msgid "combo box"
msgstr "поле зі списком"
-#: gtk/gtkaccessible.c:570
+#: gtk/gtkaccessible.c:569
msgctxt "accessibility"
msgid "command"
msgstr "команда"
-#: gtk/gtkaccessible.c:571
+#: gtk/gtkaccessible.c:570
msgctxt "accessibility"
msgid "composite"
msgstr "суміщення"
-#: gtk/gtkaccessible.c:572
+#: gtk/gtkaccessible.c:571
msgctxt "accessibility"
msgid "dialog"
msgstr "діалогове вікно"
-#: gtk/gtkaccessible.c:573
+#: gtk/gtkaccessible.c:572
msgctxt "accessibility"
msgid "document"
msgstr "документ"
-#: gtk/gtkaccessible.c:574
+#: gtk/gtkaccessible.c:573
msgctxt "accessibility"
msgid "feed"
msgstr "стрічка"
-#: gtk/gtkaccessible.c:575
+#: gtk/gtkaccessible.c:574
msgctxt "accessibility"
msgid "form"
msgstr "форм"
-#: gtk/gtkaccessible.c:576
+#: gtk/gtkaccessible.c:575
msgctxt "accessibility"
msgid "generic"
msgstr "загальне"
-#: gtk/gtkaccessible.c:577
+#: gtk/gtkaccessible.c:576
msgctxt "accessibility"
msgid "grid"
msgstr "таблиця"
-#: gtk/gtkaccessible.c:578
+#: gtk/gtkaccessible.c:577
msgctxt "accessibility"
msgid "grid cell"
msgstr "комірка таблиці"
-#: gtk/gtkaccessible.c:579
+#: gtk/gtkaccessible.c:578
msgctxt "accessibility"
msgid "group"
msgstr "група"
-#: gtk/gtkaccessible.c:580
+#: gtk/gtkaccessible.c:579
msgctxt "accessibility"
msgid "heading"
msgstr "заголовок"
-#: gtk/gtkaccessible.c:581
+#: gtk/gtkaccessible.c:580
msgctxt "accessibility"
msgid "image"
msgstr "зображення"
-#: gtk/gtkaccessible.c:582
+#: gtk/gtkaccessible.c:581
msgctxt "accessibility"
msgid "input"
msgstr "введення даних"
-#: gtk/gtkaccessible.c:583
+#: gtk/gtkaccessible.c:582
msgctxt "accessibility"
msgid "label"
msgstr "мітка"
-#: gtk/gtkaccessible.c:584
+#: gtk/gtkaccessible.c:583
msgctxt "accessibility"
msgid "landmark"
msgstr "орієнтир"
-#: gtk/gtkaccessible.c:585
+#: gtk/gtkaccessible.c:584
msgctxt "accessibility"
msgid "legend"
msgstr "умовні позначення"
-#: gtk/gtkaccessible.c:586
+#: gtk/gtkaccessible.c:585
msgctxt "accessibility"
msgid "link"
msgstr "посилання"
-#: gtk/gtkaccessible.c:587
+#: gtk/gtkaccessible.c:586
msgctxt "accessibility"
msgid "list"
msgstr "список"
-#: gtk/gtkaccessible.c:588
+#: gtk/gtkaccessible.c:587
msgctxt "accessibility"
msgid "list box"
msgstr "поле списку"
-#: gtk/gtkaccessible.c:589
+#: gtk/gtkaccessible.c:588
msgctxt "accessibility"
msgid "list item"
msgstr "елемент списку"
-#: gtk/gtkaccessible.c:590
+#: gtk/gtkaccessible.c:589
msgctxt "accessibility"
msgid "log"
msgstr "журнал"
-#: gtk/gtkaccessible.c:591
+#: gtk/gtkaccessible.c:590
msgctxt "accessibility"
msgid "main"
msgstr "основний"
-#: gtk/gtkaccessible.c:592
+#: gtk/gtkaccessible.c:591
msgctxt "accessibility"
msgid "marquee"
msgstr "область"
-#: gtk/gtkaccessible.c:593
+#: gtk/gtkaccessible.c:592
msgctxt "accessibility"
msgid "math"
msgstr "математичний вираз"
-#: gtk/gtkaccessible.c:594
+#: gtk/gtkaccessible.c:593
msgctxt "accessibility"
msgid "meter"
msgstr "вимірювач"
-#: gtk/gtkaccessible.c:595
+#: gtk/gtkaccessible.c:594
msgctxt "accessibility"
msgid "menu"
msgstr "меню"
-#: gtk/gtkaccessible.c:596
+#: gtk/gtkaccessible.c:595
msgctxt "accessibility"
msgid "menu bar"
msgstr "рядок меню"
-#: gtk/gtkaccessible.c:597
+#: gtk/gtkaccessible.c:596
msgctxt "accessibility"
msgid "menu item"
msgstr "елемент меню"
-#: gtk/gtkaccessible.c:598
+#: gtk/gtkaccessible.c:597
msgctxt "accessibility"
msgid "menu item checkbox"
msgstr "пункт позначення у меню"
-#: gtk/gtkaccessible.c:599
+#: gtk/gtkaccessible.c:598
msgctxt "accessibility"
msgid "menu item radio"
msgstr "пункт-перемикач у меню"
-#: gtk/gtkaccessible.c:600
+#: gtk/gtkaccessible.c:599
msgctxt "accessibility"
msgid "navigation"
msgstr "навігація"
-#: gtk/gtkaccessible.c:601
+#: gtk/gtkaccessible.c:600
msgctxt "accessibility"
msgid "none"
msgstr "немає"
-#: gtk/gtkaccessible.c:602
+#: gtk/gtkaccessible.c:601
msgctxt "accessibility"
msgid "note"
msgstr "нотатка"
-#: gtk/gtkaccessible.c:603
+#: gtk/gtkaccessible.c:602
msgctxt "accessibility"
msgid "option"
msgstr "параметр"
-#: gtk/gtkaccessible.c:604
+#: gtk/gtkaccessible.c:603
msgctxt "accessibility"
msgid "presentation"
msgstr "презентація"
-#: gtk/gtkaccessible.c:605
+#: gtk/gtkaccessible.c:604
msgctxt "accessibility"
msgid "progress bar"
msgstr "індикатор поступу"
-#: gtk/gtkaccessible.c:606
+#: gtk/gtkaccessible.c:605
msgctxt "accessibility"
msgid "radio"
msgstr "радіо"
-#: gtk/gtkaccessible.c:607
+#: gtk/gtkaccessible.c:606
msgctxt "accessibility"
msgid "radio group"
msgstr "група пунктів-перемикачів"
-#: gtk/gtkaccessible.c:608
+#: gtk/gtkaccessible.c:607
msgctxt "accessibility"
msgid "range"
msgstr "діапазон"
-#: gtk/gtkaccessible.c:609
+#: gtk/gtkaccessible.c:608
msgctxt "accessibility"
msgid "region"
msgstr "область"
-#: gtk/gtkaccessible.c:610
+#: gtk/gtkaccessible.c:609
msgctxt "accessibility"
msgid "row"
msgstr "рядок"
-#: gtk/gtkaccessible.c:611
+#: gtk/gtkaccessible.c:610
msgctxt "accessibility"
msgid "row group"
msgstr "група рядків"
-#: gtk/gtkaccessible.c:612
+#: gtk/gtkaccessible.c:611
msgctxt "accessibility"
msgid "row header"
msgstr "заголовок рядка"
-#: gtk/gtkaccessible.c:613
+#: gtk/gtkaccessible.c:612
msgctxt "accessibility"
msgid "scroll bar"
msgstr "смуга прокрутки"
-#: gtk/gtkaccessible.c:614
+#: gtk/gtkaccessible.c:613
msgctxt "accessibility"
msgid "search"
msgstr "пошук"
-#: gtk/gtkaccessible.c:615
+#: gtk/gtkaccessible.c:614
msgctxt "accessibility"
msgid "search box"
msgstr "поле пошуку"
-#: gtk/gtkaccessible.c:616
+#: gtk/gtkaccessible.c:615
msgctxt "accessibility"
msgid "section"
msgstr "розділ"
-#: gtk/gtkaccessible.c:617
+#: gtk/gtkaccessible.c:616
msgctxt "accessibility"
msgid "section head"
msgstr "заголовок розділу"
-#: gtk/gtkaccessible.c:618
+#: gtk/gtkaccessible.c:617
msgctxt "accessibility"
msgid "select"
msgstr "вибрати"
-#: gtk/gtkaccessible.c:619
+#: gtk/gtkaccessible.c:618
msgctxt "accessibility"
msgid "separator"
msgstr "роздільник"
-#: gtk/gtkaccessible.c:620
+#: gtk/gtkaccessible.c:619
msgctxt "accessibility"
msgid "slider"
msgstr "повзунок"
-#: gtk/gtkaccessible.c:621
+#: gtk/gtkaccessible.c:620
msgctxt "accessibility"
msgid "spin button"
msgstr "кнопка обертання"
-#: gtk/gtkaccessible.c:622
+#: gtk/gtkaccessible.c:621
msgctxt "accessibility"
msgid "status"
msgstr "стан"
-#: gtk/gtkaccessible.c:623
+#: gtk/gtkaccessible.c:622
msgctxt "accessibility"
msgid "structure"
msgstr "структура"
-#: gtk/gtkaccessible.c:624
+#: gtk/gtkaccessible.c:623
msgctxt "accessibility"
msgid "switch"
msgstr "перемикач"
-#: gtk/gtkaccessible.c:625
+#: gtk/gtkaccessible.c:624
msgctxt "accessibility"
msgid "tab"
msgstr "вкладка"
-#: gtk/gtkaccessible.c:626
+#: gtk/gtkaccessible.c:625
msgctxt "accessibility"
msgid "table"
msgstr "Таблиця"
-#: gtk/gtkaccessible.c:627
+#: gtk/gtkaccessible.c:626
msgctxt "accessibility"
msgid "tab list"
msgstr "список вкладок"
-#: gtk/gtkaccessible.c:628
+#: gtk/gtkaccessible.c:627
msgctxt "accessibility"
msgid "tab panel"
msgstr "панель вкладки"
-#: gtk/gtkaccessible.c:629
+#: gtk/gtkaccessible.c:628
msgctxt "accessibility"
msgid "text box"
msgstr "текстовий блок"
-#: gtk/gtkaccessible.c:630
+#: gtk/gtkaccessible.c:629
msgctxt "accessibility"
msgid "time"
msgstr "час"
-#: gtk/gtkaccessible.c:631
+#: gtk/gtkaccessible.c:630
msgctxt "accessibility"
msgid "timer"
msgstr "таймер"
-#: gtk/gtkaccessible.c:632
+#: gtk/gtkaccessible.c:631
msgctxt "accessibility"
msgid "tool bar"
msgstr "панель інструментів"
-#: gtk/gtkaccessible.c:633
+#: gtk/gtkaccessible.c:632
msgctxt "accessibility"
msgid "tool tip"
msgstr "підказка"
-#: gtk/gtkaccessible.c:634
+#: gtk/gtkaccessible.c:633
msgctxt "accessibility"
msgid "tree"
msgstr "дерево"
-#: gtk/gtkaccessible.c:635
+#: gtk/gtkaccessible.c:634
msgctxt "accessibility"
msgid "tree grid"
msgstr "ієрархічна таблиця"
-#: gtk/gtkaccessible.c:636
+#: gtk/gtkaccessible.c:635
msgctxt "accessibility"
msgid "tree item"
msgstr "об'єкт дерева"
-#: gtk/gtkaccessible.c:637
+#: gtk/gtkaccessible.c:636
msgctxt "accessibility"
msgid "widget"
msgstr "віджет"
-#: gtk/gtkaccessible.c:638
+#: gtk/gtkaccessible.c:637
msgctxt "accessibility"
msgid "window"
msgstr "вікно"
-#: gtk/gtkappchooserbutton.c:314
+#: gtk/gtkappchooserbutton.c:316
msgid "Other application…"
msgstr "Інша програма…"
@@ -1486,7 +1493,7 @@ msgstr "Інші програми"
#. * suspend or screen locking, and the caller hasn't specified
#. * a reason.
#.
-#: gtk/gtkapplication-dbus.c:696
+#: gtk/gtkapplication-dbus.c:706
msgid "Reason not specified"
msgstr "Причину не вказано"
@@ -1609,16 +1616,16 @@ msgctxt "progress bar label"
msgid "%d %%"
msgstr "%d %%"
-#: gtk/gtkcolorbutton.c:172 gtk/gtkcolorbutton.c:279
+#: gtk/gtkcolorbutton.c:181 gtk/gtkcolorbutton.c:310
msgid "Pick a Color"
msgstr "Вибір кольору"
-#: gtk/gtkcolorbutton.c:468 gtk/gtkcolorchooserwidget.c:308
+#: gtk/gtkcolorbutton.c:499 gtk/gtkcolorchooserwidget.c:308
#, c-format
msgid "Red %d%%, Green %d%%, Blue %d%%, Alpha %d%%"
msgstr "Червоний %d%%, Зелений %d%%, Синій %d%%, Альфа %d%%"
-#: gtk/gtkcolorbutton.c:474 gtk/gtkcolorchooserwidget.c:314
+#: gtk/gtkcolorbutton.c:505 gtk/gtkcolorchooserwidget.c:314
#, c-format
msgid "Red %d%%, Green %d%%, Blue %d%%"
msgstr "Червоний %d%%, Зелений %d%%, Синій %d%%"
@@ -1936,7 +1943,7 @@ msgstr "_Праве:"
msgid "Paper Margins"
msgstr "Поля сторінки"
-#: gtk/gtkentry.c:3736
+#: gtk/gtkentry.c:3726
msgid "Insert Emoji"
msgstr "Вставити емодзі"
@@ -2000,31 +2007,31 @@ msgstr "Тека з такою назвою вже існує"
msgid "A file with that name already exists"
msgstr "Файл з такою назвою вже існує"
-#: gtk/gtkfilechoosernative.c:511 gtk/gtkfilechoosernative.c:582
+#: gtk/gtkfilechoosernative.c:509 gtk/gtkfilechoosernative.c:580
#: gtk/gtkfilechooserwidget.c:1209 gtk/gtkfilechooserwidget.c:5767
#: gtk/gtkmessagedialog.c:166 gtk/gtkmessagedialog.c:175
#: gtk/gtkmountoperation.c:610 gtk/gtkpagesetupunixdialog.c:283
-#: gtk/gtkprintbackend.c:643 gtk/gtkprinteroptionwidget.c:713
+#: gtk/gtkprintbackend.c:642 gtk/gtkprinteroptionwidget.c:713
#: gtk/gtkprintunixdialog.c:667 gtk/gtkprintunixdialog.c:823
-#: gtk/gtkwindow.c:6136 gtk/inspector/css-editor.c:248
+#: gtk/gtkwindow.c:6139 gtk/inspector/css-editor.c:248
#: gtk/inspector/recorder.c:1245 gtk/ui/gtkappchooserdialog.ui:45
#: gtk/ui/gtkassistant.ui:52 gtk/ui/gtkcolorchooserdialog.ui:33
#: gtk/ui/gtkfontchooserdialog.ui:24
msgid "_Cancel"
msgstr "_Скасувати"
-#: gtk/gtkfilechoosernative.c:512 gtk/gtkfilechoosernative.c:576
+#: gtk/gtkfilechoosernative.c:510 gtk/gtkfilechoosernative.c:574
#: gtk/gtkplacessidebar.c:3127 gtk/gtkplacessidebar.c:3212
#: gtk/gtkplacesview.c:1658
msgid "_Open"
msgstr "_Відкрити"
-#: gtk/gtkfilechoosernative.c:576 gtk/inspector/css-editor.c:249
+#: gtk/gtkfilechoosernative.c:574 gtk/inspector/css-editor.c:249
#: gtk/inspector/recorder.c:1246
msgid "_Save"
msgstr "З_берегти"
-#: gtk/gtkfilechoosernativequartz.c:338 gtk/ui/gtkfilechooserwidget.ui:345
+#: gtk/gtkfilechoosernativequartz.c:338 gtk/ui/gtkfilechooserwidget.ui:346
msgid "Select which types of files are shown"
msgstr "Виберіть типи файлів, які слід показувати"
@@ -2032,7 +2039,7 @@ msgstr "Виберіть типи файлів, які слід показува
#. * is a hostname. Nautilus and the panel contain the same string
#. * to translate.
#.
-#: gtk/gtkfilechooserutils.c:359
+#: gtk/gtkfilechooserutils.c:361
#, c-format
msgid "%1$s on %2$s"
msgstr "%1$s на %2$s"
@@ -2097,7 +2104,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Якщо вилучити об'єкт, його буде втрачено назавжди."
#: gtk/gtkfilechooserwidget.c:1210 gtk/gtkfilechooserwidget.c:1826
-#: gtk/gtklabel.c:5471 gtk/gtktext.c:6049 gtk/gtktextview.c:8756
+#: gtk/gtklabel.c:5483 gtk/gtktext.c:6059 gtk/gtktextview.c:8758
msgid "_Delete"
msgstr "В_илучити"
@@ -2126,7 +2133,7 @@ msgid "_Add to Bookmarks"
msgstr "_Додати до закладок"
#: gtk/gtkfilechooserwidget.c:1822 gtk/gtkplacessidebar.c:2309
-#: gtk/gtkplacessidebar.c:3248 gtk/ui/gtkfilechooserwidget.ui:464
+#: gtk/gtkplacessidebar.c:3248 gtk/ui/gtkfilechooserwidget.ui:465
msgid "_Rename"
msgstr "Пере_йменувати"
@@ -2156,7 +2163,7 @@ msgstr "Впорядковувати _теки перед файлами"
#. this is the header for the location column in the print dialog
#: gtk/gtkfilechooserwidget.c:2253 gtk/inspector/css-node-tree.ui:135
-#: gtk/ui/gtkfilechooserwidget.ui:185 gtk/ui/gtkprintunixdialog.ui:116
+#: gtk/ui/gtkfilechooserwidget.ui:186 gtk/ui/gtkprintunixdialog.ui:116
msgid "Location"
msgstr "Адреса"
@@ -2165,115 +2172,112 @@ msgstr "Адреса"
msgid "_Name:"
msgstr "_Назва:"
-#: gtk/gtkfilechooserwidget.c:2878 gtk/gtkfilechooserwidget.c:2892
+#: gtk/gtkfilechooserwidget.c:2877 gtk/gtkfilechooserwidget.c:2891
#, c-format
msgid "Searching in %s"
msgstr "Пошук в %s"
-#: gtk/gtkfilechooserwidget.c:2898
+#: gtk/gtkfilechooserwidget.c:2897
msgid "Searching"
msgstr "Пошук"
-#: gtk/gtkfilechooserwidget.c:2904
+#: gtk/gtkfilechooserwidget.c:2903
msgid "Enter location or URL"
msgstr "Увести адресу або URL"
-#: gtk/gtkfilechooserwidget.c:3792 gtk/gtkfilechooserwidget.c:6604
-#: gtk/ui/gtkfilechooserwidget.ui:225
+#: gtk/gtkfilechooserwidget.c:3791 gtk/gtkfilechooserwidget.c:6604
+#: gtk/ui/gtkfilechooserwidget.ui:226
msgid "Modified"
msgstr "Змінено"
-#: gtk/gtkfilechooserwidget.c:4051
+#: gtk/gtkfilechooserwidget.c:4050
#, c-format
msgid "Could not read the contents of %s"
msgstr "Не вдалось прочитати вміст %s"
-#: gtk/gtkfilechooserwidget.c:4055
+#: gtk/gtkfilechooserwidget.c:4054
msgid "Could not read the contents of the folder"
msgstr "Не вдалось прочитати вміст теки"
#. Translators: see g_date_time_format() for details on the format
-#: gtk/gtkfilechooserwidget.c:4195 gtk/gtkfilechooserwidget.c:4238
+#: gtk/gtkfilechooserwidget.c:4194 gtk/gtkfilechooserwidget.c:4237
msgid "%H:%M"
msgstr "%H:%M"
-#: gtk/gtkfilechooserwidget.c:4197 gtk/gtkfilechooserwidget.c:4240
+#: gtk/gtkfilechooserwidget.c:4196 gtk/gtkfilechooserwidget.c:4239
msgid "%l:%M %p"
msgstr "%l:%M %p"
-#: gtk/gtkfilechooserwidget.c:4201
+#: gtk/gtkfilechooserwidget.c:4200
msgid "Yesterday"
msgstr "Учора"
-#: gtk/gtkfilechooserwidget.c:4209
+#: gtk/gtkfilechooserwidget.c:4208
msgid "%-e %b"
msgstr "%-e %b"
-#: gtk/gtkfilechooserwidget.c:4213
+#: gtk/gtkfilechooserwidget.c:4212
msgid "%-e %b %Y"
msgstr "%-e %b %Y"
-#: gtk/gtkfilechooserwidget.c:4302 gtk/gtkfilechooserwidget.c:4310
+#: gtk/gtkfilechooserwidget.c:4301 gtk/gtkfilechooserwidget.c:4309
msgid "Program"
msgstr "Програма"
-#: gtk/gtkfilechooserwidget.c:4303
+#: gtk/gtkfilechooserwidget.c:4302
msgid "Audio"
msgstr "Звук"
-#: gtk/gtkfilechooserwidget.c:4304 gtk/gtkfontbutton.c:560
+#: gtk/gtkfilechooserwidget.c:4303 gtk/gtkfontbutton.c:591
#: gtk/inspector/visual.ui:187
msgid "Font"
msgstr "Шрифт"
-#: gtk/gtkfilechooserwidget.c:4305
+#: gtk/gtkfilechooserwidget.c:4304
msgid "Image"
msgstr "Картинка"
-#: gtk/gtkfilechooserwidget.c:4306
+#: gtk/gtkfilechooserwidget.c:4305
msgid "Archive"
msgstr "Архів"
-#: gtk/gtkfilechooserwidget.c:4307
+#: gtk/gtkfilechooserwidget.c:4306
msgid "Markup"
msgstr "Розмітка"
-#: gtk/gtkfilechooserwidget.c:4308 gtk/gtkfilechooserwidget.c:4309
+#: gtk/gtkfilechooserwidget.c:4307 gtk/gtkfilechooserwidget.c:4308
msgid "Text"
msgstr "Текст"
-#: gtk/gtkfilechooserwidget.c:4311
+#: gtk/gtkfilechooserwidget.c:4310
msgid "Video"
msgstr "Відео"
-#: gtk/gtkfilechooserwidget.c:4312
+#: gtk/gtkfilechooserwidget.c:4311
msgid "Contacts"
msgstr "Контакти"
-#: gtk/gtkfilechooserwidget.c:4313
+#: gtk/gtkfilechooserwidget.c:4312
msgid "Calendar"
msgstr "Календар"
-#: gtk/gtkfilechooserwidget.c:4314
+#: gtk/gtkfilechooserwidget.c:4313
msgid "Document"
msgstr "Документ"
-#: gtk/gtkfilechooserwidget.c:4315
+#: gtk/gtkfilechooserwidget.c:4314
msgid "Presentation"
msgstr "Презентація"
-#: gtk/gtkfilechooserwidget.c:4316
+#: gtk/gtkfilechooserwidget.c:4315
msgid "Spreadsheet"
msgstr "Електронна таблиця"
-#. Translators: We don't know whether this printer is
-#. * available to print to.
-#: gtk/gtkfilechooserwidget.c:4347 gtk/gtkfilechooserwidget.c:4540
-#: modules/printbackends/gtkprintbackendcloudprint.c:729
+#: gtk/gtkfilechooserwidget.c:4346 gtk/gtkfilechooserwidget.c:4539
msgid "Unknown"
msgstr "Невідомо"
-#: gtk/gtkfilechooserwidget.c:4579 gtk/gtkplacessidebar.c:1026
+#: gtk/gtkfilechooserwidget.c:4578 gtk/gtkplacessidebar.c:1026
msgid "Home"
msgstr "Домівка"
@@ -2304,15 +2308,15 @@ msgstr "Не вдалось надіслати запит на пошук"
msgid "Accessed"
msgstr "Дозволено"
-#: gtk/gtkfontbutton.c:393
+#: gtk/gtkfontbutton.c:395
msgid "Sans 12"
msgstr "Sans 12"
-#: gtk/gtkfontbutton.c:486 gtk/gtkfontbutton.c:584
+#: gtk/gtkfontbutton.c:495 gtk/gtkfontbutton.c:615
msgid "Pick a Font"
msgstr "Виберіть шрифт"
-#: gtk/gtkfontbutton.c:1308
+#: gtk/gtkfontbutton.c:1339
msgctxt "font"
msgid "None"
msgstr "Немає"
@@ -2369,27 +2373,27 @@ msgstr "Варіанти символів"
msgid "OpenGL context creation failed"
msgstr "Не вдалося створити контекст OpenGL"
-#: gtk/gtklabel.c:5468 gtk/gtktext.c:6037 gtk/gtktextview.c:8744
+#: gtk/gtklabel.c:5480 gtk/gtktext.c:6047 gtk/gtktextview.c:8746
msgid "Cu_t"
msgstr "Ви_різати"
-#: gtk/gtklabel.c:5469 gtk/gtktext.c:6041 gtk/gtktextview.c:8748
+#: gtk/gtklabel.c:5481 gtk/gtktext.c:6051 gtk/gtktextview.c:8750
msgid "_Copy"
msgstr "_Копіювати"
-#: gtk/gtklabel.c:5470 gtk/gtktext.c:6045 gtk/gtktextview.c:8752
+#: gtk/gtklabel.c:5482 gtk/gtktext.c:6055 gtk/gtktextview.c:8754
msgid "_Paste"
msgstr "Вст_авити"
-#: gtk/gtklabel.c:5476 gtk/gtktext.c:6058 gtk/gtktextview.c:8777
+#: gtk/gtklabel.c:5488 gtk/gtktext.c:6068 gtk/gtktextview.c:8779
msgid "Select _All"
msgstr "Виді_лити все"
-#: gtk/gtklabel.c:5481
+#: gtk/gtklabel.c:5493
msgid "_Open Link"
msgstr "_Відкрити посилання"
-#: gtk/gtklabel.c:5485
+#: gtk/gtklabel.c:5497
msgid "Copy _Link Address"
msgstr "Копіювати _адресу посилання"
@@ -2491,7 +2495,7 @@ msgid "%d:%02d"
msgstr "%d:%02d"
#: gtk/gtkmessagedialog.c:158 gtk/gtkmessagedialog.c:176
-#: gtk/gtkprintbackend.c:644 gtk/gtkwindow.c:6137
+#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6140
msgid "_OK"
msgstr "_Гаразд"
@@ -2631,7 +2635,7 @@ msgstr "Вкладка"
msgid "Page %u"
msgstr "Сторінка %u"
-#: gtk/gtkpagesetup.c:609 gtk/gtkpapersize.c:943 gtk/gtkpapersize.c:983
+#: gtk/gtkpagesetup.c:609 gtk/gtkpapersize.c:942 gtk/gtkpapersize.c:982
msgid "Not a valid page setup file"
msgstr "Некоректний файл налаштування друку"
@@ -2671,19 +2675,21 @@ msgstr ""
msgid "Page Setup"
msgstr "Параметри сторінки"
-#: gtk/gtkpasswordentry.c:166
-msgid "Hide text"
+#: gtk/gtkpasswordentry.c:167
+#| msgid "Hide text"
+msgid "Hide Text"
msgstr "Сховати текст"
-#: gtk/gtkpasswordentry.c:171 gtk/gtkpasswordentry.c:605
-msgid "Show text"
+#: gtk/gtkpasswordentry.c:172 gtk/gtkpasswordentry.c:606
+#| msgid "_Show Text"
+msgid "Show Text"
msgstr "Показати текст"
-#: gtk/gtkpasswordentry.c:198
+#: gtk/gtkpasswordentry.c:199
msgid "Caps Lock is on"
msgstr "Caps Lock увімкнено"
-#: gtk/gtkpasswordentry.c:677
+#: gtk/gtkpasswordentry.c:680
msgid "_Show Text"
msgstr "По_казати текст"
@@ -2787,7 +2793,7 @@ msgstr "Цю назву вже вжито"
#: gtk/gtkplacessidebar.c:2303 gtk/inspector/actions.ui:19
#: gtk/inspector/css-node-tree.ui:35 gtk/inspector/prop-list.ui:23
-#: gtk/ui/gtkfilechooserwidget.ui:167 gtk/ui/gtkfilechooserwidget.ui:439
+#: gtk/ui/gtkfilechooserwidget.ui:168 gtk/ui/gtkfilechooserwidget.ui:440
#: gtk/ui/gtkprintunixdialog.ui:85
msgid "Name"
msgstr "Назва"
@@ -3003,11 +3009,11 @@ msgstr "Від'єднати"
msgid "Unmount"
msgstr "Демонтувати"
-#: gtk/gtkprintbackend.c:642
+#: gtk/gtkprintbackend.c:641
msgid "Authentication"
msgstr "Автентифікація"
-#: gtk/gtkprintbackend.c:718
+#: gtk/gtkprintbackend.c:717
msgid "_Remember password"
msgstr "_Запам'ятати пароль"
@@ -3349,13 +3355,13 @@ msgstr "Результати пошуку"
msgid "Search Shortcuts"
msgstr "Скорочення пошуку"
-#: gtk/gtkshortcutswindow.c:968 gtk/ui/gtkemojichooser.ui:348
-#: gtk/ui/gtkfilechooserwidget.ui:296
+#: gtk/gtkshortcutswindow.c:968 gtk/ui/gtkemojichooser.ui:349
+#: gtk/ui/gtkfilechooserwidget.ui:297
msgid "No Results Found"
msgstr "Безрезультатно"
-#: gtk/gtkshortcutswindow.c:974 gtk/ui/gtkemojichooser.ui:361
-#: gtk/ui/gtkfilechooserwidget.ui:309 gtk/ui/gtkplacesview.ui:230
+#: gtk/gtkshortcutswindow.c:974 gtk/ui/gtkemojichooser.ui:362
+#: gtk/ui/gtkfilechooserwidget.ui:310 gtk/ui/gtkplacesview.ui:230
msgid "Try a different search"
msgstr "Спробуйте пошукати по-інакшому"
@@ -3363,15 +3369,15 @@ msgstr "Спробуйте пошукати по-інакшому"
msgid "Could not show link"
msgstr "Не вдалось показати посилання"
-#: gtk/gtktext.c:6063 gtk/gtktextview.c:8782
+#: gtk/gtktext.c:6073 gtk/gtktextview.c:8784
msgid "Insert _Emoji"
msgstr "Вставити _емодзі"
-#: gtk/gtktextview.c:8764
+#: gtk/gtktextview.c:8766
msgid "_Undo"
msgstr "_Скасувати"
-#: gtk/gtktextview.c:8768
+#: gtk/gtktextview.c:8770
msgid "_Redo"
msgstr "Пов_торити"
@@ -3398,12 +3404,12 @@ msgctxt "volume percentage"
msgid "%d %%"
msgstr "%d %%"
-#: gtk/gtkwindow.c:6124
+#: gtk/gtkwindow.c:6127
#, c-format
msgid "Do you want to use GTK Inspector?"
msgstr "Бажаєте використовувати інспектор GTK?"
-#: gtk/gtkwindow.c:6126
+#: gtk/gtkwindow.c:6129
#, c-format
msgid ""
"GTK Inspector is an interactive debugger that lets you explore and modify "
@@ -3414,7 +3420,7 @@ msgstr ""
"редагувати внутрішні частини будь-які програми GTK. Його використання може "
"спричинити збої в програмі."
-#: gtk/gtkwindow.c:6131
+#: gtk/gtkwindow.c:6134
msgid "Don’t show this message again"
msgstr "Не показувати це повідомлення надалі"
@@ -3670,7 +3676,7 @@ msgid "Address"
msgstr "Адреса"
#: gtk/inspector/misc-info.ui:62 gtk/inspector/prop-list.ui:34
-#: gtk/inspector/statistics.ui:46 gtk/ui/gtkfilechooserwidget.ui:213
+#: gtk/inspector/statistics.ui:46 gtk/ui/gtkfilechooserwidget.ui:214
msgid "Type"
msgstr "Тип"
@@ -3679,7 +3685,6 @@ msgid "Reference Count"
msgstr "Підрахунок посилань"
#: gtk/inspector/misc-info.ui:151
-#| msgid "Text Direction"
msgid "Direction"
msgstr "Напрямок"
@@ -3894,7 +3899,7 @@ msgstr "Шлях"
msgid "Count"
msgstr "Підрахунок"
-#: gtk/inspector/resource-list.ui:82 gtk/ui/gtkfilechooserwidget.ui:201
+#: gtk/inspector/resource-list.ui:82 gtk/ui/gtkfilechooserwidget.ui:202
#: gtk/ui/gtkfontchooserwidget.ui:207 gtk/ui/gtkfontchooserwidget.ui:355
msgid "Size"
msgstr "Розмір"
@@ -6714,69 +6719,69 @@ msgstr "(Немає)"
msgid "Search…"
msgstr "Пошук…"
-#: gtk/ui/gtkemojichooser.ui:69 gtk/ui/gtkemojichooser.ui:238
+#: gtk/ui/gtkemojichooser.ui:69 gtk/ui/gtkemojichooser.ui:239
msgctxt "emoji category"
msgid "Smileys & People"
msgstr "Емоції та люди"
-#: gtk/ui/gtkemojichooser.ui:94 gtk/ui/gtkemojichooser.ui:247
+#: gtk/ui/gtkemojichooser.ui:94 gtk/ui/gtkemojichooser.ui:248
msgctxt "emoji category"
msgid "Body & Clothing"
msgstr "Тіло і одяг"
-#: gtk/ui/gtkemojichooser.ui:119 gtk/ui/gtkemojichooser.ui:256
+#: gtk/ui/gtkemojichooser.ui:119 gtk/ui/gtkemojichooser.ui:257
msgctxt "emoji category"
msgid "Animals & Nature"
msgstr "Тварини і природа"
-#: gtk/ui/gtkemojichooser.ui:133 gtk/ui/gtkemojichooser.ui:265
+#: gtk/ui/gtkemojichooser.ui:133 gtk/ui/gtkemojichooser.ui:266
msgctxt "emoji category"
msgid "Food & Drink"
msgstr "Їжа і напої"
-#: gtk/ui/gtkemojichooser.ui:147 gtk/ui/gtkemojichooser.ui:274
+#: gtk/ui/gtkemojichooser.ui:147 gtk/ui/gtkemojichooser.ui:275
msgctxt "emoji category"
msgid "Travel & Places"
msgstr "Подорожі і місця"
-#: gtk/ui/gtkemojichooser.ui:161 gtk/ui/gtkemojichooser.ui:283
+#: gtk/ui/gtkemojichooser.ui:161 gtk/ui/gtkemojichooser.ui:284
msgctxt "emoji category"
msgid "Activities"
msgstr "Дії"
-#: gtk/ui/gtkemojichooser.ui:175 gtk/ui/gtkemojichooser.ui:292
+#: gtk/ui/gtkemojichooser.ui:175 gtk/ui/gtkemojichooser.ui:293
msgctxt "emoji category"
msgid "Objects"
msgstr "Об'єкти"
-#: gtk/ui/gtkemojichooser.ui:189 gtk/ui/gtkemojichooser.ui:301
+#: gtk/ui/gtkemojichooser.ui:189 gtk/ui/gtkemojichooser.ui:302
msgctxt "emoji category"
msgid "Symbols"
msgstr "Символи"
-#: gtk/ui/gtkemojichooser.ui:203 gtk/ui/gtkemojichooser.ui:310
+#: gtk/ui/gtkemojichooser.ui:203 gtk/ui/gtkemojichooser.ui:311
msgctxt "emoji category"
msgid "Flags"
msgstr "Прапори"
-#: gtk/ui/gtkemojichooser.ui:229
+#: gtk/ui/gtkemojichooser.ui:230
msgctxt "emoji category"
msgid "Recent"
msgstr "Нещодавні"
-#: gtk/ui/gtkfilechooserwidget.ui:63
+#: gtk/ui/gtkfilechooserwidget.ui:64
msgid "Create Folder"
msgstr "Створити теку"
-#: gtk/ui/gtkfilechooserwidget.ui:248
+#: gtk/ui/gtkfilechooserwidget.ui:249
msgid "Remote location — only searching the current folder"
msgstr "Віддалена адреса — пошук можливий лише в поточній теці"
-#: gtk/ui/gtkfilechooserwidget.ui:377
+#: gtk/ui/gtkfilechooserwidget.ui:378
msgid "Folder Name"
msgstr "Назва теки"
-#: gtk/ui/gtkfilechooserwidget.ui:403
+#: gtk/ui/gtkfilechooserwidget.ui:404
msgid "_Create"
msgstr "_Створити"
@@ -7082,30 +7087,6 @@ msgstr "Не є файлом відео"
msgid "Unsupported video codec"
msgstr "Непідтримуваний відеокодек"
-#. Translators: The printer status is online, i.e. it is
-#. * ready to print.
-#: modules/printbackends/gtkprintbackendcloudprint.c:725
-msgid "Online"
-msgstr "У мережі"
-
-#. Translators: The printer is offline.
-#: modules/printbackends/gtkprintbackendcloudprint.c:732
-msgid "Offline"
-msgstr "Поза мережею"
-
-#. We shouldn't get here because the query omits dormant
-#. * printers by default.
-#. Translators: Printer has been offline for a long time.
-#: modules/printbackends/gtkprintbackendcloudprint.c:738
-msgid "Dormant"
-msgstr "Бездіяльний"
-
-#. How many document pages to go onto one side of paper.
-#: modules/printbackends/gtkprintbackendcloudprint.c:920
-#: modules/printbackends/gtkprintbackendfile.c:650
-msgid "Pages per _sheet:"
-msgstr "Сторінок на _аркуш:"
-
#: modules/printbackends/gtkprintbackendcups.c:1151
#: modules/printbackends/gtkprintbackendcups.c:1460
msgid "Username:"
@@ -7638,6 +7619,10 @@ msgstr "PostScript"
msgid "SVG"
msgstr "SVG"
+#: modules/printbackends/gtkprintbackendfile.c:650
+msgid "Pages per _sheet:"
+msgstr "Сторінок на _аркуш:"
+
#: modules/printbackends/gtkprintbackendfile.c:710
msgid "File"
msgstr "Файл"
@@ -7753,32 +7738,32 @@ msgstr "%s:%d: не вдалося обробити значення для вл
msgid "%s:%d: %sproperty %s::%s not found\n"
msgstr "%s:%d: %sвластивість %s::%s не знайдено\n"
-#: tools/gtk-builder-tool-simplify.c:2206
+#: tools/gtk-builder-tool-simplify.c:2207
#, c-format
msgid "Can’t load “%s”: %s\n"
msgstr "Не вдалося завантажити «%s»: %s\n"
-#: tools/gtk-builder-tool-simplify.c:2217
+#: tools/gtk-builder-tool-simplify.c:2218
#, c-format
msgid "Can’t parse “%s”: %s\n"
msgstr "Не вдалося обробити «%s»: %s\n"
-#: tools/gtk-builder-tool-simplify.c:2241
+#: tools/gtk-builder-tool-simplify.c:2242
#, c-format
msgid "Failed to read “%s”: %s\n"
msgstr "Не вдалося прочитати «%s»: %s\n"
-#: tools/gtk-builder-tool-simplify.c:2247
+#: tools/gtk-builder-tool-simplify.c:2248
#, c-format
msgid "Failed to write %s: “%s”\n"
msgstr "Не вдалося записати %s: «%s»\n"
-#: tools/gtk-builder-tool-simplify.c:2287
+#: tools/gtk-builder-tool-simplify.c:2288
#, c-format
msgid "No .ui file specified\n"
msgstr "Не вказано файла .ui\n"
-#: tools/gtk-builder-tool-simplify.c:2293
+#: tools/gtk-builder-tool-simplify.c:2294
#, c-format
msgid "Can only simplify a single .ui file without --replace\n"
msgstr "Без --replace можна спрощувати лише один файл .ui\n"
@@ -7949,8 +7934,17 @@ msgstr ""
"Якщо ви дійсно бажаєте створити тут кеш значків, використовуйте --ignore-"
"theme-index.\n"
-#~ msgid "No available configurations for the given RGBA pixel format"
-#~ msgstr "Немає доступних налаштувань для заданого формату точок RGBA"
+#~ msgid "Show text"
+#~ msgstr "Показати текст"
+
+#~ msgid "Online"
+#~ msgstr "У мережі"
+
+#~ msgid "Offline"
+#~ msgstr "Поза мережею"
+
+#~ msgid "Dormant"
+#~ msgstr "Бездіяльний"
#~ msgid "Select a File"
#~ msgstr "Виберіть файл"
diff --git a/subprojects/pango.wrap b/subprojects/pango.wrap
index a1b16695fb..64317f97fe 100644
--- a/subprojects/pango.wrap
+++ b/subprojects/pango.wrap
@@ -2,5 +2,5 @@
directory=pango
url=https://gitlab.gnome.org/GNOME/pango.git
push-url=ssh://git@gitlab.gnome.org:GNOME/pango.git
-revision=master
+revision=main
depth=1
diff --git a/testsuite/css/parser/cross-fade-crash-4101.css b/testsuite/css/parser/cross-fade-crash-4101.css
new file mode 100644
index 0000000000..79180f9232
--- /dev/null
+++ b/testsuite/css/parser/cross-fade-crash-4101.css
@@ -0,0 +1,3 @@
+a {
+ background: cross-fade(8% -gtk-icontheme("system-run-symbolic"), image());
+}
diff --git a/testsuite/css/parser/cross-fade-crash-4101.errors b/testsuite/css/parser/cross-fade-crash-4101.errors
new file mode 100644
index 0000000000..25d4bec65f
--- /dev/null
+++ b/testsuite/css/parser/cross-fade-crash-4101.errors
@@ -0,0 +1 @@
+cross-fade-crash-4101.css:2:74-75: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/cross-fade-crash-4101.ref.css b/testsuite/css/parser/cross-fade-crash-4101.ref.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/css/parser/cross-fade-crash-4101.ref.css
diff --git a/testsuite/css/parser/meson.build b/testsuite/css/parser/meson.build
index 2d476f018d..e161d48835 100644
--- a/testsuite/css/parser/meson.build
+++ b/testsuite/css/parser/meson.build
@@ -212,6 +212,9 @@ test_data = [
'comment-detection.css',
'comment-detection.ref.css',
'cross-fade-basic.css',
+ 'cross-fade-crash-4101.css',
+ 'cross-fade-crash-4101.errors',
+ 'cross-fade-crash-4101.ref.css',
'css-21-malformed-declarations.css',
'css-21-malformed-declarations.errors',
'css-21-malformed-declarations.ref.css',
diff --git a/testsuite/gsk/compare/scale-textures-negative-ngl.node b/testsuite/gsk/compare/scale-textures-negative-ngl.node
new file mode 100644
index 0000000000..fbf1d8205e
--- /dev/null
+++ b/testsuite/gsk/compare/scale-textures-negative-ngl.node
@@ -0,0 +1,48 @@
+transform {
+ transform: scale(1, 1);
+ child: opacity {
+ opacity: 0.6;
+ child: container {
+ texture {
+ bounds: 0 0 50 50;
+ texture: url("data:,<svg width='50' height='50'><rect x='25' y='25' width='25' height='25' fill='red'/></svg>");
+ }
+ }
+ }
+}
+transform {
+ transform: scale(1, -1);
+ child: opacity {
+ opacity: 0.6;
+ child: container {
+ texture {
+ bounds: 0 0 50 50;
+ texture: url("data:,<svg width='50' height='50'><rect x='25' y='25' width='25' height='25' fill='lime'/></svg>");
+ }
+ }
+ }
+}
+transform {
+ transform: scale(-1, -1);
+ child: opacity {
+ opacity: 0.6;
+ child: container {
+ texture {
+ bounds: 0 0 50 50;
+ texture: url("data:,<svg width='50' height='50'><rect x='25' y='25' width='25' height='25' fill='blue'/></svg>");
+ }
+ }
+ }
+}
+transform {
+ transform: scale(-1, 1);
+ child: opacity {
+ opacity: 0.6;
+ child: container {
+ texture {
+ bounds: 0 0 50 50;
+ texture: url("data:,<svg width='50' height='50'><rect x='25' y='25' width='25' height='25' fill='yellow'/></svg>");
+ }
+ }
+ }
+}
diff --git a/testsuite/gsk/compare/scale-textures-negative-ngl.png b/testsuite/gsk/compare/scale-textures-negative-ngl.png
new file mode 100644
index 0000000000..8624e6c403
--- /dev/null
+++ b/testsuite/gsk/compare/scale-textures-negative-ngl.png
Binary files differ
diff --git a/testsuite/gsk/half-float.c b/testsuite/gsk/half-float.c
new file mode 100644
index 0000000000..35dce9c1c8
--- /dev/null
+++ b/testsuite/gsk/half-float.c
@@ -0,0 +1,72 @@
+#include <gtk/gtk.h>
+
+#include "gsk/ngl/fp16private.h"
+
+static void
+test_constants (void)
+{
+ struct {
+ float f;
+ guint16 h;
+ } tests[] = {
+ { 0.0, FP16_ZERO },
+ { 1.0, FP16_ONE },
+ { -1.0, FP16_MINUS_ONE },
+ };
+
+ for (int i = 0; i < G_N_ELEMENTS (tests); i++)
+ {
+ float f[4];
+ guint16 h[4];
+
+ memset (f, 0, sizeof (f));
+ f[0] = tests[i].f;
+ float_to_half4 (f, h);
+ g_assert_cmpuint (h[0], ==, tests[i].h);
+
+
+ memset (h, 0, sizeof (h));
+ h[0] = tests[i].h;
+ half_to_float4 (h, f);
+ g_assert_cmpfloat (f[0], ==, tests[i].f);
+ }
+}
+
+static void
+test_roundtrip (void)
+{
+ for (int i = 0; i < 100; i++)
+ {
+ float f[4];
+ float f2[4];
+ guint16 h[4];
+
+ do
+ {
+ /* generate a random float thats representable as fp16 */
+ memset (h, 0, sizeof (h));
+ h[0] = g_random_int_range (G_MININT16, G_MAXINT16);
+ half_to_float4 (h, f2);
+ }
+ while (!isnormal (f2[0])); /* skip nans and infs since they don't compare well */
+
+ memset (f, 0, sizeof (f));
+ f[0] = f2[0];
+
+ float_to_half4 (f, h);
+ half_to_float4 (h, f2);
+
+ g_assert_cmpfloat (f[0], ==, f2[0]);
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ (g_test_init) (&argc, &argv, NULL);
+
+ g_test_add_func ("/half-float/constants", test_constants);
+ g_test_add_func ("/half-float/roundtrip", test_roundtrip);
+
+ return g_test_run ();
+}
diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build
index 8a15261ba0..e6901e5ef9 100644
--- a/testsuite/gsk/meson.build
+++ b/testsuite/gsk/meson.build
@@ -69,6 +69,7 @@ compare_render_tests = [
'outset_shadow_rounded_top',
'outset_shadow_simple',
'scaled-cairo',
+ 'scale-textures-negative-ngl',
'scale-up-down',
'shadow-in-opacity',
'texture-url',
@@ -234,7 +235,8 @@ foreach t : tests
endforeach
internal_tests = [
- ['diff']
+ [ 'diff' ],
+ [ 'half-float' ],
]
foreach t : internal_tests
diff --git a/testsuite/gtk/texthistory.c b/testsuite/gtk/texthistory.c
index f9fe45ceb2..c64c803083 100644
--- a/testsuite/gtk/texthistory.c
+++ b/testsuite/gtk/texthistory.c
@@ -578,6 +578,32 @@ test13 (void)
run_test (commands, G_N_ELEMENTS (commands), 3);
}
+static void
+test14 (void)
+{
+ char *fill = g_strnfill (1024, 'x');
+ char *fill_after = g_strnfill (1025, 'x');
+ char *fill_after_2 = g_strdup_printf ("%s word", fill_after);
+ const Command commands[] = {
+ { BEGIN_USER, -1, -1, NULL, NULL, UNSET, UNSET, UNSET },
+ { INSERT, 0, -1, fill, fill, UNSET, UNSET, UNSET },
+ { END_USER, -1, -1, NULL, NULL, SET, UNSET, UNSET },
+ { BEGIN_USER, -1, -1, NULL, NULL, UNSET, UNSET, UNSET },
+ { INSERT, 0, -1, "x", fill_after, UNSET, UNSET, UNSET },
+ { END_USER, -1, -1, NULL, NULL, SET, UNSET, UNSET },
+ { BEGIN_USER, -1, -1, NULL, NULL, UNSET, UNSET, UNSET },
+ { INSERT_SEQ, strlen(fill_after), -1, " word", fill_after_2, UNSET, UNSET, UNSET },
+ { END_USER, -1, -1, NULL, NULL, SET, UNSET, UNSET },
+ { UNDO, -1, -1, NULL, fill_after, SET, SET, UNSET },
+ { UNDO, -1, -1, NULL, fill, SET, SET, UNSET },
+ { UNDO, -1, -1, NULL, "", UNSET, SET, UNSET },
+ };
+
+ run_test (commands, G_N_ELEMENTS (commands), 0);
+
+ g_free (fill);
+}
+
int
main (int argc,
char *argv[])
@@ -597,6 +623,7 @@ main (int argc,
g_test_add_func ("/Gtk/TextHistory/test11", test11);
g_test_add_func ("/Gtk/TextHistory/test12", test12);
g_test_add_func ("/Gtk/TextHistory/test13", test13);
+ g_test_add_func ("/Gtk/TextHistory/test14", test14);
return g_test_run ();
}
diff --git a/testsuite/introspection/meson.build b/testsuite/introspection/meson.build
index 58eea5aca2..6202fb7446 100644
--- a/testsuite/introspection/meson.build
+++ b/testsuite/introspection/meson.build
@@ -3,6 +3,7 @@ test('api',
find_program('api.py', dirs: meson.current_source_dir()),
suite: ['introspection'],
env: [
- 'GI_TYPELIB_PATH=@0@/gtk:/usr/lib64/girepository-1.0'.format(project_build_root),
+ 'GI_TYPELIB_PATH=@0@/gtk:@1@'.format(project_build_root,
+ gi_dep.get_pkgconfig_variable('typelibdir')),
'LD_PRELOAD=@0@/gtk/libgtk-4.so'.format(project_build_root),
])
diff --git a/testsuite/reftests/gtk-reftest.c b/testsuite/reftests/gtk-reftest.c
index efe48e6480..cd153969a8 100644
--- a/testsuite/reftests/gtk-reftest.c
+++ b/testsuite/reftests/gtk-reftest.c
@@ -453,6 +453,37 @@ log_writer (GLogLevelFlags log_level,
return g_log_writer_standard_streams (log_level, fields, n_fields, user_data);
}
+static void
+enforce_default_settings (void)
+{
+ GtkSettings *settings;
+ GObjectClass *klass;
+ GParamSpec **pspecs;
+ guint n_pspecs;
+ int i;
+
+ settings = gtk_settings_get_default ();
+
+ klass = g_type_class_ref (G_OBJECT_TYPE (settings));
+
+ pspecs = g_object_class_list_properties (klass, &n_pspecs);
+ for (i = 0; i < n_pspecs; i++)
+ {
+ GParamSpec *pspec = pspecs[i];
+ const GValue *value;
+
+ if ((pspec->flags & G_PARAM_WRITABLE) == 0)
+ continue;
+
+ value = g_param_spec_get_default_value (pspec);
+ g_object_set_property (G_OBJECT (settings), pspec->name, value);
+ }
+
+ g_free (pspecs);
+
+ g_type_class_unref (klass);
+}
+
int
main (int argc, char **argv)
{
@@ -503,6 +534,8 @@ main (int argc, char **argv)
*/
chdir (basedir);
+ enforce_default_settings ();
+
g_log_set_writer_func (log_writer, NULL, NULL);
result = g_test_run ();